一般的なセクタ読み書き以外のストレージ・デバイス自体に対する様々な制御を行います。
DRESULT disk_ioctl ( BYTE pdrv, /* [IN] 物理ドライブ番号 */ BYTE cmd, /* [IN] 制御コマンド */ void* buff /* [I/O] データ受け渡しバッファ */ );
ストレージ・デバイスの種類によりサポートされるコマンドは異なりますが、FatFsモジュール自体は、次の汎用コマンドのみ使用し、特定のデバイスに依存した制御は行いません。アプリケーション上でこれ以外の制御が必要なときは、必要に応じてユーザ定義コマンドを追加してください。
コマンド | 解説 |
---|---|
CTRL_SYNC | ストレージ・デバイスのデータ書き込み処理を完了させます。ライト・バック・キャッシュなどが存在する場合は、書き込まれていないデータを即時書き込みます。メディア上への書き込みがそれぞれdisk_write関数内で完了する場合は、このコマンドに対してすることはありません。 |
GET_SECTOR_COUNT | buffの指すDWORD型変数にドライブ上の総セクタ数を返します。f_mkfs()内で呼び出され、作成するボリュームのサイズを決定するために使用されます。 |
GET_SECTOR_SIZE | buffの指すWORD型変数にドライブのセクタ・サイズを返します。有効値は512、1024、2048または4096です。セクタ・サイズ固定構成(_MAX_SS ==_MIN_SS)のときはこのコマンドは使われることはなく、常にそのセクタ・サイズで動作しなければなりません。 |
GET_BLOCK_SIZE | buffの指すDWORD型変数にフラッシュ・メモリの消去ブロック・サイズ(セクタ単位)を返します。1から32768の範囲で2の累乗の値でなければなりません。不明な場合またはフラッシュ・メモリ以外のメディアでは1を返します。f_mkfs()内でのみ使用され、ボリュームのデータ領域はこの境界にアライメントされます。 |
CTRL_ERASE_SECTOR | フラッシュ・メモリ上の領域の明示的消去。buffの指すDWORD型配列には消去する領域 {開始セクタ,終了セクタ} を指定して呼び出されます。_USE_ERASEが1のとき、クラスタが解放されるときに呼び出されます。これは、ATAコマンド・セットのTrimコマンドと等価で、この機能をサポートしない場合は何もする必要はありません。また、戻り値はチェックされず、消去が完全に行われなかったとしてもFatFsの動作には影響ありません。 |
リード・オンリー構成で、かつセクタ・サイズ固定構成のときは、この関数は必要とされません。