セクタの読み書き以外のディスク・ドライブ自体に対する様々な制御をします。
DRESULT disk_ioctl ( BYTE Drive, /* 物理ドライブ番号 */ BYTE Command, /* 制御コマンド */ void* Buffer /* データ受け渡しバッファ */ );
物理ドライブの種類によりサポートされるコマンドは異なりますが、FatFsモジュールでは、次の汎用コマンドのみ使用し、特定のハードウェアに依存した制御は行いません。
コマンド | 解説 |
---|---|
CTRL_SYNC | ドライブがデータの書き込み処理を完了するのを待ちます。また、ライト・バック・キャッシュが存在する場合は、書き込まれていないデータを即時書き戻します。リード・オンリー構成では使用されません。 |
GET_SECTOR_SIZE | Bufferの指すWORD変数にドライブのセクタ・サイズを返します。セクタ・サイズが固定(_MAX_SSが512)のときはこのコマンドは使われません。 |
GET_SECTOR_COUNT | Bufferの指すDWORD変数にドライブ上の総セクタ数を返します。f_mkfs関数内で作成するボリュームのサイズを決定するために使用されます。 |
GET_BLOCK_SIZE | フラッシュ・メモリの消去ブロック・サイズをBufferの指すDWORD変数にセクタ単位で返します。1から32768でかつ2の累乗の値でなければなりません。不明な場合またはフラッシュ・メモリ以外のメディアでは1を返します。f_mkfs関数内でのみ使用され、ボリュームのデータ領域はこの境界にアライメントされます。 |
CTRL_ERASE_SECTOR | フラッシュ・メモリの一部の領域を消去します。Bufferの指すDWORD配列には消去する領域 {開始セクタ,終了セクタ} を指定して呼び出します。この機能をサポートしない場合やフラッシュ・メモリ以外のメディアでは何もしません。この機能の戻り値はチェックされず、また、指定領域の消去が完全に行われなかったとしてもファイル・システムの動作には影響ありません。_USE_ERASEが1のとき、クラスタが解放されるときに呼び出されます。 |