Библиотека 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 (только чтение) не может заблокировать операцию записи.
Операция записи в файл должна быть выполнена в следующей последовательности.
- pf_lseek(ofs); позиция чтения/записи файла (read/write pointer) должна быть помещена на границу сектора перед инициированием операции записи, или она будет округлена вниз до границы сектора.
- pf_write(buff, btw, &bw); инициация операции записи. Запись первых данных в файл.
- pf_write(buff, btw, &bw); запись последующих данных. Нельзя использовать никакие другие функции, пока идет выполнение операции записи.
- 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
[Ссылки]
1. pf_write - Write File (оригинал статьи на английском языке). |