Библиотека 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 использует только независимые от устройства команды, которые перечислены в таблице ниже. Не используются никакие функции, которые зависят от устройства.
Command | Description |
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 - управление функциями аппаратуры диска (оригинал статьи на английском языке). |