disk_write

The disk_write function is called to write data to the sector(s) of storage device.

DRESULT disk_write (
  BYTE drv,         /* [IN] Physical drive number */
  const BYTE* buff, /* [IN] Pointer to the data to be written */
  DWORD sector,     /* [IN] Sector number to write from */
  UINT count        /* [IN] Number of sectors to write */
);

Parameters

pdrv
Physical drive number to identify the target device.
buff
Pointer to the first item of the byte array to be written. The size of data to be written is sector size * count bytes.
sector
Start sector number in 32-bit LBA.
count
Number of sectors to write.

Return Values

RES_OK (0)
The function succeeded.
RES_ERROR
A hard error occured during the write operation and could not recover it.
RES_WRPRT
The medium is write protected.
RES_PARERR
Invalid parameter.
RES_NOTRDY
The device has not been initialized.

Description

The specified memory address is not that always aligned to word boundary because the argument is defined as BYTE*. For more information, refer to the description of disk_read function.

Generally, a multiple sector transfer request must not be split into single sector transactions to the storage device, or the write throughput will be drastically decreased.

FatFs expects delayed write function of the disk control layer. The write operation to the media does not need to be completed at return from this function by what write operation is in progress or data is only stored into the write-back cache. But write data on the buff is invalid after return from this function. The write completion request is done by CTRL_SYNC command of disk_ioctl function. Therefore, if a delayed write function is implemented, the write throughput of the filesystem will be improved.

Remarks: Application program MUST NOT call this function, or FAT structure on the volume can be collapsed.

QuickInfo

This function is not needed when FF_FS_READONLY == 1.

Return