IOBlockStorageDevice
Универсальная абстракция устройства блочной системы хранения.
Класс IOBlockStorageDevice экспортирует универсальный протокол блочной системы хранения, независимый от протокола физического соединения (например, SCSI, ATA, USB), передавая все запросы к его провайдеру (Транспортный Драйвер). Хотя кусок не делает никакой фактической обработки запросов, это необходимо в среде C++. Транспортный Драйвер может иметь любой тип, пока это наследовалось от IOService. Поскольку Транспортные Драйверы не должны происходить из типа, известного IOBlockStorageDriver, для IOBlockStorageDriver не возможно включать надлежащий заголовочный файл для разрешения прямой связи с Транспортным Драйвером. Таким образом мы достигаем полиморфизма при наличии Транспортного Драйвера, инстанцируют подкласса IOBlockStorageDevice. Типичная реализация для конкретного подкласса IOBlockStorageDevice просто передает все методы к своему провайдеру (Транспортный Драйвер), который реализует протокол - и специфичное для устройства поведение.
Все чистые виртуальные функции должны быть реализованы Транспортным Драйвером, который ответственен за инстанцирование Куска.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.0 и позже.
-
Запустите асинхронную операцию чтения или операцию записи.
Объявление
C++
#ifdef __LP64__ virtual IOReturn doAsyncReadWrite( IOMemoryDescriptor *
buffer
, UInt64block
, UInt64nblks
, IOStorageAttributes *attributes
, IOStorageCompletion *completion
) = 0; #else /* !__LP64__ */ virtual IOReturn doAsyncReadWrite( IOMemoryDescriptor *buffer
, UInt64block
, UInt64nblks
, IOStorageAttributes *attributes
, IOStorageCompletion *completion
); #endif /* !__LP64__ */Параметры
buffer
IOMemoryDescriptor, описывающий буфер передачи данных. Направление данных содержится в IOMemoryDescriptor. Ответственность за выпуск дескриптора лежит на вызывающей стороне.
block
Число стартового блока передачи данных.
nblks
Целое число блоков, которые будут переданы.
attributes
Атрибуты передачи данных. Посмотрите IOStorageAttributes.
completion
Подпрограмма завершения для вызова один раз передача данных завершена.
-
Извлеките носители.
Объявление
C++
virtual IOReturn doEjectMedia(
void
) = 0; -
Отформатируйте носители к указанной мощности байта.
Объявление
C++
virtual IOReturn doFormatMedia( UInt64
byteCapacity
) = 0;Параметры
byteCapacity
Мощность байта, к которой устройство должно быть отформатировано, если это возможно.
Обсуждение
Указанная мощность байта должна быть той, поддерживаемой устройством. Поддерживаемые мощности могут быть получены путем вызова doGetFormatCapacities.
-
Возвратите допустимые мощности байта форматирования.
Объявление
C++
virtual UInt32 doGetFormatCapacities( UInt64 *
capacities
, UInt32capacitiesMaxCount
) const = 0;Параметры
capacities
Указатель для возврата списка мощностей.
capacitiesMaxCount
Если никакой буфер не дан, общее количество полных доступных значений, число полных значений возвратилось в «мощностях», или.
Обсуждение
Эта функция возвращает поддерживаемые мощности байта к устройству.
-
Вынудите блоки данных в буфере аппаратных средств быть сброшенными к носителям.
Объявление
C++
virtual IOReturn doSynchronizeCache(
void
) = 0;Обсуждение
Если носители перезаписываемы, этот метод нужно только вызвать.
-
Удалите неиспользованные блоки данных из носителей.
Объявление
C++
virtual IOReturn doUnmap( IOBlockStorageDeviceExtent *
extents
, UInt32extentsCount
, UInt32 options = 0);Параметры
extents
Список степеней. Посмотрите IOBlockStorageDeviceExtent. Законно для вызываемого перезаписать содержание этого буфера для удовлетворения запроса.
extentsCount
Число степеней.
-
Возвратите дополнительную информационную строку для устройства.
Объявление
C++
virtual char * getAdditionalDeviceInfoString(
void
) = 0;Возвращаемое значение
Указатель на статическую символьную строку.
-
Возвратите строку Названия продукта для устройства.
Объявление
C++
virtual char * getProductString(
void
) = 0;Возвращаемое значение
Указатель на статическую символьную строку.
-
Возвратите строку Версии продукта для устройства.
Объявление
C++
virtual char * getRevisionString(
void
) = 0;Возвращаемое значение
Указатель на статическую символьную строку.
-
Возвратите строку Имени Поставщика для устройства.
Объявление
C++
virtual char * getVendorString(
void
) = 0;Возвращаемое значение
Указатель на статическую символьную строку.
-
Сообщает текущее состояние кэша записи устройства.
Объявление
C++
#ifdef __LP64__ virtual IOReturn getWriteCacheState( bool *
enabled
) = 0; #else /* !__LP64__ */ virtual IOReturn getWriteCacheState( bool *enabled
); #endif /* !__LP64__ */Параметры
enabled
Указатель на возвращенный результат. Истина указывает, что включен кэш записи; Ложь указывает, что отключен кэш записи.
Обсуждение
Сообщает текущее состояние кэша записи устройства. Состояние кэша записи, как гарантируют, не сохранится через перезагрузки и отсоединения.
-
Объявление
C++
virtual bool init( OSDictionary *
properties
);Обсуждение
Эта функция переопределяется так, чтобы IOBlockStorageDevice мог установить свойство, используемое IOBlockStorageDriver для соответствия. Так как конкретный подкласс IOBlockStorageDevice может иметь любой тип класса, свойство используется для соответствия.
Эта функция обычно не переопределяется разработчиками.
-
Сообщите о размере блока для устройства в байтах.
Объявление
C++
virtual IOReturn reportBlockSize( UInt64 *
blockSize
) = 0;Параметры
blockSize
Указатель на возвращенное значение размера блока.
-
Отчет, если носители является выбрасываемым при программном управлении.
Объявление
C++
virtual IOReturn reportEjectability( bool *
isEjectable
) = 0;Параметры
isEjectable
Указатель на возвращенный результат. Истина указывает, что носители являются выбрасываемыми, Ложный указывает, что носители не могут быть извлечены при программном управлении.
Обсуждение
Если носители, как известно, являются съемными, этот метод нужно только вызвать.
-
Сообщите о самом высоком допустимом блоке для устройства.
Объявление
C++
virtual IOReturn reportMaxValidBlock( UInt64 *
maxBlock
) = 0;Параметры
maxBlock
Указатель на возвращенный результат
-
Сообщите о состоянии носителей устройства.
Объявление
C++
virtual IOReturn reportMediaState( bool *
mediaPresent
, bool *changedState = 0) = 0;Параметры
mediaPresent
Указатель на возвращенное состояние носителей. Истина указывает, что носители присутствуют в устройстве; Ложь указывает, что не присутствуют никакие носители.
Обсуждение
Этот метод сообщает, есть ли у нас носители в диске или нет, и изменилось ли состояние от состояния, о котором ранее сообщают.
Если тест для носителей успешен, независимо от присутствия носителей, результат kIOReturnSuccess всегда возвращается. Результат mediaPresent должен использоваться, чтобы определить, присутствуют ли носители или нет. Возврат кроме kIOReturnSuccess указывает, что Транспортный Драйвер был неспособен опросить устройство. В этом ошибочном случае выводы mediaState и changedState будут *не* быть сохраненными.
-
Отчет, являются ли носители съемными или нет.
Объявление
C++
virtual IOReturn reportRemovability( bool *
isRemovable
) = 0;Параметры
isRemovable
Указатель на возвращенный результат. Истина указывает, что носители являются съемными; Ложь указывает, что носители не являются съемными.
Обсуждение
Этот метод сообщает, являются ли носители съемными, но он не обеспечивает, подробная информация относительно программного обеспечения извлекают или блокируют/разблокируют возможность.
-
Отчет, защищены ли носители от записи или нет.
Объявление
C++
virtual IOReturn reportWriteProtection( bool *
isWriteProtected
) = 0;Параметры
isWriteProtected
Указатель на возвращенный результат. Истина указывает, что носители защищены от записи (она не может быть записана); Ложь указывает, что носители не защищены от записи (допустимо записать).
-
Запросите, чтобы устройство ввело состояние ожидания.
Объявление
C++
virtual IOReturn requestIdle(
void
);Обсуждение
Запросите, чтобы устройство ввело состояние ожидания. Устройство выйдет из этого состояния на следующем чтении или запишет запрос, или как это видит необходимый. Один пример для DVD-привода для вращения вниз, когда он вводит такое состояние ожидания и вращение по следующему запросу чтения от системы.
-
Устанавливает состояние кэша записи устройства.
Объявление
C++
#ifdef __LP64__ virtual IOReturn setWriteCacheState( bool
enabled
) = 0; #else /* !__LP64__ */ virtual IOReturn setWriteCacheState( boolenabled
); #endif /* !__LP64__ */Параметры
enabled
Истина для включения кэша записи; Ложь для отключения кэша записи.
Обсуждение
Устанавливает состояние кэша записи устройства. Состояние кэша записи, как гарантируют, не сохранится через перезагрузки и отсоединения.