## disk_write

ストレージ・デバイスにデータを書き込みます。

    DRESULT disk_write (
      BYTE pdrv,        /* [IN] 物理ドライブ番号 */
      const BYTE* buff, /* [IN] 書き込むデータへのポインタ */
      DWORD sector,     /* [IN] 書き込み開始セクタ番号 */
      UINT count        /* [IN] 書き込むセクタ数 */
    );

#### 引数

pdrv
  対象のデバイスを示す物理ドライブ番号(0-9)が指定されます。
buff
  ストレージ・デバイスに書き込むセクタ・データが格納されたバイト配列が指定されます。バイト数は、セクタ・サイズ*`count`となります。
sector
  書き込みを開始するセクタ番号。LBAで指定されます。
count
  書き込むセクタ数。FatFsからの呼び出しでは1〜128の範囲に限られます。

#### 戻り値

RES_OK (0)
  正常終了。
RES_ERROR
  書き込み中にエラーが発生し、その回復にも失敗した。
RES_WRPRT
  メディアが書き込み禁止状態。
RES_PARERR
  パラメータが不正。
RES_NOTRDY
  デバイスが動作可能状態ではない（初期化されていない）。

#### 解説

`buff`に指定されるアドレスは常にワード・アライメントされているとは限りません。詳細は、`disk_read()`の解説を参照してください。

一般的に、複数セクタの転送要求は、デバイスに対して可能な限りマルチ・セクタ転送しなければなりません。複数のシングル・セクタ書き込みに分解された場合、スループットが著しく低下することがあります。

FatFsはディスク関数が遅延書き込み機能を持つことも想定しています。この関数から戻るとき、デバイスが書き込み中とかキャッシュに書き込まれただけなど、必ずしもデータの書き込みが完了している必要はありません。ただし、`buff`のデータは、この関数から戻ると無効となります。書き込み完了の要求は、`disk_ioctl()`の`CTRL_SYNC`コマンドによって行われます。このような遅延書き込み機能が実装された場合、スループットをさらに向上させることができます。

アプリケーションからはこの関数を呼び出してはなりません。さもないと、FATボリュームが破壊される可能性があります。

#### 対応情報

リード・オンリー構成(`_FS_READONLY == 1`)ではこの関数は必要とされません。

戻る