## pf_write

The pf_write function writes data to the file.

    FRESULT pf_write (
      const void* Buffer, /* Pointer to the data to be written */
      WORD ByteToWrite,   /* Number of bytes to write */
      WORD* BytesWritten  /* Pointer to the variable to return number of bytes written */
    );

#### Parameters

Buffer
  Pointer to the data to be wtitten. A NULL specifies to finalize the current write operation.
ByteToWrite
  Number of bytes to write.
BytesWritten
  Pointer to the WORD variable to return number of bytes read.

#### Return Values

FR_OK (0)
  The function succeeded.
FR_DISK_ERR
  The function failed due to an error in the disk function, write protected, a wrong FAT structure or an internal error.
FR_NOT_OPENED
  The file has not been opened.
FR_NOT_ENABLED
  The volume has not been mounted.

#### Description

The write function has some restrictions listed below:

- Cannot create file. Only existing file can be written.
- Cannot expand file size.
- Cannot update time stamp of the file.
- Write operation can start/stop on the sector boundary.
- Read-only attribute of the file cannot block write operation.

File write operation must be done in following sequence.

1. `pf_lseek(ofs);` read/write pointer must be moved to sector bundary prior to initiate write operation or it will be rounded-down to the sector boundary.
2. `pf_write(buff, btw, &bw);` Initiate write operation. Write first data to the file.
3. `pf_write(buff, btw, &bw);` Write next data. Any other file function cannot be used while a write operation is in progress.
4. `pf_write(0, 0, &bw);` Finalize the write operation. If read/write pointer is not on the sector boundary, left bytes in the sector will be filled with zero.

The read/write pointer in the file system object increases in number of bytes written. After the function succeeded, `*BytesWritten` should be checked to detect end of file. In case of `*BytesWritten < ByteToWrite`, it means the read/write pointer reached end of file during the write operation. Once a write operation is initiated, it must be finalized or the written data can be lost.

#### QuickInfo

Available when `_USE_WRITE == 1`.

#### References

`pf_open, FATFS`

Return