Библиотека Petit FatFS: pf_write Печать
Добавил(а) microsin   

pf_write

Функция pf_write записывает данные в файл.

FRESULT pf_write (
  const void* Buffer, /* Указатель на данные, которые записываются */
  WORD ByteToWrite,   /* Количество записываемых данных */
  WORD* BytesWritten  /* Указатель на переменную для количества записанных байт */
);

Параметры

Buffer
Указатель на данные, которые будут записаны в файл. Если указать NULL, то это будет командой финализировать текущую операцию записи.
ByteToWrite
Количество байт для записи.
BytesWritten
Указатель на переменную типа WORD, в которой будет возвращено количество реально записанных байт.

Возвращаемые значения

FR_OK (0)
Функция завершилась успешно.
FR_DISK_ERR
Функция завершилась неудачно из-за ошибки в работе диска, из-за включенной защиты от записи, из-за испорченной структуры FAT или из-за внутренней ошибки.
FR_NOT_OPENED
Файл не был открыт.
FR_NOT_ENABLED
Том не был смонтирован.

Описание

Функция записи имеет несколько следующих ограничений:

  • Функция записи не может создать файл. Можно записывать данные только в уже существующий файл.
  • Не может быть увеличен размер файла.
  • Нельзя обновить метку времени (time stamp) файла.
  • Операция записи может начаться или быть остановлена на границе сектора.
  • Атрибут read-only (только чтение) не может заблокировать операцию записи.

Операция записи в файл должна быть выполнена в следующей последовательности.

  1. pf_lseek(ofs); позиция чтения/записи файла (read/write pointer) должна быть  помещена на границу сектора перед инициированием операции записи, или она будет округлена вниз до границы сектора.
  2. pf_write(buff, btw, &bw); инициация операции записи. Запись первых данных в файл.
  3. pf_write(buff, btw, &bw); запись последующих данных. Нельзя использовать никакие другие функции, пока идет выполнение операции записи.
  4. pf_write(0, 0, &bw); финализация операции записи. Если позиция чтения/записи в файле (read/write pointer) не находится на границе сектора, оставшиеся байты до границы сектора будут заполнены нулями.

Позиция чтения/записи файла (read/write pointer) в объекте файловой системы будет увеличена на количество записанных байт. После того, как функция завершится, переменная *BytesWritten должна быть проверена для определения конца файла (end of file, EOF). Если *BytesWritten < ByteToWrite, то позиция чтения/записи при операции записи достигла конца файла. После инициализации операции записи она обязательно должна быть финализирована, иначе записанные данные могут быть потеряны.

Краткая информация (QuickInfo)

Функция доступна, когда _USE_WRITE == 1.

См. также

pf_open, FATFS

[Ссылки]

1pf_write - Write File (оригинал статьи на английском языке).