Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка класса IOBlockStorageDriver

Опции
Развертывание Target:

На этой странице
Язык:

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( UInt64bytesTransferred, 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( UInt64 byteStart, IOMemoryDescriptor *buffer, IOStorageCompletion completion, 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( UInt64requestedCount, 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( UInt64 byteStart, IOMemoryDescriptor *buffer, IOStorageCompletion completion, Context *context); #endif /* !__LP64__ */

    Параметры

    byteStart

    Запуск байтового смещения для передачи данных.

    buffer

    Буфер для передачи данных. Размер буфера подразумевает размер передачи данных.

    attributes

    Атрибуты передачи данных. Посмотрите IOStorageAttributes. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.

    completion

    Подпрограмма завершения для вызова один раз передача данных завершена. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.

    context

    Дополнительная контекстная информация для передачи данных (например, размер блока).

    Обсуждение

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

    Этот метод является частью последовательности методов, вызванных для каждого запроса чтения-записи. Первым является prepareRequest, выделяющий и подготавливающий некоторый контекст к передаче; вторым является deblockRequest, выравнивающий передачу на блочных границах носителей; треть является breakUpRequest, разбивающим передачу в многократные подпередачи, когда превышены определенные аппаратные ограничения; четвертый executeRequest, реализующий фактическую передачу от устройства блочной системы хранения.

    Реализация этого метода обычно не переопределяется.

  • Спишите ушедшую существующую часть носителей.

    Объявление

    C++

    virtual IOReturn decommissionMedia( boolforcible);

    Параметры

    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( UInt64 byteStart, IOMemoryDescriptor *buffer, IOStorageCompletion completion, Context *context); #endif /* !__LP64__ */

    Параметры

    byteStart

    Запуск байтового смещения для передачи данных.

    buffer

    Буфер для передачи данных. Размер буфера подразумевает размер передачи данных.

    attributes

    Атрибуты передачи данных. Посмотрите IOStorageAttributes. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.

    completion

    Подпрограмма завершения для вызова один раз передача данных завершена. Это - ответственность вызываемого поддержать информацию на время передачи данных по мере необходимости.

    context

    Дополнительная контекстная информация для передачи данных (например, размер блока).

    Обсуждение

    Выполните асинхронный запрос на хранение. Запрос, как гарантируют, будет выровнен блоком.

    Этот метод является частью последовательности методов, вызванных для каждого запроса чтения-записи. Первым является prepareRequest, выделяющий и подготавливающий некоторый контекст к передаче; вторым является deblockRequest, выравнивающий передачу на блочных границах носителей; треть является breakUpRequest, разбивающим передачу в многократные подпередачи, когда превышены определенные аппаратные ограничения; четвертый executeRequest, реализующий фактическую передачу от устройства блочной системы хранения.

  • Объявление

    C++

    virtual IOReturn formatMedia( UInt64byteCapacity);

    Параметры

    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( Statisticsstatistic) 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( boolisWrite);

    Параметры

    isWrite

    Указывает, была ли эта работа записью, иначе, было чтение.

    Обсуждение

    Обновите количество полной погрешности - используемый для статистики.

    Реализация этого метода обычно не переопределяется.

  • Объявление

    C++

    virtual void incrementRetries( boolisWrite);

    Параметры

    isWrite

    Указывает, была ли эта работа записью, иначе, было чтение.

    Обсуждение

    Обновите общее число повторных попыток - используемый для статистики.

    Реализация этого метода обычно не переопределяется.

  • Инициализируйте связанные с носителями переменные экземпляра.

    Объявление

    C++

    virtual void initMediaState( void);

    Обсуждение

    Вызванный, когда носители не присутствует, этот метод отмечает состояние устройства, поскольку не наличие носителей представляет, не вращаемый и с разрешением записи.

  • Создайте объект IOMedia для носителей.

    Объявление

    C++

    virtual IOMedia * instantiateDesiredMediaObject( void);

    Обсуждение

    Этот метод создает точный тип желаемого объекта IOMedia. Это вызывает instantiateMediaObject. Подкласс может переопределить этот короткий метод для изменения типа мультимедийного объекта, который фактически инстанцируют.

  • Создайте объект IOMedia для носителей.

    Объявление

    C++

    virtual IOMedia * instantiateMediaObject( UInt64base, 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( UInt64byteStart, 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;