IOBlockStorageDriver
Общий базовый класс для универсальных драйверов блочной системы хранения.
Класс IOBlockStorageDriver является общим базовым классом для универсальных драйверов блочной системы хранения. Это соответствует и связывается через интерфейс IOBlockStorageDevice и соединяется с остатком от платформы хранения через протокол IOStorage. Это расширяет протокол IOStorage путем реализации надлежащей открытой и близкой семантики, разблокирования для невыровненных передач, опроса относительно выбрасываемых носителей, блокировки и политик извлечения, создания мультимедийного объекта и разрушения, и сбора статистики и создания отчетов.
Драйверы блочной системы хранения разделяются на две части: универсальный драйвер обрабатывает все универсальные проблемы устройств, независимые от транспортного механизма низшего уровня (например, SCSI, ATA, USB, FireWire). Все операции обращения к ЗУ на универсальном уровне драйвера переводятся в ряд универсальной работы устройства. Эти операции передаются через кусок IOBlockStorageDevice транспортному драйверу, реализующему надлежащий транспортно-зависимый протокол для выполнения этих операций.
Для определения защищать от записи состояния устройства (или носители), например, универсальный драйвер издал бы приказ к Транспортному Водительскому reportWriteProtection методу. Если бы это было устройством SCSI, то его транспортный драйвер дал бы команду Mode Sense для извлечения бита состояния защиты от записи. Транспортный драйвер тогда сообщает об истине или лжи универсальному драйверу.
Универсальный драйвер поэтому не знает о, или связь с, фактические команды и механизмы раньше связывалась с устройством. Ожидается, что универсальный драйвер редко будет, если когда-нибудь, должен быть разделен на подклассы для обработки особенностей устройства; скорее транспортный драйвер должен быть изменен через переопределения.
Универсальный драйвер мог быть разделен на подклассы для создания другого типа универсального устройства. Универсальный драйвер класс IOCDBlockStorageDriver является подклассом IOBlockStorageDriver, добавляя функции CD.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.6 и позже.
-
Реагируйте на новую вставку носителей.
Объявление
C++
virtual IOReturn acceptNewMedia(
void
);Обсуждение
Этот метод регистрирует размер блока носителей и блочное количество, затем вызывает instantiateMediaObject для инстанцирования мультимедийного объекта. Мультимедийный объект тогда присоединяется выше нас и регистрируется.
Этот метод может быть переопределен для управления тем, что происходит, когда вставляются новые носители. Реализация по умолчанию имеет дело с одним объектом IOMedia.
-
Объявление
C++
virtual void addToBytesTransferred( UInt64
bytesTransferred
, UInt64totalTime
, UInt64latentTime
, boolisWrite
);Параметры
bytesTransferred
Число байтов передается в этой работе.
totalTime
Наносекунды потратили выполнение этой работы.
latentTime
Наносекунды задержки во время этой работы.
isWrite
Указывает, была ли эта работа записью, иначе, было чтение.
Обсуждение
Обновите общее количество переданных байтов, общее время передачи и общее время задержки - используемый для статистики.
Реализация этого метода обычно не переопределяется.
-
Объявление
C++
virtual Context * allocateContext();
Возвращаемое значение
Структура контекста.
Обсуждение
Выделите структуру контекста для работы чтения-записи.
-
Объявление
C++
#ifdef __LP64__ virtual void breakUpRequest( UInt64
byteStart
, IOMemoryDescriptor *buffer
, IOStorageAttributes *attributes
, IOStorageCompletion *completion
, Context *context
); #else /* !__LP64__ */ virtual void breakUpRequest( UInt64byteStart
, IOMemoryDescriptor *buffer
, IOStorageCompletioncompletion
, Context *context
); #endif /* !__LP64__ */Параметры
byteStart
Запуск байтового смещения для передачи данных.
buffer
Буфер для передачи данных. Размер буфера подразумевает размер передачи данных.
attributes
Атрибуты передачи данных. Посмотрите IOStorageAttributes. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
completion
Подпрограмма завершения для вызова один раз передача данных завершена. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
context
Дополнительная контекстная информация для передачи данных (например, размер блока).
Обсуждение
breakUpRequest проверки метода, чтобы видеть, превышает ли входящий запрос наши ограничения передачи, и если так, разбивают запрос в меньшие подзапросы.
Этот метод является частью последовательности методов, вызванных для каждого запроса чтения-записи. Первым является prepareRequest, выделяющий и подготавливающий некоторый контекст к передаче; вторым является deblockRequest, выравнивающий передачу на блочных границах носителей; треть является breakUpRequest, разбивающим передачу в многократные подпередачи, когда превышены определенные аппаратные ограничения; четвертый executeRequest, реализующий фактическую передачу от устройства блочной системы хранения.
Реализация этого метода обычно не переопределяется.
-
Проверьте, поступили ли носители недавно или исчезли.
Объявление
C++
virtual IOReturn checkForMedia(
void
);Обсуждение
Этот метод выполняет большую часть работы в опросе относительно носителей, сначала вызывая reportMediaState метод устройства блочной системы хранения. Если reportMediaState сообщает, что никакое изменение в состоянии носителей, возвращается kIOReturnSuccess. Если состояние носителей действительно изменилось, вызов выполняется к mediaStateHasChanged для действия на событие.
-
Ограничьте счет байта для этого IO к пределам устройства.
Объявление
C++
virtual UInt64 constrainByteCount( UInt64
requestedCount
, boolisWrite
);Параметры
requestedCount
Требуемый байт значит следующую операцию чтения или операцию записи.
isWrite
Истина, если работа будет записью; Ложь, если работа будет чтением.
Обсуждение
Эта функция должна быть вызвана до каждой операции чтения или операции записи, так, чтобы драйвер мог ограничить требуемое количество байта, по мере необходимости, встречать текущие пределы устройства. Такие пределы могли быть наложены устройством в зависимости от рабочих режимов, типов среды или транспортного протокола (например, ATA, SCSI).
В настоящее время этот метод не используется.
-
Объявление
C++
virtual IOStorage * copyPhysicalExtent( IOService *
client
, UInt64 *byteStart
, UInt64 *byteCount
);Параметры
client
Клиент, запрашивающий работу.
byteStart
Запуск байтового смещения для работы. Возвращает физическое байтовое смещение, относительно физического объекта хранения, на успехе.
byteCount
Размер работы. Возвращает фактическое число байтов, которые могут быть переданы, относительно физического объекта хранения, на успехе.
Возвращаемое значение
Ссылка на физический объект хранения, который должен быть выпущен вызывающей стороной или нулем на ошибке.
Обсуждение
Преобразуйте указанное байтовое смещение в физическое байтовое смещение относительно физического объекта хранения. Этот вызов должен только быть выполнен в контексте lockPhysicalExtents ().
-
Объявление
C++
#ifdef __LP64__ virtual void deblockRequest( UInt64
byteStart
, IOMemoryDescriptor *buffer
, IOStorageAttributes *attributes
, IOStorageCompletion *completion
, Context *context
); #else /* !__LP64__ */ virtual void deblockRequest( UInt64byteStart
, IOMemoryDescriptor *buffer
, IOStorageCompletioncompletion
, Context *context
); #endif /* !__LP64__ */Параметры
byteStart
Запуск байтового смещения для передачи данных.
buffer
Буфер для передачи данных. Размер буфера подразумевает размер передачи данных.
attributes
Атрибуты передачи данных. Посмотрите IOStorageAttributes. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
completion
Подпрограмма завершения для вызова один раз передача данных завершена. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
context
Дополнительная контекстная информация для передачи данных (например, размер блока).
Обсуждение
deblockRequest проверки метода, чтобы видеть, разблокирует ли отдых входящего запроса на блочных границах носителей, и в противном случае его. Разблокирование включает закругление запроса к самым близким блочным границам и передаче избыточных байтов в буфер царапины.
Этот метод является частью последовательности методов, вызванных для каждого запроса чтения-записи. Первым является prepareRequest, выделяющий и подготавливающий некоторый контекст к передаче; вторым является deblockRequest, выравнивающий передачу на блочных границах носителей; треть является breakUpRequest, разбивающим передачу в многократные подпередачи, когда превышены определенные аппаратные ограничения; четвертый executeRequest, реализующий фактическую передачу от устройства блочной системы хранения.
Реализация этого метода обычно не переопределяется.
-
Спишите ушедшую существующую часть носителей.
Объявление
C++
virtual IOReturn decommissionMedia( bool
forcible
);Параметры
forcible
Истина для принуждения упущения относительно мультимедийного объекта, даже если оконечные отчеты, что был активный клиент.
Обсуждение
Этот метод обертывает вызов, чтобы завершить, разобрать штабель и объект IOMedia для носителей. Если «насильственный» истина, о мультимедийном объекте забудут, и initMediaState вызовут. Насильственное списывает, произошел бы, когда неисправимая ошибка происходит во время разрушения (например, возможно клиент все еще открыт), но мы должны все еще забыть о носителях.
-
Объявление
C++
virtual void deleteContext( Context *
context
);Параметры
context
Структура контекста, которая будет удалена.
Обсуждение
Удалите структуру контекста из работы чтения-записи.
-
Объявление
C++
virtual IOReturn ejectMedia();
Возвращаемое значение
Код IOReturn.
Обсуждение
Извлеките носители от устройства. Драйвер ответственен за разъединение мультимедийного объекта, который это создало перед продолжением извлечения. Если разрушение перестало работать, ошибка должна быть возвращена.
-
Объявление
C++
#ifdef __LP64__ virtual void executeRequest( UInt64
byteStart
, IOMemoryDescriptor *buffer
, IOStorageAttributes *attributes
, IOStorageCompletion *completion
, Context *context
); #else /* !__LP64__ */ virtual void executeRequest( UInt64byteStart
, IOMemoryDescriptor *buffer
, IOStorageCompletioncompletion
, Context *context
); #endif /* !__LP64__ */Параметры
byteStart
Запуск байтового смещения для передачи данных.
buffer
Буфер для передачи данных. Размер буфера подразумевает размер передачи данных.
attributes
Атрибуты передачи данных. Посмотрите IOStorageAttributes. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
completion
Подпрограмма завершения для вызова один раз передача данных завершена. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
context
Дополнительная контекстная информация для передачи данных (например, размер блока).
Обсуждение
Выполните асинхронный запрос на хранение. Запрос, как гарантируют, будет выровнен блоком.
Этот метод является частью последовательности методов, вызванных для каждого запроса чтения-записи. Первым является prepareRequest, выделяющий и подготавливающий некоторый контекст к передаче; вторым является deblockRequest, выравнивающий передачу на блочных границах носителей; треть является breakUpRequest, разбивающим передачу в многократные подпередачи, когда превышены определенные аппаратные ограничения; четвертый executeRequest, реализующий фактическую передачу от устройства блочной системы хранения.
-
Объявление
C++
virtual IOReturn formatMedia( UInt64
byteCapacity
);Параметры
byteCapacity
Число байтов для форматирования носителей к.
Возвращаемое значение
Код IOReturn.
Обсуждение
Отформатируйте носители с указанной мощностью байта. Драйвер ответственен за разъединение мультимедийного объекта и воссоздание его.
-
Возвратите желаемое имя устройства.
Объявление
C++
virtual const char * getDeviceTypeName(
void
);Обсуждение
Этот метод возвращает строку, используемую для сравнения kIOBlockStorageDeviceTypeKey нашего провайдера. Этот метод вызывают от зонда.
Реализация по умолчанию этого метода возвращает kIOBlockStorageDeviceTypeGeneric.
-
Объявление
C++
virtual UInt32 getFormatCapacities( UInt64 *
capacities
, UInt32capacitiesMaxCount
) const;Параметры
capacities
Буфер, который получит полные значения UInt64.
capacitiesMaxCount
Максимальное количество полных значений, которые могут быть сохранены в буфере.
Возвращаемое значение
Фактическое число полных значений, скопированных в буфер, или если никакой буфер не дан, общее количество полных доступных значений.
Обсуждение
Попросите, чтобы драйвер сообщил о выполнимых мощностях форматирования к вставленным носителям (в байтах). Если вещественное число мощностей переполнит буфера, эта подпрограмма заполняет буфер вызывающей стороны до максимального количества, указанного. Возвращаемое значение указывает фактическое число мощностей, скопированных в буфер.
Если полный буфер не предоставляется или если максимальное количество является нулем, подпрограмма возвращает предложенное количество мощностей вместо этого.
-
Объявление
C++
virtual UInt64 getMediaBlockSize() const;
Возвращаемое значение
Естественный размер блока, в байтах.
Обсуждение
Спросите драйвер о естественном размере блока носителей.
-
Объявление
C++
virtual IOMediaState getMediaState() const;
Возвращаемое значение
Значение IOMediaState.
Обсуждение
Спросите драйвер о текущем состоянии носителей.
-
Объявление
C++
virtual UInt64 getStatistic( Statistics
statistic
) const;Параметры
statistic
Статистический индекс (IOBlockStorageDriver:: индекс Статистики).
Возвращаемое значение
Статистическое значение.
Обсуждение
Попросите, чтобы драйвер сообщил об одной из своих операционных статистик.
-
Объявление
C++
virtual UInt32 getStatistics( UInt64 *
statistics
, UInt32statisticsMaxCount
) const;Параметры
statistics
Буфер, который получит статистические значения UInt64.
statisticsMaxCount
Максимальное количество статистических значений, которые могут быть сохранены в буфере.
Возвращаемое значение
Фактическое число статистических значений, скопированных в буфер, или если никакой буфер не дан, общее количество статистических доступных значений.
Обсуждение
Попросите, чтобы драйвер сообщил о своей операционной статистике.
Статистические данные каждый индексируются IOBlockStorageDriver:: индексы Статистики. Если вещественное число статистики переполнит буфера, эта подпрограмма заполняет буфер вызывающей стороны до максимального количества, указанного. Возвращаемое значение указывает фактическое число статистики, скопированной в буфер.
Если буфер статистики не предоставляется или если максимальное количество является нулем, подпрограмма возвращает предложенное количество статистики вместо этого.
-
Объявление
C++
virtual void handleClose( IOService *
client
, IOOptionBitsoptions
);Параметры
client
Клиент, запрашивающий завершение.
options
Опции для завершения. Обнулить.
Обсуждение
handleClose метод закрывает доступ клиента к этому объекту.
Эта реализация заменяет определение IOService handleIsOpen ().
-
Объявление
C++
virtual bool handleIsOpen( const IOService *
client
) const;Параметры
client
Клиент для проверки открытого состояния. Обнуленный для проверки открытого состояния всех клиентов.
Возвращаемое значение
Возвращает true, если клиент был (или клиенты были), открытый, ложный иначе.
Обсуждение
handleIsOpen метод определяет, есть ли у указанного клиента или какого-либо клиента, если ни один не указан, в настоящее время открытое на этом объекте.
Эта реализация заменяет определение IOService handleIsOpen ().
-
Объявление
C++
virtual bool handleOpen( IOService *
client
, IOOptionBitsoptions
, void *access
);Параметры
client
Клиент, запрашивающий открытое.
options
Опции для открытого. Обнулить.
access
Уровень доступа для открытого. Набор к kIOStorageAccessReader или kIOStorageAccessReaderWriter.
Возвращаемое значение
Если открытое было успешным, ложным иначе, возвращает true.
Обсуждение
handleOpen метод предоставляет или отклоняет разрешение получить доступ к этому объекту заинтересованному клиенту. Параметром является значение IOStorageAccess, указывающее уровень желаемого доступа - читатель или читатель-писатель.
Этот метод может быть вызван, чтобы обновить или понизить уровень доступа для существующего клиента также. Предыдущий уровень доступа будет преобладать для обновлений тот сбой, конечно. Снижение никогда не должно перестать работать. Если новый уровень доступа должен совпасть со старым для данного клиента, этот метод ничего не сделает и возвратит успех. Во всех случаях, один, исключительное завершение на клиент ожидается для всех, открывается на клиент полученный.
Эта реализация заменяет определение IOService handleIsOpen ().
-
Объявление
C++
virtual bool handleStart( IOService *
provider
);Параметры
provider
Провайдер этого объекта.
Возвращаемое значение
Возвращает true на успехе, ложь иначе.
Обсуждение
Подготовьте драйвер блочной системы хранения к работе.
Это - то, где мультимедийный объект должен быть создан для фиксированных носителей, и дополнительно для съемных носителей.
Обратите внимание на то, что этот метод вызывают из запуска () подпрограммой; если этот метод возвращается успешно, он должен быть подготовлен принять любой APIs IOBlockStorageDriver.
-
Объявление
C++
virtual void incrementErrors( bool
isWrite
);Параметры
isWrite
Указывает, была ли эта работа записью, иначе, было чтение.
Обсуждение
Обновите количество полной погрешности - используемый для статистики.
Реализация этого метода обычно не переопределяется.
-
Объявление
C++
virtual void incrementRetries( bool
isWrite
);Параметры
isWrite
Указывает, была ли эта работа записью, иначе, было чтение.
Обсуждение
Обновите общее число повторных попыток - используемый для статистики.
Реализация этого метода обычно не переопределяется.
-
Инициализируйте связанные с носителями переменные экземпляра.
Объявление
C++
virtual void initMediaState(
void
);Обсуждение
Вызванный, когда носители не присутствует, этот метод отмечает состояние устройства, поскольку не наличие носителей представляет, не вращаемый и с разрешением записи.
-
Создайте объект IOMedia для носителей.
Объявление
C++
virtual IOMedia * instantiateDesiredMediaObject(
void
);Обсуждение
Этот метод создает точный тип желаемого объекта IOMedia. Это вызывает instantiateMediaObject. Подкласс может переопределить этот короткий метод для изменения типа мультимедийного объекта, который фактически инстанцируют.
-
Создайте объект IOMedia для носителей.
Объявление
C++
virtual IOMedia * instantiateMediaObject( UInt64
base
, UInt64byteSize
, UInt32blockSize
, char *mediaName
);Параметры
base
Число байта начала активной области данных носителей. Обычно нуль.
byteSize
Размер области данных носителей, в байтах.
blockSize
Размер блока носителей, в байтах.
mediaName
Имя объекта IOMedia.
Возвращаемое значение
Указатель на создаваемый объект IOMedia или нуль на ошибке.
Обсуждение
Этот метод создает объект IOMedia из предоставленных параметров. Это - удобный метод обернуть небольшое количество шагов для выполнения работы.
-
Объявление
C++
virtual bool isMediaEjectable() const;
Возвращаемое значение
Если носители являются выбрасываемыми, ложными иначе, возвращает true.
Обсуждение
Спросите драйвер, являются ли носители выбрасываемыми.
-
Объявление
C++
virtual bool isMediaRemovable() const;
Возвращаемое значение
Если носители являются выбрасываемыми, ложными иначе, возвращает true.
Обсуждение
Спросите драйвер, являются ли носители выбрасываемыми.
-
Объявление
C++
virtual bool isMediaWritable() const;
Возвращаемое значение
Если носители являются перезаписываемыми, ложными иначе, возвращает true.
Обсуждение
Спросите драйвер, перезаписываемы ли носители.
-
Объявление
C++
virtual bool lockPhysicalExtents( IOService *
client
);Параметры
client
Клиент, запрашивающий работу.
Возвращаемое значение
Если блокировка была успешной, ложной иначе, возвращает true.
Обсуждение
Заблокируйте содержание объекта хранения против перемещения временно, в целях получения физических степеней.
-
Реагируйте на новую вставку носителей или удаление носителей.
Объявление
C++
virtual IOReturn mediaStateHasChanged( IOMediaState
state
);Обсуждение
Этот метод вызывают на изменении состояния носителей, т.е. поступлении или удалении. Если носители только что стали доступными, вызовы выполняются к recordMediaParameters и acceptNewMedia. Если носители только что ушли, вызов выполняется к decommissionMedia с насильственным набором параметра к истине. Насильственное разрушение необходимо для осуществления исчезновения носителей, независимо от заинтересованных клиентов.
-
Объявление
C++
virtual void prepareRequest( UInt64
byteStart
, IOMemoryDescriptor *buffer
, IOStorageAttributes *attributes
, IOStorageCompletion *completion
);Параметры
byteStart
Запуск байтового смещения для передачи данных.
buffer
Буфер для передачи данных. Размер буфера подразумевает размер передачи данных.
attributes
Атрибуты передачи данных. Посмотрите IOStorageAttributes. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
completion
Подпрограмма завершения для вызова один раз передача данных завершена. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
Обсуждение
prepareRequest метод выделяет и подготавливает состояние к передаче.
Этот метод является частью последовательности методов, вызванных для каждого запроса чтения-записи. Первым является prepareRequest, выделяющий и подготавливающий некоторый контекст к передаче; вторым является deblockRequest, выравнивающий передачу на блочных границах носителей; треть является breakUpRequest, разбивающим передачу в многократные подпередачи, когда превышены определенные аппаратные ограничения; четвертый executeRequest, реализующий фактическую передачу от устройства блочной системы хранения.
Реализация этого метода обычно не переопределяется.
-
Объявление
C++
virtual void read( IOService *
client
, UInt64byteStart
, IOMemoryDescriptor *buffer
, IOStorageAttributes *attributes
, IOStorageCompletion *completion
);Параметры
client
Клиент, запрашивающий чтение.
byteStart
Запуск байтового смещения для передачи данных.
buffer
Буфер для передачи данных. Размер буфера подразумевает размер передачи данных.
attributes
Атрибуты передачи данных. Посмотрите IOStorageAttributes. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
completion
Подпрограмма завершения для вызова один раз передача данных завершена. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
Обсуждение
Метод чтения является принимающим концом для всех запросов чтения от платформы хранения (через мультимедийный объект, создаваемый этим драйвером).
Этот метод инициирует последовательность методов (этапы) для каждого запроса чтения-записи. Первым является prepareRequest, выделяющий и подготавливающий некоторый контекст к передаче; вторым является deblockRequest, выравнивающий передачу на блочных границах носителей; треть является breakUpRequest, разбивающим передачу в многократные подпередачи, когда превышены определенные аппаратные ограничения; четвертый executeRequest, реализующий фактическую передачу от устройства блочной системы хранения.
Реализация этого метода обычно не переопределяется.
-
Получите связанные с носителями параметры на вставке носителей.
Объявление
C++
virtual IOReturn recordMediaParameters(
void
);Обсуждение
Этот метод получает связанные с носителями параметры через вызовы к Транспортному Водительскому reportBlockSize, reportMaxValidBlock, и reportWriteProtection методы.
-
Отклоните новые носители.
Объявление
C++
virtual void rejectMedia(
void
);Обсуждение
Этот метод вызовут, если validateNewMedia возвратит False (таким образом отклоняющий новые носители. Когда носители отклоняются, поставщик может принять решение переопределить этот метод для управления поведением.
Реализация по умолчанию просто вызывает ejectMedia.
-
Запросите, чтобы устройство ввело состояние ожидания.
Объявление
C++
virtual IOReturn requestIdle(
void
);Обсуждение
Запросите, чтобы устройство ввело состояние ожидания. Устройство выйдет из этого состояния на следующем чтении или запишет запрос, или как это видит необходимый. Один пример для DVD-привода для вращения вниз, когда он вводит такое состояние ожидания и вращение по следующему запросу чтения от системы.
-
Объявление
C++
virtual IOReturn synchronizeCache( IOService *
client
);Параметры
client
Клиент, запрашивающий синхронизацию кэша.
Возвращаемое значение
Возвращает состояние синхронизации кэша.
Обсуждение
Сбросьте кэшированные данные в объекте хранения, если таковые имеются, синхронно.
-
Объявление
C++
virtual void unlockPhysicalExtents( IOService *
client
);Параметры
client
Клиент, запрашивающий работу.
Обсуждение
Разблокируйте содержание объекта хранения для перемещения снова. Этот вызов должен сбалансировать успешный вызов к lockPhysicalExtents ().
-
Объявление
C++
virtual IOReturn unmap( IOService *
client
, IOStorageExtent *extents
, UInt32extentsCount
, UInt32 options = 0);Параметры
client
Клиент, запрашивающий работу.
extents
Список степеней. Посмотрите IOStorageExtent. Законно для вызываемого перезаписать содержание этого буфера для удовлетворения запроса.
extentsCount
Число степеней.
Возвращаемое значение
Возвращает состояние работы.
Обсуждение
Удалите неиспользованные данные из объекта хранения при указанных байтовых смещениях, синхронно.
-
Проверьте, что новые носители приемлемы.
Объявление
C++
virtual bool validateNewMedia(
void
);Обсуждение
Этот метод вызовут каждый раз, когда обнаруживаются новые носители. Возвратите true, чтобы принять, что носители или ложь отклоняют его (и вызывают rejectMedia). Поставщики могли бы переопределить этот метод для обработки защиты паролем для новых носителей.
Реализация по умолчанию всегда возвращается Правда, указание, что приняты носители.
-
Объявление
C++
virtual void write( IOService *
client
, UInt64byteStart
, IOMemoryDescriptor *buffer
, IOStorageAttributes *attributes
, IOStorageCompletion *completion
);Параметры
client
Клиент, запрашивающий запись.
byteStart
Запуск байтового смещения для передачи данных.
buffer
Буфер для передачи данных. Размер буфера подразумевает размер передачи данных.
attributes
Атрибуты передачи данных. Посмотрите IOStorageAttributes. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
completion
Подпрограмма завершения для вызова один раз передача данных завершена. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.
Обсуждение
Метод записи является принимающим концом для всех запросов записи от платформы хранения (через мультимедийный объект, создаваемый этим драйвером).
Этот метод инициирует последовательность методов (этапы) для каждого запроса чтения-записи. Первым является prepareRequest, выделяющий и подготавливающий некоторый контекст к передаче; вторым является deblockRequest, выравнивающий передачу на блочных границах носителей; треть является breakUpRequest, разбивающим передачу в многократные подпередачи, когда превышены определенные аппаратные ограничения; четвертый executeRequest, реализующий фактическую передачу от устройства блочной системы хранения.
Реализация этого метода обычно не переопределяется.
-
Истина, если носители защищен от записи; Ложь, если нет.
Объявление
C++
bool _writeProtected;
-
Истина, если носители является съемным; Ложь, если это фиксируется (не съемный).
Объявление
C++
bool _removable;
-
Тип носителей (может использоваться для дифференциации между различными типами носителей CD, носителей DVD, и т.д.).
Объявление
C++
UInt32 _mediaType;
-
Указатель на мультимедийный объект мы инстанцировали (если таковые имеются).
Объявление
C++
IOMedia * _mediaObject;
-
Размер блока носителей, в байтах.
Объявление
C++
UInt64 _mediaBlockSize;
-
Максимальная передача байта допускала операции записи.
Объявление
C++
UInt64 _maxWriteByteTransfer;
-
Максимальная передача байта допускала операции чтения.
Объявление
C++
UInt64 _maxReadByteTransfer;
-
Максимальный допустимый номер блока для носителей, основанных на нуле.
Объявление
C++
UInt64 _maxBlockNumber;
-
Истина, если носители является выбрасываемым при программном управлении.
Объявление
C++
bool _ejectable;