ストレージ デバイスにデータを書き込みます。
DRESULT disk_write ( BYTE pdrv, /* [IN] 物理ドライブ番号 */ const BYTE* buff, /* [IN] 書き込むデータへのポインタ */ DWORD sector, /* [IN] 書き込み開始セクタ番号 */ UINT count /* [IN] 書き込むセクタ数 */ );
buffに指定されるアドレスは常にワード アライメントされているとは限りません。詳細は、disk_read()の解説を参照してください。
一般的に、複数セクタの転送要求は、デバイスに対して可能な限りマルチ セクタ転送しなければなりません。複数のシングル セクタ書き込みに分解された場合、スループットが著しく低下することがあります。
FatFsはディスク関数が遅延書き込み機能を持つことも想定しています。この関数から戻るとき、デバイスが書き込み中とかキャッシュに書き込まれただけなど、必ずしもメディアへの書き込みが完了している必要はありません。ただし、buffのデータは、この関数から戻ると無効となります。書き込み完了の要求は、disk_ioctl()のCTRL_SYNCコマンドによって行われます。このような遅延書き込み機能が実装された場合、スループットをさらに向上させることができます。
アプリケーションからはこの関数を呼び出してはなりません。さもないと、FATボリュームが破壊される可能性があります。
リード オンリー構成(_FS_READONLY == 1)ではこの関数は必要とされません。