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( UInt64byteStart, 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( 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( UInt64byteStart, 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( boolforcible);Параметры
forcibleИстина для принуждения упущения относительно мультимедийного объекта, даже если оконечные отчеты, что был активный клиент.
Обсуждение
Этот метод обертывает вызов, чтобы завершить, разобрать штабель и объект IOMedia для носителей. Если «насильственный» истина, о мультимедийном объекте забудут, и initMediaState вызовут. Насильственное списывает, произошел бы, когда неисправимая ошибка происходит во время разрушения (например, возможно клиент все еще открыт), но мы должны все еще забыть о носителях.
-
Объявление
C++
virtual void deleteContext( Context *context);Параметры
contextСтруктура контекста, которая будет удалена.
Обсуждение
Удалите структуру контекста из работы чтения-записи.
-
Объявление
C++
virtual IOReturn ejectMedia();Возвращаемое значение
Код IOReturn.
Обсуждение
Извлеките носители от устройства. Драйвер ответственен за разъединение мультимедийного объекта, который это создало перед продолжением извлечения. Если разрушение перестало работать, ошибка должна быть возвращена.
-
Объявление
C++
#ifdef __LP64__ virtual void executeRequest( UInt64byteStart, 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( 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( IOMediaStatestate);Обсуждение
Этот метод вызывают на изменении состояния носителей, т.е. поступлении или удалении. Если носители только что стали доступными, вызовы выполняются к 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;
