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

disk_ioctl

Функция disk_ioctl управляет специальными функциями диска и его различными особенностями, не относящимися к чтению/записи диска.

DRESULT disk_ioctl (
  BYTE Drive,      /* Номер привода */
  BYTE Command,    /* Код команды управления */
  void* Buffer     /* Параметр и буфер данных */
);

Параметры

Drive
Указывает номер привода (0-9).
Command
Указывает код команды.
Buffer
Указатель на буфер, в котором может содержаться параметр или данные - в зависимости от кода команды. Когда не используется, то указатель Buffer равен NULL.

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

RES_OK (0)
Функция завершилась успешно.
RES_ERROR
Произошла какая-то ошибка.
RES_PARERR
Недопустимый код команды.
RES_NOTRDY
Привод диска не был инициализирован.

Описание

Модуль FatFs использует только независимые от устройства команды, которые перечислены в таблице ниже. Не используются никакие функции, которые зависят от устройства.

CommandDescription
CTRL_SYNC Обеспечивает завершение приводом диска операций, ожидающих завершения процесса записи. Когда модуль disk I/O имеетт write back cache, то кеш сектора немедленно сбрасывается на диск. Эта команда не используется в конфигурации только чтение (read-only).
GET_SECTOR_SIZE Возвращает размер сектора привода в переменной типа WORD, на которую указвает Buffer. Эта команда не используется в конфигурации с фиксированным размером сектора, _MAX_SS равно 512.
GET_SECTOR_COUNT Возвращает количество доступных секторов на приводе в переменной типа DWORD, на которую указывает Buffer. Эта команда используется только функцией f_mkfs для определения размера создаваемого тома.
GET_BLOCK_SIZE Возвращает размер блока для очистки (erase block size) в единицах секторов в переменной типа DWORD, на которую указывает Buffer. Допустимые значения от 1 до 32768, число должно быть равно степени числа 2. Возвращаемое значение 1 означает, что размер блока для очистки (erase block size) неизвестен, либо это не flash, а дисковое устройство. Эта команда используется только функцией f_mkfs, чтобы она сделала попутку выровнять область данных на границу очищаемого блока.
CTRL_ERASE_SECTOR Очищает (erase) часть памяти flash, заданную массивом DWORD array {, }, на который указывает Buffer. Когда эта возможность не поддерживается, или это не физический носитель flash memory, то эта команда не дает никого эффекта. Библиотека FatFs не делает проверку кода возврата, и на файловые функции не оказывает никакого влияния тот факт, что секторы не были почему-то успешно очищены. Эта команда вызывается при удалении кластерной цепочки, когда задана опция _USE_ERASE, равная 1.

[Ссылки]

1. disk_ioctl - управление функциями аппаратуры диска (оригинал статьи на английском языке).