disk_write

The disk_write writes data to the storage device.

DRESULT disk_write (
  BYTE drv,         /* [IN] Physical drive number */
  const BYTE* buff, /* [IN] Write data (may be non aligned) */
  DWORD sector,     /* [IN] Sector number to write */
  UINT count        /* [IN] Number of sectors to write */
);

Parameters

pdrv
Specifies the physical drive number.
buff
Pointer to the byte array to be written. The size of data to be written is sector size * count bytes.
sector
Specifies the start sector number in logical block address (LBA).
count
Specifies the number of sectors to write. FatFs specifis 1 to 128.

Return Values

RES_OK (0)
The function succeeded.
RES_ERROR
Any 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 disk drive has not been initialized.

Description

The specified memory address is not that always aligned to word boundary because the type of pointer is defined as BYTE. For more information, refer 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 you will never get good write throughput.

FatFs expects delayed write feature of the disk functions. The write operation to the media need not to be completed due to write operation is in progress or stored it into the cache buffer when return from this function. But 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 delayed write feature is implemented, the write throughput may be improved.

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

QuickInfo

This function is not needed when _FS_READONLY == 1.

Return