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

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

Разработчик

Ссылка класса IOService

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

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

IOService

Базовый класс для большинства семей I/O Kit, устройств и драйверов.

Базовый класс IOService определяет APIs, используемый, чтобы опубликовать службы, инстанцировать других служб на основе существования службы обеспечения (т.е. укладка драйвера), уничтожить службу и ее зависимый штабель, уведомить заинтересованные стороны изменений состояния службы и общие служебные функции, полезные через все семьи.

Типы службы указаны с соответствующим словарем, описывающим свойства службы. Например, соответствующий словарь мог бы описать любой IOUSBDevice (или подкласс), IOUSBDevice с определенным кодом класса или IOPCIDevice с рядом соответствия имен или устройства и идентификаторов поставщиков. Так как соответствующий словарь интерпретируется семьей, создавшей службу, а также в общем IOService, список свойств, которые рассматривают для соответствия, зависит от familiy.

Соответствующие словари связаны с классами IOService каталогом, как таблицы свойства драйвера, и также предоставлены клиентами уведомления APIs.

IOService обеспечивает соответствие на основе класса C++ (через OSMetaClass динамический кастинг), имя ключа реестра, путь реестра к службе (который включает пути дерева устройств), имя, присвоенное BSD, или его расположением (его точка крепления).

Инстанцирование драйвера IOService

Драйверы являются подклассами IOService, и их доступностью управляют через каталог. Они инстанцируют на основе публикации IOService, который они используют (например, IOPCIDevice или IOUSBDevice), или когда они добавляются к каталогу и IOService (s), они используют, уже доступны.

То, когда IOService («провайдер») публикуется с registerService методом, соответствие и зондирование процесса начинаются, который является всегда единственным, распараллелило на провайдера. Список соответствия словарей из каталога и установленный публикует запросы уведомления, это успешно соответствует IOService, создается, с упорядочиванием предоставленного kIOProbeScoreKey («IOProbeScore») свойство в словаре, или предоставленный уведомлением.

Каждая запись в списке тогда обрабатывается в порядке - для уведомлений, уведомление поставлено, поскольку таблицы свойства драйвера намного больше происходит.

Класс драйвера инстанцируют и init() вызванный с его таблицей свойства. Новый экземпляр драйвера тогда присоединен к провайдеру и вызвал его тестовый метод с провайдером как параметр. Значение по умолчанию probe метод действительно только возвращает успех, но драйвер может реализовать этот метод для опроса провайдера, чтобы удостовериться, что это может работать с ним. В это время это может также изменить свой тестовый счет. После зонда отсоединяется драйвер, и следующее в списке рассматривают (т.е. присоединяют, зондируют и отсоединяют).

Когда фаза зондирования завершена, список состоит из успешно зондируемых драйверов, в порядке их тестового счета (после того, как корректировка во время тестового вызова). Список тогда разделен на категории на основе kIOMatchCategoryKey свойство («IOMatchCategory»); драйверы без категории соответствия все рассматривают в одной категории по умолчанию. Категории соответствия позволяют многократным клиентам провайдера быть присоединенными и запущенными, хотя провайдер может также осуществить открытую/близкую семантику для получения активного доступа к нему.

Для каждой категории самый высокий драйвер выигрыша в той категории присоединен к провайдеру и его вызванному методу запуска. Если start успешно, остальная часть драйверов в той же категории соответствия отбрасываются, иначе следующий самый высокий драйвер выигрыша запущен и т.д.

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

После того, как драйверы были все синхронно запущены, установленные «соответствующие» уведомления, соответствующие зарегистрированный IOService, поставлены.

Свойства используются IOService

kIOClassKey, extern const OSSymbol * gIOClassKey, "IOClass"

Класс драйвера для инстанцирования при соответствии провайдеров.

kIOProviderClassKey, extern const OSSymbol * gIOProviderClassKey, "IOProviderClass"

Класс провайдера (ов), которого рассмотрят для соответствия, согласовал с OSDynamicCast, таким образом, будут также соответствовать подклассы.

kIOProbeScoreKey, extern const OSSymbol * gIOProbeScoreKey, "IOProbeScore"

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

kIOMatchCategoryKey, extern const OSSymbol * gIOMatchCategoryKey, "IOMatchCategory"

Строка, определяющая категорию драйвера для соответствия целей. Все драйверы без IOMatchCategory свойство считается в той же категории по умолчанию. Только один драйвер в категории может быть запущен на каждом провайдере.

kIONameMatchKey, extern const OSSymbol * gIONameMatchKey, "IONameMatch"

Строка или набор строк, соответствующих имя провайдера. Сравнение реализовано с IORegistryEntry:: метод compareNames, поддерживающий единственную строку или любой набор (OSArray, OSSet, OSDictionary и т.д.) строк. Объекты IOService со свойствами дерева устройств (например, IOPCIDevice) также будут соответствующими на основе того «совместимого» стандарта, «имя», «device_type» свойства. Соответствующее имя оставят в водительской таблице свойства в kIONameMatchedKey свойство.

Примеры

  • <key>IONameMatch</key>
  • <string>pci106b,7</string>

Для списка возможных имен соответствия сериализированный массив строк должен используемый, например.

  • <key>IONameMatch</key>
  • <array>
  • <string>APPL,happy16</string>
  • <string>pci106b,7</string>
  • </array>

kIONameMatchedKey, extern const OSSymbol * gIONameMatchedKey, "IONameMatched"

Имя успешно соответствовало имя от kIONameMatchKey свойство оставят в водительской таблице свойства как kIONameMatchedKey свойство.

kIOPropertyMatchKey, extern const OSSymbol * gIOPropertyMatchKey, "IOPropertyMatch"

Словарь свойств, что каждый должен существовать в соответствии IOService и соответствовать успешно isEqualTo метод.

  • <key>IOPropertyMatch</key>
  • <dictionary>
  • <key>APPL,happy16</key>
  • <string>APPL,meek8</string>
  • </dictionary>

kIOUserClientClassKey, extern const OSSymbol * gIOUserClientClassKey, "IOUserClientClass"

Имя класса, которое служба попытается выделить, когда будут требовать пользовательское соединение клиента. Сначала кусок устройства запрашивается, тогда провайдер куска запрашивается по умолчанию.

kIOKitDebugKey, extern const OSSymbol * gIOKitDebugKey, "IOKitDebug"

Установите некоторые флаги отладки для журналирования процесса загрузки драйвера. Флаги определяются в IOKit/IOKitDebug.h, но 65535 работы хорошо.

Наследование


Не применимый

Соответствует


Не применимый

Оператор импорта


Не применимый

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.0 и позже.
  • Подтверждает происходящее изменение состояния электропитания.

    Объявление

    C++

    IOReturn acknowledgePowerChange( IOService *whichDriver );

    Параметры

    whichDriver

    Указатель на драйвер вызова. Вызванный объект отслеживает все заинтересованные стороны, чтобы гарантировать, что все подтвердили изменение состояния электропитания.

    Возвращаемое значение

    IOPMNoErr.

    Обсуждение

    Когда управление питанием сообщает заинтересованному объекту (через powerStateWillChangeTo или powerStateDidChangeTo), объект может возвратить непосредственное подтверждение через код возврата, или это может возвратить индикацию, которую это подтвердит позже путем вызова acknowledgePowerChange. Заинтересованные объекты - те, которые зарегистрировались как заинтересованные драйверы, а также дочерние элементы плоскости питания драйвера изменения питания. Драйвер, вызывающий registerInterestedDriver, должен вызвать acknowledgePowerChange, или используйте непосредственный возврат подтверждения из powerStateWillChangeTo или powerStateDidChangeTo.

  • Подтверждает запоздалое завершение водительского setPowerState изменение состояния электропитания.

    Объявление

    C++

    IOReturn acknowledgeSetPowerState( void );

    Возвращаемое значение

    IOPMNoErr.

    Обсуждение

    После того, как управление питанием дает драйверу команду изменять свое состояние через setPowerState, тот драйвер должен подтвердить изменение, когда его устройство завершило его переход. Подтверждение может быть непосредственным через код возврата от setPowerState, или задержанный, через этот вызов к acknowledgeSetPowerState. Любой не возвращающийся драйвер kIOPMAckImplied от setPowerState реализация должна позже вызвать acknowledgeSetPowerState.

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

    Объявление

    C++

    virtual bool activityTickle( unsigned long type, unsigned long stateNumber = 0 );

    Параметры

    type

    Когда type kIOPMSubclassPolicy, activityTickle не обрабатывается в IOService и должен быть прерван подклассом. Когда type kIOPMSuperclassPolicy1, флаг действия установлен, и состояние устройства проверяется. Если устройство было выключено, оно включается снова.

    stateNumber

    Когда type kIOPMSuperclassPolicy1, stateNumber содержит желаемое состояние электропитания, порядковое для действия. Если устройство будет в более низком состоянии, то суперкласс переключит его на это состояние. Это для устройств, которые могут обработать некоторые доступы в более низких состояниях электропитания; устройство включается только, насколько это должно быть для действия.

    Возвращаемое значение

    Когда type kIOPMSuperclassPolicy1, возвраты суперкласса true если устройство в настоящее время находится в состоянии, указанном stateNumber. Если устройство находится в более низком состоянии и должно быть включено, возвраты суперкласса false; в этом случае суперкласс будет инициировать изменение питания для включения устройства.

    Обсуждение

    activityTickle метод предоставлен для объектов в системе (или для самого драйвера), чтобы сказать драйверу, что используется его устройство. Суперкласс IOService может управлять определением безделья с простым неактивным механизмом таймера и этим activityTickle вызвать. Для запуска этого драйвер вызывает свой суперкласс setIdleTimerPeriod. Это запускает таймер для временного интервала, указанного в вызове. Когда таймер истекает, проверки суперкласса, чтобы видеть, было ли какое-либо действие начиная с последнего истечения срока таймера. (Это проверяет, чтобы видеть если activityTickle был вызван). Если было действие, оно перезапускает таймер, и этот процесс продолжается. Когда таймер истекает, и не было никакого действия устройства, суперкласс понижается, состояние питания устройства к следующему ниже утверждают. Это может продолжаться, пока устройство не находится в нуле состояния. После того, как устройство было выключено по крайней мере одним состоянием электропитания, последующим вызовом к activityTickle заставляет устройство быть переключенным на более высокое состояние, требуемое для действия. Если драйвер управляет определением безделья полностью самостоятельно, значением type параметр должен быть kIOPMSubclassPolicy, и драйвер должен переопределить activityTickle метод. Суперкласс реализация IOService activityTickle ничего не делает с kIOPMSubclassPolicy параметр.

  • Добавляет свойство соответствия расположения к существующему словарю.

    Объявление

    C++

    static OSDictionary * addLocation( OSDictionary *table );

    Параметры

    table

    Соответствующие свойства добавляются к указанному словарю, который должен быть ненулевым.

    Возвращаемое значение

    Создаваемый словарь соответствия расположения возвращается на успехе или нуле при отказе.

    Обсуждение

    Эта функция создает соответствие свойств, указывающих расположение объекта IOService как встроенный словарь соответствия. Это соответствие будет успешно на объекте IOService, присоединившем к объекту IOService, соответствующему этот словарь соответствия расположения.

  • Добавляет постоянный обработчик уведомления, который будет уведомлен относительно событий IOService.

    Объявление

    C++

    static IONotifier * addMatchingNotification( const OSSymbol *type, OSDictionary *matching, IOServiceMatchingNotificationHandler handler, void *target, void *ref = 0, SInt32 priority = 0 );

    Параметры

    type

    OSSymbol идентификация типа уведомления и состояния IOService:

    gIOPublishNotification Поставленный, когда регистрируется объект IOService.

    gIOFirstPublishNotification Поставленный, когда объект IOService регистрируется, но только один раз на экземпляр IOService. Когда их состояние изменяется, некоторые объекты IOService могут быть повторно зарегистрированы.

    gIOMatchedNotification Поставленный, когда объект IOService был соответствующим всем клиентским драйверам, и они зондировались и запускались.

    gIOFirstMatchNotification Поставленный, когда объект IOService был соответствующим всем клиентским драйверам, но только один раз на экземпляр IOService. Когда их состояние изменяется, некоторые объекты IOService могут быть повторно зарегистрированы.

    gIOTerminatedNotification Поставленный после того, как объект IOService был завершен, во время завершать этап.

    matching

    Соответствующий словарь для ограничения уведомлений только соответствию объектов IOService. В то время как уведомление установлено, словарь сохраняется. (Отличается от addNotification).

    handler

    Обратный вызов функции C для поставки уведомлений.

    target

    Ссылка экземпляра для использования обратного вызова.

    ref

    Ссылочная константа для использования обратного вызова.

    priority

    Постоянное упорядочивание всех уведомлений о каждом типе.

    Возвращаемое значение

    Экземпляр объекта IONotifier, который может использоваться, чтобы управлять или уничтожить запрос уведомления.

    Обсуждение

    IOService поставит уведомления об изменениях в состоянии объекта IOService зарегистрированным клиентам. Тип уведомления указан символом, например gIOMatchedNotification или gIOTerminatedNotification, и уведомления будут только включать объекты IOService, соответствующие предоставленный словарь соответствия. Уведомления упорядочиваются приоритетным набором с addNotification. Когда уведомление будет установлено, его обработчик вызовут с каждым из любых в настоящее время существующих объектов IOService, которые находятся в корректном состоянии (например, зарегистрированы) и соответствуют предоставленный словарь соответствия, избегая гонок между нахождением существования ранее и новыми событиями IOService. Запрос уведомления идентифицируется экземпляром объекта IONotifier, через который он может быть включен, отключен или удален. addMatchingNotification когда уведомление удалено, в отличие от addNotification, не использует ссылку на соответствующем словаре.

  • Осуждаемое использование addMatchingNotification (). Добавляет постоянный обработчик уведомления, который будет уведомлен относительно событий IOService.

    Объявление

    C++

    static IONotifier * addNotification( const OSSymbol *type, OSDictionary *matching, IOServiceNotificationHandler handler, void *target, void *ref = 0, SInt32 priority = 0 ) __attribute__((deprecated));

    Параметры

    type

    OSSymbol идентификация типа уведомления и состояния IOService:

    gIOPublishNotification Поставленный, когда регистрируется объект IOService.

    gIOFirstPublishNotification Поставленный, когда объект IOService регистрируется, но только один раз на экземпляр IOService. Когда их состояние изменяется, некоторые объекты IOService могут быть повторно зарегистрированы.

    gIOMatchedNotification Поставленный, когда объект IOService был соответствующим всем клиентским драйверам, и они зондировались и запускались.

    gIOFirstMatchNotification Поставленный, когда объект IOService был соответствующим всем клиентским драйверам, но только один раз на экземпляр IOService. Когда их состояние изменяется, некоторые объекты IOService могут быть повторно зарегистрированы.

    gIOTerminatedNotification Поставленный после того, как объект IOService был завершен, во время завершать этап.

    matching

    Соответствующий словарь для ограничения уведомлений только соответствию объектов IOService. Когда уведомление будет удалено, используя переданный - в ссылке, словарь будет выпущен.

    handler

    Обратный вызов функции C для поставки уведомлений.

    target

    Ссылка экземпляра для использования обратного вызова.

    ref

    Ссылочная константа для использования обратного вызова.

    priority

    Постоянное упорядочивание всех уведомлений о каждом типе.

    Возвращаемое значение

    Экземпляр объекта IONotifier, который может использоваться, чтобы управлять или уничтожить запрос уведомления.

    Обсуждение

    IOService поставит уведомления об изменениях в состоянии объекта IOService зарегистрированным клиентам. Тип уведомления указан символом, например gIOMatchedNotification или gIOTerminatedNotification, и уведомления будут только включать объекты IOService, соответствующие предоставленный словарь соответствия. Уведомления упорядочиваются приоритетным набором с addNotification. Когда уведомление будет установлено, его обработчик вызовут с каждым из любых в настоящее время существующих объектов IOService, которые находятся в корректном состоянии (например, зарегистрированы) и соответствуют предоставленный словарь соответствия, избегая гонок между нахождением существования ранее и новыми событиями IOService. Запрос уведомления идентифицируется экземпляром объекта IONotifier, через который он может быть включен, отключен или удален. addNotification использует сохранение, рассчитывают на соответствующий словарь, когда удалено уведомление.

  • Сообщает драйверу, что он имеет новый дочерний элемент.

    Объявление

    C++

    virtual IOReturn addPowerChild( IOService *theChild );

    Параметры

    theChild

    Указатель на объект ребенка Айозервайса.

    Обсуждение

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

  • Корректируется busyState из объекта IOService.

    Объявление

    C++

    virtual void adjustBusy( SInt32delta );

    Параметры

    delta

    Дельта, которая будет применена к объекту IOService busyState.

    Обсуждение

    Применяет дельту к объекту IOService busyState. Изменение в busyState к или от нуля изменит провайдера объекта IOService busyState одним (в том же направлении).

  • Присоединяет клиент IOService к провайдеру в Реестре I/O.

    Объявление

    C++

    virtual bool attach( IOService *provider );

    Параметры

    provider

    Объект IOService, который будет служить провайдером этого объекта.

    Возвращаемое значение

    false если провайдер неактивен или на отказе ресурсов; иначе true.

    Обсуждение

    Эта функция, вызванная в клиенте IOService, вводит клиент в Реестр I/O как дочерний элемент провайдера в плоскости службы. Провайдер должен быть активным, или присоединение перестанет работать. Многократные вызовы присоединения к тому же провайдеру без операций в секунду и возвращают успех. Клиент может быть привязан к многократным провайдерам. Ввод объекта в Реестр I/O сохраняет и клиент и провайдера, пока они не отсоединяются.

  • Вызывает функцию платформы с именем.

    Объявление

    C++

    virtual IOReturn callPlatformFunction( const OSSymbol *functionName, bool waitForFunction, void *param1, void *param2, void *param3, void *param4 );

    Параметры

    functionName

    Имя функции, которую вызовут. Когда functionName струна до, callPlatformFunction преобразовывает струну до в OSSymbol и вызывает версию OSSymbol callPlatformFunction. Этот процесс может блокировать и не должен использоваться от контекста прерывания.

    waitForFunction

    Если true, callPlatformFunction не возвратится, пока функция не была вызвана.

    Возвращаемое значение

    Код IOReturn; kIOReturnSuccess если функция успешно выполнялась, kIOReturnUnsupported если не могла бы быть найдена служба для выполнения функции. Другие коды возврата могут быть возвращены функцией.

    Обсуждение

    Эксперт по платформе или другие драйверы могут реализовать различные функции для управления аппаратными функциями. callPlatformFunction позволяет любому объекту IOService получить доступ к этим функциям. Обычно callPlatformFunction вызывается на провайдере службы. Провайдер обслуживает запрос или передает его его провайдеру. IOPlatformExpert системы разделяют на подклассы функции выгод, о которых это знает и перенаправляет их в другие части плоскости службы. Если подкласс IOPlatformExpert не может выполнить функцию, базовый класс вызывают. Базовый класс IOPlatformExpert пытается найти, что служба выполняет функцию путем поиска имени функции в пространстве имен IOResources. Служба может опубликовать использование службы publishResource(functionName, this). Если никакая служба, как не могут находить, выполняет функцию, ошибка возвращается.

  • Заставляет прерывание устройства происходить.

    Объявление

    C++

    virtual IOReturn causeInterrupt( intsource);

    Параметры

    source

    Индекс источника прерывания в устройстве.

    Возвращаемое значение

    Код IOReturn (kIOReturnNoInterrupt возвращается, если источник не допустим).

    Обсуждение

    Эмулирует аппаратное прерывание, чтобы быть вызванным от уровня задачи.

  • Устанавливает водительское состояние электропитания.

    Объявление

    C++

    IOReturn changePowerStateTo( unsigned longordinal );

    Параметры

    ordinal

    Число желаемого состояния электропитания в массиве состояния электропитания.

    Возвращаемое значение

    Код возврата, который может быть проигнорирован вызывающей стороной.

    Обсуждение

    Эта функция является одним из нескольких, которые используются для установки водительского состояния электропитания. При большинстве обстоятельств, однако, необходимо вызвать changePowerStateToPriv вместо этого. Вызовы к changePowerStateTo, changePowerStateToPriv, и водительское питание дочерние элементы все влияние состояние электропитания драйвера. По устаревшим причинам проекта у них есть перекрывающаяся функциональность. Несмотря на то, что необходимо вызвать changePowerStateToPriv для изменения состояния электропитания устройства Вы, возможно, должны были бы вызвать changePowerStateTo при следующих обстоятельствах:

    • Если драйвер будет использовать changePowerStateToPriv для изменения его состояния электропитания это должно вызвать changePowerStateTo(0) в start подпрограмма для устранения влияния changePowerStateTo имеет на вычислениях состояния электропитания.

    • Вызвать changePowerStateTo в сочетании с setIdleTimerPeriod и activityTickle для бездействия драйвера в состояние низкой мощности. Для драйвера с 3 состояниями электропитания, например, changePowerStateTo(1) устанавливает минимальный уровень состояния электропитания 1, такой, что неактивный период таймера может не установить питание Вашего устройства, немного понижаются, чем состояние 1.

  • Говорит водительскому суперклассу изменять состояние электропитания своего устройства.

    Объявление

    C++

    IOReturn changePowerStateToPriv( unsigned longordinal );

    Параметры

    ordinal

    Число желаемого состояния электропитания в массиве состояния электропитания.

    Возвращаемое значение

    Код возврата, который может быть проигнорирован вызывающей стороной.

    Обсуждение

    Драйвер использует этот метод, чтобы сказать его суперклассу изменять состояние электропитания устройства. Это - рекомендуемый способ изменить состояние электропитания устройства. Три вещи влияют на состояние электропитания драйвера: changePowerStateTo, changePowerStateToPriv, и желания водительских дочерних элементов плоскости питания. Управление питанием помещает устройство в максимальное состояние, которым управляют те три объекта. Драйверы могут устранить влияние changePowerStateTo метод на состоянии электропитания один из двух путей. См. powerOverrideOnPriv для игнорирования влияния метода или вызова changePowerStateTo(0) в водительском start подпрограмма для удаления changePowerStateTo запрос питания метода.

  • Осуждаемый. Не использовать.

    Объявление

    C++

    virtual void clampPowerOn( unsigned long duration );

  • Выпускает активный доступ к провайдеру.

    Объявление

    C++

    virtual void close( IOService *forClient, IOOptionBits options = 0 );

    Параметры

    forClient

    Назначает клиент провайдера, запрашивающего завершение.

    options

    Опции, доступные для завершения. Семья провайдера может реализовать опции для завершения; IOService не определяет ни один.

    arg

    Определенные параметры семьи, проигнорированные IOService.

    Обсуждение

    IOService обеспечивает универсальную открытую и близкую семантику для отслеживания клиентов провайдера, установивших активный канал передачи данных. Использование открытых и close, и правила относительно владения являются семьей, определенной и определенной handleOpen и handleClose методами в провайдере.

  • Объявление

    C++

    virtual void command_received( void *, void *, void *, void *);

    Обсуждение

    Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

  • Сравнивает ряд свойств в соответствующем словаре с таблицей свойства объекта IOService.

    Объявление

    C++

    virtual bool compareProperties( OSDictionary *matching, OSCollection *keys );

    Параметры

    matching

    Соответствующий словарь, который должен быть ненулевым.

    keys

    Набор (например, OSSet, OSArray, OSDictionary), который должен содержать Осстрингса (или OSSymbols), которые указывают ключи свойства, которые будут сравнены.

    Возвращаемое значение

    Успех, если compareProperty возвраты true для каждого ключа в наборе; иначе отказ.

    Обсуждение

    Это - функция помощника для помощи в реализации matchPropertyTable. Набор ключей словаря указывает свойства в соответствующем словаре, который будет сравнен, с compareProperty, с таблицей свойства объекта IOService, если compareProperty возвраты true для каждого ключа возвращается успех; иначе отказ.

  • Сравнивает свойство в соответствующем словаре с таблицей свойства объекта IOService.

    Объявление

    C++

    virtual bool compareProperty( OSDictionary *matching, const char *key );

    Параметры

    matching

    Соответствующий словарь, который должен быть ненулевым.

    key

    Ключ словаря указание свойства, которое будет сравнено как струна до.

    Возвращаемое значение

    true если свойство не существует в соответствующей таблице. Если свойство существует в соответствующем словаре, но не таблице свойства IOService, отказ возвращается. Иначе результат вызова свойства из соответствующего словаря isEqualTo метод со свойством IOService как параметр возвращается.

    Обсуждение

    Это - функция помощника для помощи в реализации matchPropertyTable. Если свойство, указанное key существует в соответствующем словаре, это по сравнению со свойством того же имени в таблице свойства объекта IOService. Сравнение выполняется с isEqualTo метод. Если свойство не существует в соответствующей таблице, успех возвращается. Если свойство существует в соответствующем словаре, но не таблице свойства IOService, отказ возвращается.

  • Сравнивает свойство в соответствующем словаре с таблицей свойства объекта IOService.

    Объявление

    C++

    virtual bool compareProperty( OSDictionary *matching, const OSString *key );

    Параметры

    matching

    Соответствующий словарь, который должен быть ненулевым.

    key

    Ключевое указание словаря свойства, которое будет сравнено как OSString (который включает OSSymbol).

    Возвращаемое значение

    true если свойство не существует в соответствующей таблице. Если свойство существует в соответствующем словаре, но не таблице свойства IOService, отказ возвращается. Иначе результат вызова свойства из соответствующего словаря isEqualTo метод со свойством IOService как параметр возвращается.

    Обсуждение

    Это - функция помощника для помощи в реализации matchPropertyTable. Если свойство, указанное key существует в соответствующем словаре, это по сравнению со свойством того же имени в таблице свойства объекта IOService. Сравнение выполняется с isEqualTo метод. Если свойство не существует в соответствующей таблице, успех возвращается. Если свойство существует в соответствующем словаре, но не таблице свойства IOService, отказ возвращается.

  • сконфигурируйте каналы IOReporting

    Объявление

    C++

    virtual IOReturn configureReport( IOReportChannelList *channels, IOReportConfigureActionaction, void *result, void *destination);

    Параметры

    channels

    - каналы для конфигурирования

    action

    - включите/запретите/измерьте и т.д.

    result

    - специфичное для действия возвращенное значение

    destination

    - специфичное для действия место назначения по умолчанию

  • Объявление

    C++

    virtual IOService * copyClientWithCategory( const OSSymbol *category );

    Параметры

    category

    Соответствие OSSymbol свойству соответствия IOMatchCategory.

    Возвращаемое значение

    Возвращает ссылку на дочерний элемент IOService с данной категорией. Результат должен быть выпущен вызывающей стороной.

  • Находит, что один из тока опубликовал объекты IOService, соответствующие соответствующий словарь.

    Объявление

    C++

    static IOService * copyMatchingService( OSDictionary *matching );

    Параметры

    matching

    Соответствующий словарь, описывающий желаемый объект IOService.

    Возвращаемое значение

    Объект IOService или NULL. Быть выпущенным вызывающей стороной.

    Обсуждение

    Обеспечивает метод для нахождения одного элемента набора опубликованных объектов IOService, соответствующих предоставленный словарь соответствия.

  • Узнает возможность текущего состояния электропитания устройства.

    Объявление

    C++

    IOPMPowerFlags currentCapability( void );

    Возвращаемое значение

    Копия capabilityFlags поле для текущего состояния электропитания в массиве состояния электропитания.

  • Узнает текущую потребляемую мощность устройства.

    Объявление

    C++

    unsigned long currentPowerConsumption( void );

    Возвращаемое значение

    Копия staticPower поле для текущего состояния электропитания в массиве состояния электропитания.

    Обсуждение

    Большая часть питания Mac OS X управляла, драйверы не сообщают о своей потребляемой мощности через staticPower поле. Таким образом этот вызов точно не отразит потребляемую мощность для большинства драйверов.

  • Вычеркивает из списка интерес состояния электропитания от предыдущего вызова до registerInterestedDriver.

    Объявление

    C++

    IOReturn deRegisterInterestedDriver( IOService *theDriver );

    Параметры

    theDriver

    Заинтересованный драйвер ранее передается в registerInterestedDriver.

    Возвращаемое значение

    Код возврата, который может быть проигнорирован вызывающей стороной.

    Обсуждение

    Сохранение от registerInterestedDriver выпущен. Этот метод синхронен против любого powerStateWillChangeTo или powerStateDidChangeTo вызовите предназначение для заинтересованного драйвера, поэтому когда не будет вводиться этот метод возвраты, этому гарантируют те обработчики интереса. Большинство драйверов не должно переопределять deRegisterInterestedDriver.

  • Отсоединяет клиент IOService от провайдера в Реестре I/O.

    Объявление

    C++

    virtual void detach( IOService *provider );

    Параметры

    provider

    IOService возражают для отсоединения от.

    Обсуждение

    Эта функция, вызванная в клиенте IOService, удаляет клиент как дочерний элемент провайдера в плоскости службы Реестра I/O. Если провайдер не является родителем клиента, это не, иначе Реестр I/O выпускает и клиент и провайдера.

  • Передает завершение штабель.

    Объявление

    C++

    virtual bool didTerminate( IOService *provider, IOOptionBitsoptions, bool *defer );

    Параметры

    provider

    Завершенный провайдер этого объекта.

    options

    Опции первоначально передали оконечному.

    defer

    Если там ожидает I/O, требующий этого объекта сохраниться, и провайдер не открыт этим объектным набором defer к true и вызовите IOService::didTerminate() реализация, когда завершается I/O. Иначе, отпуск defer набор к его значению по умолчанию false.

    Возвращаемое значение

    true.

    Обсуждение

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

  • Спрашивает драйвер, если его устройство является тем, просто разбудившим систему от сна.

    Объявление

    C++

    virtual bool didYouWakeSystem( void ) __attribute__((deprecated));

    Возвращаемое значение

    true если водительское устройство разбудило систему и false иначе.

    Обсуждение

    Управление питанием вызывает управляемый драйвер питания с этим методом, чтобы спросить, является ли его устройство тем, просто разбудившим систему от сна. Если устройство способно к пробуждению системы от сна, его драйвер должен реализовать didYouWakeSystem и возвратитесь true если его устройство было ответственно за пробуждение системы.

  • Синхронно отключает прерывание устройства.

    Объявление

    C++

    virtual IOReturn disableInterrupt( intsource);

    Параметры

    source

    Индекс источника прерывания в устройстве.

    Возвращаемое значение

    Код IOReturn (kIOReturnNoInterrupt возвращается, если источник не допустим).

    Обсуждение

    Если процедура прерывания будет работать, то вызов блокирует, пока подпрограмма не завершается. Это - ответственность вызывающей стороны отслеживать разрешать состояние источника прерывания.

  • Включает прерывание устройства.

    Объявление

    C++

    virtual IOReturn enableInterrupt( intsource);

    Параметры

    source

    Индекс источника прерывания в устройстве.

    Возвращаемое значение

    Код IOReturn (kIOReturnNoInterrupt возвращается, если источник не допустим).

    Обсуждение

    Это - ответственность вызывающей стороны отслеживать разрешать состояние источника прерывания.

  • Переводит код IOReturn в BSD errno.

    Объявление

    C++

    virtual int errnoFromReturn( IOReturnrtn );

    Параметры

    rtn

    Код IOReturn.

    Возвращаемое значение

    BSD errno или EIO если неизвестный.

    Обсуждение

    BSD определяет его собственные коды возврата для его функций в sys/errno.h, и семьи I/O Kit, возможно, должны предоставить совместимые результаты в контейнерах BSD. Результаты доступны для стандартных кодов возврата в IOReturn.h в IOService, в то время как подклассы могут реализовать этот метод для интерпретации зависимых кодов возврата семьи.

  • Завершает уничтожение объекта IOService.

    Объявление

    C++

    virtual bool finalize( IOOptionBitsoptions );

    Параметры

    options

    Опции, переданные оконечному методу объекта IOService, передаются finalize.

    Возвращаемое значение

    true.

    Обсуждение

    finalize метод вызывают в неактивном (т.е. завершают), объект IOService после того, как отсоединился последний клиент. Реализация IOSERVICE вызовет остановку, близко, и отсоединится на каждом провайдере. Когда finalize возвраты, объект сохраняет количество, не будет иметь никаких ссылок сгенерированными процессом регистрации IOSERVICE.

  • Освобождает структуры данных, выделенные, когда управление питанием было инициализировано на этой службе.

    Объявление

    C++

    virtual void free( void );

  • Возвращает текущее значение агрессивности для данного типа.

    Объявление

    C++

    virtual IOReturn getAggressiveness( unsigned longtype, unsigned long *currentLevel );

    Параметры

    type

    Фактор агрессивности для запросов.

    currentLevel

    По успешному возврату, содержит значение фактора агрессивности type.

    Возвращаемое значение

    kIOReturnSuccess на успех; код ошибки Набора I/O иначе.

  • Возвраты busyState из объекта IOService.

    Объявление

    C++

    virtual UInt32 getBusyState( void );

    Возвращаемое значение

    busyState значение.

    Обсуждение

    Много действий в IOService являются асинхронными. Когда регистрация, соответствие или завершение происходят на объекте IOService, busyState увеличен одним. Изменение в busyState к или от нуля также изменяет провайдера объекта IOService busyState одним, что означает, что объект IOService отмечен занятый, когда любое из вышеупомянутых действий происходит на нем или любой из его клиентов.

  • Возвращает основного клиента объекта IOService.

    Объявление

    C++

    virtual IOService * getClient( void ) const;

    Возвращаемое значение

    Первый клиент провайдера или нуль, если объект IOService не присоединяется в Реестр I/O. Клиент сохраняется, в то время как это присоединяется и не должно быть выпущено вызывающей стороной.

    Обсуждение

    Эта функция, вызванная в провайдере IOService, возвратит первый клиент, который присоединит к нему. Для объектов IOService, имеющих только только один клиент, это может быть полезным упрощением.

  • Возвращает итератор по клиентам объекта IOService.

    Объявление

    C++

    virtual OSIterator * getClientIterator( void ) const;

    Возвращаемое значение

    Итератор по клиентам провайдера или нуль, если существует отказ ресурсов. Когда итерация закончена, итератор должен быть выпущен. Все объекты, возвращенные итерацией, сохраняются, в то время как итератор допустим, хотя они больше не могут присоединяться во время итерации.

    Обсуждение

    Для объектов IOService, которые могут иметь многократные клиенты, этот метод предоставляет итератор по клиентам провайдера.

  • Возвращает массив объектов IODeviceMemory, представляющих диапазоны устройства с отображенной памятью.

    Объявление

    C++

    virtual OSArray * getDeviceMemory( void );

    Возвращаемое значение

    OSArray объектов IODeviceMemory или нуль, если ни один не доступен. Массив сохраняется провайдером, так допустимо, в то время как присоединено.

    Обсуждение

    Этот метод возвращает массив объектов IODeviceMemory, представляющих диапазоны физической памяти, выделенные устройству с отображенной памятью.

  • Возвращает количество диапазонов физической памяти, доступных для устройства.

    Объявление

    C++

    virtual IOItemCount getDeviceMemoryCount( void );

    Возвращаемое значение

    Целочисленное количество числа доступных диапазонов.

    Обсуждение

    Этот метод возвращает количество диапазонов физической памяти, каждый представленный экземпляром IODeviceMemory, которые были выделены для устройства с отображенной памятью.

  • Возвращает экземпляр IODeviceMemory, представляющего один из диапазонов устройства с отображенной памятью.

    Объявление

    C++

    virtual IODeviceMemory * getDeviceMemoryWithIndex( unsigned intindex );

    Параметры

    index

    Индекс в массив диапазонов присвоился к устройству.

    Возвращаемое значение

    Указатель на экземпляр IODeviceMemory или нуль, если индекс вне доступного количества. IODeviceMemory сохраняется провайдером, так допустимо, в то время как присоединено, или в то время как существуют любые отображения к нему. Это не должно быть выпущено вызывающей стороной. См. также mapDeviceMemoryWithIndex, который создает отображение памяти устройства.

    Обсуждение

    Этот метод возвращает указатель на экземпляр IODeviceMemory для диапазона физической памяти в данном индексе для устройства с отображенной памятью.

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

    Объявление

    C++

    virtual IOReturn getInterruptType( intsource, int *interruptType);

    Параметры

    source

    Индекс источника прерывания в устройстве.

    interruptType

    Тип прерывания для источника прерывания будет сохранен здесь getInterruptType.

    kIOInterruptTypeEdge будет возвращен для граничных-trigggered источников.

    kIOInterruptTypeLevel будет возвращен для источников уровня-trigggered.

    Возвращаемое значение

    Код IOReturn (kIOReturnNoInterrupt возвращается, если источник не допустим).

  • Находит, что набор тока опубликовал объекты IOService, соответствующие соответствующий словарь.

    Объявление

    C++

    static OSIterator * getMatchingServices( OSDictionary *matching );

    Параметры

    matching

    Соответствующий словарь, описывающий желаемые объекты IOService.

    Возвращаемое значение

    Экземпляр итератора по ряду объектов IOService. Быть выпущенным вызывающей стороной.

    Обсуждение

    Обеспечивает метод нахождения текущего набора опубликованных объектов IOService, соответствующих предоставленный словарь соответствия.

  • Возвращает итератор по клиентам провайдера, в настоящее время открывавшим провайдера.

    Объявление

    C++

    virtual OSIterator * getOpenClientIterator( void ) const;

    Возвращаемое значение

    Итератор по клиентам, открывшим провайдера или нуль, если существует отказ ресурсов. Когда итерация закончена, итератор должен быть выпущен. Все объекты, возвращенные итерацией, сохраняются, в то время как итератор допустим, и текущая запись в итерации заблокирована с lockForArbitration, защита его от изменений состояния.

    Обсуждение

    Для объектов IOService, которые могут иметь многократные клиенты, этот метод предоставляет итератор по клиентам провайдера, блокируя каждого поочередно с lockForArbitration и возвращая тех, которые открыли провайдера.

  • Возвращает итератор по провайдерам клиента, в настоящее время открывающимся клиентом.

    Объявление

    C++

    virtual OSIterator * getOpenProviderIterator( void ) const;

    Возвращаемое значение

    Итератор по провайдерам, которых клиент имеет открытый, или нуль, если существует отказ ресурсов. Когда итерация закончена, итератор должен быть выпущен. Все объекты, возвращенные итерацией, сохраняются, в то время как итератор допустим, и текущая запись в итерации заблокирована с lockForArbitration, защита его от изменений состояния.

    Обсуждение

    Для тех немногих объектов IOService, получающих службу из многократных провайдеров, этот метод предоставляет итератор по провайдерам клиента, блокируя каждого поочередно с lockForArbitration и возвращая тех, которые были открыты клиентом.

  • Возвращает указатель на экземпляр эксперта по платформе для компьютера.

    Объявление

    C++

    static IOPlatformExpert * getPlatform( void );

    Возвращаемое значение

    Указатель на экземпляр IOPlatformExpert. Это не должно быть выпущено вызывающей стороной.

    Обсуждение

    Этот метод обеспечивает средство доступа для экземпляра эксперта по платформе для компьютера.

  • Возвращает указатель на корень управления питанием доменный экземпляр для компьютера.

    Объявление

    C++

    static class IOPMrootDomain * getPMRootDomain( void );

    Возвращаемое значение

    Указатель на управление питанием базируется доменный экземпляр. Это не должно быть выпущено вызывающей стороной.

    Обсуждение

    Этот метод обеспечивает средство доступа для корня управления питанием доменный экземпляр для компьютера.

  • Возвращает указатель на цикл работы управления питанием в масштабе всей системы.

    Объявление

    C++

    virtual IOWorkLoop * getPMworkloop( void ) __attribute__((deprecated));

    Обсуждение

    Большинство драйверов должно создать свои собственные циклы работы для синхронизации их кода; драйверы не должны выполнять произвольный код цикла работы управления питанием.

  • Определяет состояние электропитания устройства.

    Объявление

    C++

    UInt32 getPowerState( void );

    Возвращаемое значение

    Индекс текущего состояния электропитания в массив состояния электропитания устройства.

    Обсуждение

    «Текущее состояние электропитания устройства» обновляется в конце каждого перехода состояния электропитания (например, перехода от состояния 1, чтобы утвердить 0 или утвердить 0 для утверждения 2). Этот переход включает потраченное включение времени или от любых дочерних элементов плоскости питания. Таким образом, если дочерний элемент вызывает getPowerState на его родителе питания во время системного следа от сна вызов возвратит индекс устройству от состояния, а не на состоянии.

  • Возвращает основного провайдера объекта IOService.

    Объявление

    C++

    virtual IOService * getProvider( void ) const;

    Возвращаемое значение

    Первый провайдер клиента или нуль, если объект IOService не присоединяется в Реестр I/O. В то время как клиент присоединяется и не должен быть выпущен вызывающей стороной, провайдер сохраняется.

    Обсуждение

    Эта функция, вызванная в клиенте IOService, возвратит провайдера, к которому она была сначала присоединена. Поскольку у большинства объектов IOService есть только один провайдер, это - полезное упрощение и также поддерживает кэширование провайдера, когда Реестр I/O неизменен.

  • Возвращает итератор по провайдерам объекта IOService.

    Объявление

    C++

    virtual OSIterator * getProviderIterator( void ) const;

    Возвращаемое значение

    Итератор по провайдерам клиента или нуль, если существует отказ ресурсов. Когда итерация закончена, итератор должен быть выпущен. Все объекты, возвращенные итерацией, сохраняются, в то время как итератор допустим, хотя они больше не могут присоединяться во время итерации.

    Обсуждение

    Для тех немногих объектов IOService, получающих службу из многократных провайдеров, этот метод предоставляет итератор по провайдерам клиента.

  • Выделяет любые необходимые ресурсы для опубликованного объекта IOService перед клиентским присоединением.

    Объявление

    C++

    virtual IOReturn getResources( void );

    Возвращаемое значение

    Код IOReturn; kIOReturnSuccess необходимо для объекта IOService, который будет успешно использоваться, иначе процесс регистрации для объекта останавливается.

    Обсуждение

    Если существуют успешные соответствия драйвера перед каким-либо клиентским присоединением, этот метод вызывают во время процесса регистрации для объекта IOService. Когда соответствующий драйвер найден, это допускает ленивое выделение ресурсов к объекту IOService.

  • Возвращает указатель на службу IOResources.

    Объявление

    C++

    static IOService * getResourceService( void );

    Возвращаемое значение

    Указатель на экземпляр IOResources. Это не должно быть выпущено вызывающей стороной.

    Обсуждение

    IOService поддерживает службу IOResources ресурса, позволяющую объектам быть опубликованными и найденными глобально в Наборе I/O на основе имени, с помощью стандартного IOService вызовы уведомления и соответствие.

  • Возвращает указатель на корень плоскости службы.

    Объявление

    C++

    static IOService * getServiceRoot( void );

    Возвращаемое значение

    Указатель на экземпляр IOService в корне плоскости службы. Это не должно быть выпущено вызывающей стороной.

    Обсуждение

    Этот метод обеспечивает средство доступа для корня плоскости службы для компьютера.

  • Средство доступа для IOService утверждает биты, не обычно необходимые или используемые вне IOService.

    Объявление

    C++

    virtual IOOptionBits getState( void ) const;

    Возвращаемое значение

    Биты состояния для IOService, например. kIOServiceInactiveState, kIOServiceRegisteredState.

  • Возвращает текущий цикл работы или provider->getWorkLoop.

    Объявление

    C++

    virtual IOWorkLoop * getWorkLoop() const;

    Возвращаемое значение

    Цикл работы, или текущий цикл работы или это идут по getProvider цепочечному вызову getWorkLoop. В конечном счете это достигнет допустимой работы основанный на цикле драйвер или корень дерева I/O, куда это возвратит цикл работы в масштабе всей системы. Возвраты 0, если этому не удается найти (или создать) цикл работы.

    Обсуждение

    Эта функция возвращает допустимый цикл работы, который клиент может использовать для добавления IOCommandGate к. Намерение состоит в том, что у клиента IOService есть данные, которые должны быть защищены, но не хотят оплачивать стоимость специализированного потока. К этим данным нужно получить доступ от контекста выноски провайдера также. Таким образом для достижения обеих из этих целей клиент создает IOCommandGate для блокировки доступа к его данным, но он регистрирует его в цикле работы провайдера, т.е. цикле работы, который сделает выноски завершения. Это избегает потенциальной мертвой блокировки, потому что логический элемент цикла работы использует рекурсивную блокировку, позволяющую той же блокировке быть сохраненной многократно единственным потоком.

  • Управляет открытым / близкое поведение объекта IOService (сверхъездовой подклассами).

    Объявление

    C++

    virtual void handleClose( IOService *forClient, IOOptionBitsoptions );

    Параметры

    forClient

    Назначает клиент провайдера, запрашивающего завершение.

    options

    Опции для завершения, может быть интерпретирован конструктором handleOpen.

    Обсуждение

    IOService вызывает этот метод в своих подклассах в ответ на близкий метод, таким образом, подкласс может реализовать запрос. Реализация по умолчанию обеспечивает единственный доступ владельца к объекту IOService через открытый. Объект заблокирован через lockForArbitration прежде handleClose вызывается.

  • Управляет открытым / близкое поведение объекта IOService (сверхъездовой подклассами).

    Объявление

    C++

    virtual bool handleIsOpen( const IOService *forClient ) const;

    Параметры

    forClient

    Если ненулевой, isOpen возвращает открытое состояние для того клиента. Если нуль передается, isOpen возвращает открытое состояние для всех клиентов.

    Возвращаемое значение

    true если определенное, или кто-либо, у клиента есть открытый объект IOService.

    Обсуждение

    IOService вызывает этот метод в своих подклассах в ответ на открытый метод, таким образом, подкласс может реализовать запрос. Реализация по умолчанию обеспечивает единственный доступ владельца к объекту IOService через открытый. Объект заблокирован через lockForArbitration прежде handleIsOpen вызывается.

  • Управляет открытым / близкое поведение объекта IOService (сверхъездовой подклассами).

    Объявление

    C++

    virtual bool handleOpen( IOService *forClient, IOOptionBits options, void *arg );

    Параметры

    forClient

    Назначает клиент провайдера, запрашивающего открытое.

    options

    Опции для открытого, может быть интерпретирован конструктором handleOpen.

    Возвращаемое значение

    trueесли открытое было успешно; false иначе.

    Обсуждение

    IOService вызывает этот метод в своих подклассах в ответ на открытый метод, таким образом, подкласс может реализовать запрос. Реализация по умолчанию обеспечивает единственный доступ владельца к объекту IOService через open. Объект заблокирован через lockForArbitration прежде handleOpen вызывается.

  • Определяет, какое состояние электропитания устройство находится в учитывая текущее состояние домена питания.

    Объявление

    C++

    virtual unsigned long initialPowerStateForDomainState( IOPMPowerFlagsdomainState );

    Параметры

    domainState

    Флаги, описывающие символ «доменного питания»; они представляют outputPowerCharacter поле состояния в массиве состояния электропитания домена питания.

    Возвращаемое значение

    Число состояния.

    Обсуждение

    Когда драйвер инициализирует управление питанием, управление питанием вызывает этот метод один раз. Большинство драйверов не должно реализовывать этот метод и может положиться на реализацию IOService по умолчанию. Реализация IOService сканирует массив состояния электропитания, ища самое высокое состояние чей inputPowerRequirement поле точно соответствует значение domainState параметр. Если более интеллектуальное определение требуется, питание управляло, драйвер должен реализовать метод и переопределить реализацию суперкласса.

  • Проверки, если объект IOService был завершен и находится в процессе того, чтобы быть уничтоженным.

    Объявление

    C++

    bool isInactive( void ) const;

    Возвращаемое значение

    true если был завершен объект IOService.

    Обсуждение

    Когда объект IOService успешно завершается, это сразу сделано неактивным, который блокирует дальнейшее присоединение () es, соответствуя или уведомления, происходящие на объекте. Это остается неактивным, пока последний клиент не закрывается, и тогда завершен и уничтожен.

  • Определяет, есть ли определенное, или кто-либо, у клиента открытый объект IOService.

    Объявление

    C++

    virtual bool isOpen( const IOService *forClient = 0 ) const;

    Параметры

    forClient

    Если ненулевой, <codeisOpenreturns открытое состояние для того клиента. Если нуль передается, <codeisOpenreturns открытое состояние для всех клиентов.

    Возвращаемое значение

    <codetrueif определенное, или любой, у клиента есть открытый объект IOService.

    Обсуждение

    Возвращает открытое состояние объекта IOService относительно указанного клиента, или когда это открыто любым клиентом.

  • Присоединяется к драйверу в плоскость питания Реестра I/O.

    Объявление

    C++

    virtual void joinPMtree( IOService *driver );

    Параметры

    driver

    Драйвер, который будет добавлен к плоскости питания, обычно this.

    Обсуждение

    Драйвер использует этот метод для вызова его куска при инициализации (обычно в его start подпрограмма после вызова PMinit), чтобы быть присоединенным в иерархию управления питанием (т.е. плоскость питания). Драйвер обычно вызывает этот метод на драйвере для устройства, обеспечивающего его питание (это часто - кусок). Перед этим вызовом возвраты в вызывающую сторону, вероятно, зайдут setPowerParent и setAggressiveness и возможно в addPowerChild, как это добавляется к иерархии. Этот метод может быть переопределен подклассом куска.

  • Блокирует объект IOService против изменений в состоянии или владении.

    Объявление

    C++

    virtual bool lockForArbitration( bool isSuccessRequired = true );

    Параметры

    isSuccessRequired

    Если запрос на доступ к объекту IOService должен быть отклонен, если это завершается, передача false, иначе передача true.

    Обсуждение

    Регистрация, завершение и открытый / закрывают функции использования IOService lockForArbtration к доступу единственного потока к объекту IOService. lockForArbitration предоставляет рекурсивный доступ к тому же потоку.

  • Запросы, что устройство становится применимым.

    Объявление

    C++

    IOReturn makeUsable( void );

    Возвращаемое значение

    Код возврата, который может быть проигнорирован вызывающей стороной.

    Обсуждение

    Когда некоторый клиент устройства (или собственный драйвер устройства) просит устройство становиться применимым, этот метод вызывают. Управление питанием отвечает путем сообщения объекта, на который этот метод вызывают для изменения на его самое высокое состояние электропитания. makeUsable реализован с помощью changePowerStateToPriv. Последующие запросы на более низкое питание, такой как от changePowerStateToPriv, будет покупать право на этот запрос.

  • Отображает физический диапазон устройства.

    Объявление

    C++

    virtual IOMemoryMap * mapDeviceMemoryWithIndex( unsigned intindex, IOOptionBits options = 0 );

    Параметры

    index

    Индекс в массив диапазонов присвоился к устройству.

    Возвращаемое значение

    Экземпляр IOMemoryMap или нуль, если индекс вне доступного количества. Отображение должно быть выпущено только, когда больше не требуется доступ к нему.

    Обсуждение

    Этот метод создает отображение для IODeviceMemory в данном индексе, с IODeviceMemory::map(options). Отображение представлено возвращенным экземпляром IOMemoryMap, который не должен быть выпущен, пока отображение больше не требуется.

  • Позволяет зарегистрированному объекту IOService направить соответствие расположения.

    Объявление

    C++

    virtual IOService * matchLocation( IOService *client );

    Параметры

    client

    IOService возражают, в котором имеет место соответствие.

    Возвращаемое значение

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

    Обсуждение

    По умолчанию свойство соответствия расположения будет применено к провайдеру объекта IOService. Этот метод позволяет тому поведению быть переопределенным семьями.

  • Позволяет зарегистрированному объекту IOService реализовать семью определенное соответствие.

    Объявление

    C++

    virtual bool matchPropertyTable( OSDictionary *table, SInt32 *score );

    Параметры

    table

    Словарь свойств, которые будут соответствующими против.

    score

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

    Возвращаемое значение

    false если семья полагает, что соответствующий словарь не соответствует в свойствах, это понимает; true иначе.

    Обсуждение

    Все соответствие на объекте IOService вызовет этот метод, чтобы позволить писателю семьи реализовывать соответствие в дополнение к общим методам, предоставленным IOService. Лицо, осуществляющее внедрение должно исследовать соответствующий словарь, переданный, чтобы видеть, содержит ли он свойства, семья понимает для соответствия, и используйте их для соответствия с объектом IOService раз так. Обратите внимание на то, что, так как соответствие также выполняется другими частями Набора I/O, соответствующий словарь может содержать свойства, которые не понимает семья - их нельзя рассмотреть, соответствуя отказы.

  • Определяет водительское самое высокое состояние электропитания, возможное для состояния домена данных полномочий.

    Объявление

    C++

    virtual unsigned long maxCapabilityForDomainState( IOPMPowerFlagsdomainState );

    Параметры

    domainState

    Флаги, описывающие символ «доменного питания»; они представляют outputPowerCharacter поле состояния в массиве состояния электропитания домена питания.

    Возвращаемое значение

    Число состояния.

    Обсуждение

    Это происходит, когда домен питания изменяет управление состоянием, и управление питанием должно определить, к какому состоянию устройство способно в новом доменном состоянии. Большинство драйверов не должно реализовывать этот метод и может положиться на реализацию IOService по умолчанию. Реализация IOService сканирует массив состояния электропитания, ища самое высокое состояние чей inputPowerRequirement поле точно соответствует значение domainState параметр. Если более интеллектуальное определение требуется, сам драйвер должен реализовать метод и переопределить реализацию суперкласса.

  • Получает универсальное сообщение, освобожденное от присоединенного провайдера.

    Объявление

    C++

    virtual IOReturn message( UInt32 type, IOService *provider, void *argument = 0 );

    Параметры

    type

    Тип, определенный в IOMessage.h или определенный семьей провайдера.

    provider

    Провайдер, из которого происходит сообщение.

    argument

    Параметр, определенный семьей провайдера, не используемой IOService.

    Возвращаемое значение

    Код IOReturn определяется типом сообщения.

    Обсуждение

    Провайдер может передать сообщения через message метод его клиентам, сообщающим им об изменениях состояния, такой как kIOMessageServiceIsTerminated или kIOMessageServiceIsSuspended. Определенные сообщения определяются Набором I/O в IOMessage.h в то время как другие могут быть зависимым семьи. Этот метод реализован в клиенте для получения сообщений.

  • Отправляет универсальное сообщение присоединенному клиенту.

    Объявление

    C++

    virtual IOReturn messageClient( UInt32 messageType, OSObject *client, void *messageArgument = 0, vm_size_t argSize = 0 );

    Параметры

    messageType

    Тип, определенный в IOMessage.h или определенный семьей провайдера.

    client

    Клиент IOService для отправки сообщения.

    messageArgument

    Параметр, определенный семьей провайдера, не используемой IOService.

    argSize

    Указывает размер messageArgument, в байтах. Если argSize является ненулевым, messageArgument обрабатывается как указатель на argSize байты данных. Если argSize 0 (значение по умолчанию), messageArgument обрабатывается как ординал и переданный значением.

    Возвращаемое значение

    Код возврата от клиента передает вызов.

    Обсуждение

    Провайдер может передать сообщения через метод сообщения его клиентам, сообщающим им об изменениях состояния, такой как kIOMessageServiceIsTerminated или kIOMessageServiceIsSuspended. Определенные сообщения определяются Набором I/O в IOMessage.h в то время как другие могут быть зависимым семьи. Этот метод можно вызвать в провайдере, чтобы отправить сообщение указанному клиенту, который может быть полезен для переопределений.

  • Отправляет универсальное сообщение всем присоединенным клиентам.

    Объявление

    C++

    virtual IOReturn messageClients( UInt32 type, void *argument = 0, vm_size_t argSize = 0 );

    Параметры

    type

    Тип, определенный в IOMessage.h или определенный семьей провайдера.

    argument

    Параметр, определенный семьей провайдера, не используемой IOService.

    argSize

    Указывает размер параметра, в байтах. Если argSize является ненулевым, параметр обрабатывается как указатель на argSize байты данных. Если argSize 0 (значение по умолчанию), параметр обрабатывается как ординал и переданный значением.

    Возвращаемое значение

    Любой не -kIOReturnSuccess коды возврата, возвращенные клиентами, или kIOReturnSuccess если весь возврат kIOReturnSuccess.

    Обсуждение

    Провайдер может передать сообщения через метод сообщения его клиентам, сообщающим им об изменениях состояния, такой как kIOMessageServiceIsTerminated или kIOMessageServiceIsSuspended. Определенные сообщения определяются Набором I/O в IOMessage.h в то время как другие могут быть зависимым семьи. Этот метод можно вызвать в провайдере, чтобы отправить сообщение всем присоединенным клиентам через messageClient метод.

  • Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие имени IOService.

    Объявление

    C++

    static OSDictionary * nameMatching( const char *name, OSDictionary *table = 0 );

    Параметры

    name

    Имя службы, как струна до константы. Имя, соответствующее, успешно на объектах IOService, отвечающих успешно на IORegistryEntry::compareName метод.

    table

    Если нуль, nameMatching создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.

    Возвращаемое значение

    Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.

    Обсуждение

    Очень общее соответствие критерии объекта IOService основывается на своем имени. nameMatching создает соответствующий словарь, указывающий любой объект IOService, успешно реагирующий на IORegistryEntry:: метод compareName. Существующий словарь может быть передан в, когда соответствующие свойства будут добавлены к тому словарю вместо того, чтобы создать новый.

  • Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие имени IOService.

    Объявление

    C++

    static OSDictionary * nameMatching( const OSString *name, OSDictionary *table = 0 );

    Параметры

    name

    Имя службы, как OSString (который включает OSSymbol). Имя, соответствующее, успешно на объектах IOService, отвечающих успешно на IORegistryEntry::compareName метод.

    table

    Если нуль, nameMatching создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.

    Возвращаемое значение

    Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.

    Обсуждение

    Очень общее соответствие критерии объекта IOService основывается на своем имени. nameMatching создает соответствующий словарь, указывающий любой объект IOService, успешно реагирующий на IORegistryEntry:: метод compareName. Существующий словарь может быть передан в, когда соответствующие свойства будут добавлены к тому словарю вместо того, чтобы создать новый.

  • Говорит, что питание управляло драйвером, который изменила температура в тепловой зоне.

    Объявление

    C++

    virtual IOReturn newTemperature( long currentTemp, IOService *whichZone ) __attribute__((deprecated));

    Обсуждение

    Этот вызов не использован управлением питанием. Это не предназначается, чтобы быть вызванным или переопределенным.

  • Создает соединение для не клиента ядра.

    Объявление

    C++

    virtual IOReturn newUserClient( task_towningTask, void *securityID, UInt32type, OSDictionary *handler, IOUserClient **properties );

    Параметры

    owningTask

    Задача Маха клиента распараллеливает в процессе открытия пользовательского клиента. Обратите внимание на то, что в Mac OS X, каждый процесс основывается на задаче Маха и одном или более потоках Маха. Для получения дополнительной информации о составе задачи Маха и ее отношения с потоками Маха, см. Руководство по программированию Ядра.

    securityID

    Маркер, представляющий уровень доступа для задачи.

    type

    Постоянное указание типа соединения, которое будет создаваться, указанное вызывающей стороной IOServiceOpen, и интерпретировало только семьей.

    handler

    Экземпляр IOUserClient возражает для представления соединения, которое будет выпущено, когда соединение будет закрыто, или нуль, если не было открыто соединение.

    properties

    Словарь дополнительных свойств для соединения.

    Возвращаемое значение

    Код возврата, который будет пасоваться назад к вызывающей стороне IOServiceOpen.

    Обсуждение

    Не клиент ядра может запросить, чтобы соединение было открыто через библиотечную функцию IOServiceOpen, которая вызовет этот метод в объекте IOService. Правила и возможности пользовательских клиентов уровня являются зависимым семьи и используют функции класса IOUserClient для поддержки. Возвраты реализации IOSERVICE kIOReturnUnsupported, таким образом, любая семья, поддерживающая пользовательские клиенты, должна реализовать этот метод.

  • Позволяет подклассам настраивать неактивное поведение управления питанием.

    Объявление

    C++

    virtual SInt32 nextIdleTimeout( AbsoluteTimecurrentTime, AbsoluteTimelastActivity, unsigned intpowerState);

    Параметры

    currentTime

    Текущее время

    lastActivity

    Время последнего действия на этом устройстве

    powerState

    Текущее состояние электропитания устройства.

    Возвращаемое значение

    Возвращается в следующий раз, когда устройство должно бездействовать прочь (в секундах относительно текущего времени).

    Обсуждение

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

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

  • Запрашивает активный доступ к провайдеру.

    Объявление

    C++

    virtual bool open( IOService *forClient, IOOptionBits options = 0, void *arg = 0 );

    Параметры

    forClient

    Назначает клиент провайдера, запрашивающего открытое.

    options

    Опции для открытого. Семья провайдера может реализовать опции для открытого; IOService определяет только kIOServiceSeize запрашивать устройство быть снятым от его текущего владельца.

    Возвращаемое значение

    true если открытое было успешно; false иначе.

    Обсуждение

    IOService обеспечивает универсальную открытую и близкую семантику для отслеживания клиентов провайдера, установивших активный канал передачи данных. Использование open и близко, и правила относительно владения семья, определенная и определенная handleOpen и handleClose методами в провайдере. Некоторые семьи ограничат доступ к провайдеру на основе его открытого состояния.

  • Объявление

    C++

    virtual void PM_Clamp_Timer_Expired( void ) __attribute__((deprecated));

    Обсуждение

    Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

  • Объявление

    C++

    virtual void PM_idle_timer_expiration( void ) __attribute__((deprecated));

    Обсуждение

    Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

  • Инициализирует управление питанием для драйвера.

    Объявление

    C++

    virtual void PMinit( void );

    Обсуждение

    PMinit выделяет и инициализирует переменные экземпляра управления питанием, и это нужно вызвать прежде, чем получить доступ к тем переменным или вызвать методы управления питанием. Этот метод нужно вызвать в водительском start подпрограмма и должна быть соединена с вызовом к PMstop. Большинство вызовов к PMinit сопровождаются вызовами к joinPMtree и registerPowerDriver.

  • Остановите питание, управляющее драйвером.

    Объявление

    C++

    virtual void PMstop( void );

    Обсуждение

    Удаляет драйвер из плоскости питания, и остановите ее управление питанием. Этот метод синхронен против любых вызовов метода управления питанием (например. setPowerState или setAggressiveness), поэтому когда не будет вводиться этот метод возвраты, этому гарантируют те методы управления питанием. Драйвер не должен вызывать методы управления питанием после этого вызова. Вызов PMstop очищает для трех вызовов инициализации управления питанием: PMinit, joinPMtree, и registerPowerDriver.

  • Когда изменение состояния электропитания завершено, говорит драйвер.

    Объявление

    C++

    virtual void powerChangeDone( unsigned longstateNumber );

    Параметры

    stateNumber

    Число состояния в массиве состояния, от которого переключилось устройство.

    Обсуждение

    Управление питанием использует этот метод для информирования драйвера, когда изменение питания полностью сделано, когда все заинтересованные стороны подтвердили вызов powerStateDidChangeTo. Реализация по умолчанию этого метода является нулем; метод предназначается, чтобы быть переопределенным управляемыми драйверами разделенного на подклассы питания. Драйвер должен использовать этот метод, чтобы узнать, завершено ли изменение питания, которое это инициировало.

  • Позволяет драйверу отключать переопределение питания.

    Объявление

    C++

    IOReturn powerOverrideOffPriv( void );

    Возвращаемое значение

    Код возврата, который может быть проигнорирован вызывающей стороной.

    Обсуждение

    Когда драйвер включил переопределение через powerOverrideOnPriv, он может отключить его снова путем вызова этого метода в его суперклассе. Отключение переопределения возвращается к алгоритму по умолчанию для определения состояния электропитания устройства. Суперкласс теперь сохранит устройство в самом высоком состоянии требуемым changePowerStateTo, changePowerStateToPriv, и его дочерние элементы. Если водительское желаемое состояние электропитания будет отличаться от максимума управляемого водительского желания питания и детских желаний, выключение переопределения будет инициировать изменение питания.

  • Позволяет драйверу игнорировать свои детские запросы управления питанием и только использовать changePowerStateToPriv для определения его собственного состояния электропитания.

    Объявление

    C++

    IOReturn powerOverrideOnPriv( void );

    Возвращаемое значение

    Код возврата, который может быть проигнорирован вызывающей стороной.

    Обсуждение

    Управление питанием обычно сохраняет устройство в самом высоком состоянии требуемым его запросами через changePowerStateTo, changePowerStateToPriv, и его дочерними элементами. Однако драйвер может гарантировать более низкое состояние электропитания, чем иначе требуемый отдельно и его дочерние элементы, использующие powerOverrideOnPriv. Когда переопределение идет, управление питанием сохраняет состояние электропитания устройства в состоянии указанным changePowerStateToPriv. Включение переопределения будет инициировать изменение питания если водительское changePowerStateToPriv желаемое состояние электропитания отличается от максимума changePowerStateTo желаемое состояние электропитания и детские желания.

  • Сообщает заинтересованным сторонам, что устройство изменилось на различное состояние электропитания.

    Объявление

    C++

    virtual IOReturn powerStateDidChangeTo( IOPMPowerFlagscapabilities, unsigned longstateNumber, IOService *whatDevice );

    Параметры

    capabilities

    Флаги, описывающие возможность устройства в новом состоянии электропитания (они происходят из capabilityFlags поле нового состояния в массиве состояния электропитания).

    stateNumber

    Число состояния в массиве состояния, на который переключается устройство.

    whatDevice

    Указатель на изменяющийся драйвер. Это может использоваться драйвером, получающим уведомления изменения состояния электропитания для многократных устройств для различения их.

    Возвращаемое значение

    Возвраты драйвера IOPMAckImplied если это подготовилось к изменению питания, когда это возвращается. Если это начало подготавливаться, но не закончилось, это должно возвратить много микросекунд, который является верхним пределом времени, которое это должно будет закончить подготавливать. Затем когда это завершило свои приготовления, это должно вызвать acknowledgePowerChange.

    Обсуждение

    Управление питанием сообщает заинтересованным сторонам, что устройство изменилось на различное состояние электропитания. Заинтересованные стороны - те, которые зарегистрировались для этого уведомления через registerInterestedDriver. Если Вы вызвали registerInterestedDriver на управляемом драйвере питания Вы должны implemnt powerStateWillChangeTo и powerStateDidChangeTo получить уведомления. powerStateDidChangeTo вызывается в чистом и отдельном контексте потока. powerStateWillChangeTo вызывается, прежде чем переход состояния электропитания имеет место; powerStateDidChangeTo вызывается после того, как переход завершился.

  • Определяет, в каком состоянии электропитания устройство было бы для состояния домена данных полномочий.

    Объявление

    C++

    virtual unsigned long powerStateForDomainState( IOPMPowerFlagsdomainState );

    Параметры

    domainState

    Флаги, описывающие символ «доменного питания»; они представляют outputPowerCharacter поле состояния в массиве состояния электропитания домена питания.

    Возвращаемое значение

    Число состояния.

    Обсуждение

    Управление питанием вызывает драйвер с этим методом для обнаружения, в каком состоянии электропитания устройство было бы для состояния домена данных полномочий. Это происходит, когда домен питания изменяет управление состоянием, и управление питанием должно определить эффект изменения. Большинство драйверов не должно реализовывать этот метод и может положиться на реализацию IOService по умолчанию. Реализация IOService сканирует массив состояния электропитания, ища самое высокое состояние чей inputPowerRequirement поле точно соответствует значение domainState параметр. Если более интеллектуальное определение требуется, питание управляло, драйвер должен реализовать метод и переопределить реализацию суперкласса.

  • Сообщает заинтересованным сторонам, что устройство собирается изменить свое состояние электропитания.

    Объявление

    C++

    virtual IOReturn powerStateWillChangeTo( IOPMPowerFlagscapabilities, unsigned longstateNumber, IOService *whatDevice );

    Параметры

    capabilities

    Флаги, описывающие возможность устройства в новом состоянии электропитания (они происходят из capabilityFlags поле нового состояния в массиве состояния электропитания).

    stateNumber

    Число состояния в массиве состояния, на который переключается устройство.

    whatDevice

    Указатель на изменяющийся драйвер. Это может использоваться драйвером, получающим уведомления изменения состояния электропитания для многократных устройств для различения их.

    Возвращаемое значение

    Возвраты драйвера IOPMAckImplied если это подготовилось к изменению питания, когда это возвращается. Если это начало подготавливаться, но не закончилось, это должно возвратить много микросекунд, который является верхним пределом времени, которое это должно будет закончить подготавливать. Затем когда это завершило свои приготовления, это должно вызвать acknowledgePowerChange.

    Обсуждение

    Управление питанием сообщает заинтересованным сторонам, что устройство собирается измениться на различное состояние электропитания. Заинтересованные стороны - те, которые зарегистрировались для этого уведомления через registerInterestedDriver. Если Вы вызвали registerInterestedDriver на управляемом драйвере питания необходимо реализовать powerStateWillChangeTo и powerStateDidChangeTo для получения уведомлений. powerStateWillChangeTo вызывается в чистом и отдельном контексте потока. powerStateWillChangeTo вызывается, прежде чем переход состояния электропитания имеет место; powerStateDidChangeTo вызывается после того, как переход завершился.

  • Во время инстанцирования объекта IOService, зондирует соответствующую службу, чтобы видеть, может ли это использоваться.

    Объявление

    C++

    virtual IOService * probe( IOService *provider, SInt32 *score );

    Параметры

    provider

    Зарегистрированные IOService возражают, что соответствует индивидуальности драйвера соответствие словаря.

    score

    Указатель на тестовый счет формирователя тока, использующийся для упорядочивания многократных драйверов соответствия в той же категории соответствия. Это принимает значение по умолчанию к значению IOProbeScore свойство в таблице свойства драйверов, или kIODefaultProbeScore если ни один не указан. probe метод может измениться, счет для влияния запускают порядок.

    Возвращаемое значение

    Экземпляр IOService или нуль, когда зонд неуспешен. В почти всех случаях значение this возвращается на успехе. Если другой объект IOService возвращается, зондируемый экземпляр отсоединен и освобожден, и возвращенный экземпляр используется в его земельном участке для start.

    Обсуждение

    Процесс регистрации для объекта IOService (провайдер) включает инстанцирующие возможные клиенты драйвера. probe метод вызывают в клиентском экземпляре, чтобы проверить, что соответствующая служба может использоваться, прежде чем драйвер считается запущенным. Начиная с соответствия экранов много возможных провайдеров, во многих случаях probe метод можно оставить нереализованным подклассами IOService. Клиент уже привязан к провайдеру когда probe вызывается.

  • Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих IOService phandle соответствие.

    Объявление

    C++

    static OSDictionary * propertyMatching( const OSSymbol *key, const OSObject *value, OSDictionary *table = 0 );

    Параметры

    key

    phandle службы, как константа UInt32. Соответствие PHandle успешно на объектах IOService, успешно реагирующих на метод IORegistryEntry compareName.

    value

    phandle службы, как константа UInt32. Соответствие PHandle успешно на IOService's, которые успешно реагируют на метод IORegistryEntry compareName.

    table

    Если нуль, nameMatching создаст соответствующий словарь и возвратит ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.

    Возвращаемое значение

    Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.

    Обсуждение

    TODO очень общее соответствие критерии IOService основывается на своем имени. nameMatching создаст соответствующий словарь, указывающий любые IOService, успешно реагирующие на метод IORegistryEntry compareName. Существующий словарь может быть передан в, когда соответствующие свойства будут добавлены к тому словарю вместо того, чтобы создать новый.

  • Использует службу ресурса для публикации свойства.

    Объявление

    C++

    static void publishResource( const char *key, OSObject *value = 0 );

    Параметры

    key

    Ключ струны до, глобально идентифицирующий объект.

    The

    объект, который будет опубликован.

    Обсуждение

    Служба ресурса использует соответствие объекта IOService и уведомление, чтобы позволить объектам быть опубликованными и найденными любым клиентом Набора I/O глобальным именем. publishResource делает объект доступным для любого ожидающего его или ищущий его в будущем.

  • Использует службу ресурса для публикации свойства.

    Объявление

    C++

    static void publishResource( const OSSymbol *key, OSObject *value = 0 );

    Параметры

    key

    Ключ OSSymbol, глобально идентифицирующий объект.

    The

    объект, который будет опубликован.

    Обсуждение

    Служба ресурса использует соответствие IOSERVICE и уведомление, чтобы позволить объектам быть опубликованными и найденными любым клиентом Набора I/O глобальным именем. publishResource делает объект доступным для любого ожидающего его или ищущий его в будущем.

  • Позволяет объекту IOService зарегистрировать интерес к изменяющемуся состоянию электропитания управляемого питанием объекта IOService.

    Объявление

    C++

    IOPMPowerFlags registerInterestedDriver( IOService *theDriver );

    Параметры

    theDriver

    Драйвер интереса добавляет этот указатель на список заинтересованных драйверов. Это сообщает драйверам об этом списке прежде и после изменения питания.

    Возвращаемое значение

    Флаги, описывающие возможность устройства в его текущем состоянии электропитания. Если текущее состояние электропитания еще не определяется, нуль возвращается (дело обстоит так, когда драйвер еще не находится в иерархии домена питания или еще не полностью зарегистрировался в управлении питанием).

    Обсуждение

    Вызвать registerInterestedDriver на объекте IOService Вы интересуетесь получением сообщений состояния электропитания от и передаете указатель на заинтересованный драйвер (this) как параметр. Заинтересованный драйвер сохраняется, пока интерес питания не удален путем вызова deRegisterInterestedDriver. Заинтересованный драйвер должен переопределить powerStateWillChangeTo и powerStateDidChangeTo для получения этих сообщений изменения питания. Заинтересованные драйверы должны подтвердить изменения питания в powerStateWillChangeTo или powerStateDidChangeTo, или через возвращаемое значение или через более поздние вызовы к acknowledgePowerChange.

  • Регистрирует обработчика прерываний функции C для устройства, предоставляющего прерывания.

    Объявление

    C++

    virtual IOReturn registerInterrupt( int source, OSObject *target, IOInterruptAction handler, void *refCon = 0);

    Параметры

    source

    Индекс источника прерывания в устройстве.

    target

    Экземпляр объекта, который будет передан обработчику прерываний.

    handler

    Когда прерывание происходит, C функционируют, чтобы быть вызванными в основное время прерывания. Обработчик должен обработать прерывание путем очистки прерывания, или путем отключения источника.

    refCon

    Ссылочная константа для использования обработчика.

    Возвращаемое значение

    Код IOReturn.

    kIOReturnNoInterrupt если источник не допустим, возвращается; kIOReturnNoResources если прерывание уже имеет установленный обработчик, возвращается.

    Обсуждение

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

  • Ряд регистров состояний электропитания, которые поддерживает драйвер.

    Объявление

    C++

    virtual IOReturn registerPowerDriver( IOService *controllingDriver, IOPMPowerState *powerStates, unsigned longnumberOfStates );

    Параметры

    controllingDriver

    Указатель на драйвер вызова, обычно this.

    powerStates

    Определенный с помощью драйвера массив состояний электропитания, что поддержка драйвера и устройства. Состояния электропитания определяются в pwr_mgt/IOPMpowerState.h.

    numberOfStates

    Число состояний электропитания в массиве.

    Возвращаемое значение

    IOPMNoErr. Все ошибки регистрируются через kprintf.

    Обсуждение

    Драйвер определяет свой массив поддерживаемых состояний электропитания с управлением питанием в его инициализации управления питанием ( start подпрограмма). Если успешный, управление питанием вызовет драйвер, чтобы дать ему команду изменять свое состояние электропитания через setPowerState. Большинство драйверов не должно переопределять registerPowerDriver. Кусок может переопределить registerPowerDriver если это должно расположить свои дочерние элементы в плоскости питания по-другому, чем размещение по умолчанию, но это редко.

  • Запускает процесс регистрации для недавно обнаруженного объекта IOService.

    Объявление

    C++

    virtual void registerService( IOOptionBits options = 0 );

    Параметры

    options

    Нулевая маска опций по умолчанию рекомендуется и должна использоваться в большинстве случаев. Процесс регистрации является обычно асинхронным с возможным зондированием драйвера и уведомлением, происходящим некоторое время спустя. kIOServiceSynchronous может быть передан для выполнения соответствия и процесса уведомления для в настоящее время зарегистрированных клиентов прежде, чем возвратиться к вызывающей стороне.

    Обсуждение

    Эта функция позволяет подклассу IOService быть опубликованным и сделанным доступный для возможных клиентов путем запуска процесса регистрации и поставки уведомлений зарегистрированным клиентам. Объект должен быть полностью установкой и готовый к полевым запросам от клиентов прежде registerService вызывается.

  • Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие IORegistryEntryID.

    Объявление

    C++

    static OSDictionary * registryEntryIDMatching( uint64_t entryID, OSDictionary *table = 0 );

    Параметры

    name

    ID службы. Соответствие успешно на объекте IOService, которые возвращают тот ID из IORegistryEntry::getRegistryEntryID() метод.

    table

    Если нуль, registryEntryIDMatching создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.

    Возвращаемое значение

    Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.

    Обсуждение

    registryEntryIDMatching создает соответствующий словарь, указывающий объект IOService с присвоенным ключом реестра ID (возвращенный IORegistryEntry::getRegistryEntryID()). Существующий словарь может быть передан в, когда соответствующие свойства будут добавлены к тому словарю вместо того, чтобы создать новый.

  • Сообщает, что питание управляло драйвером, что исчезает одна из его плоскости питания childen.

    Объявление

    C++

    virtual IOReturn removePowerChild( IOPowerConnection *theChild );

    Обсуждение

    Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

  • Говорит драйверу корректировать свое состояние электропитания.

    Объявление

    C++

    virtual IOReturn requestPowerDomainState( IOPMPowerFlags desiredState, IOPowerConnection *whichChild, unsigned long specificationFlags );

    Обсуждение

    Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

  • Запросы, что аппаратные средства быть повторно отсканированным для устройств.

    Объявление

    C++

    virtual IOReturn requestProbe( IOOptionBitsoptions );

    Параметры

    options

    Семья определила опции, не интерпретируемые IOService.

    Возвращаемое значение

    Код IOReturn.

    Обсуждение

    Для семейств шины, обычно не обнаруживающих дополнение устройства или удаление, этот метод представляет внешний запрос (например, из служебного приложения), чтобы повторно отсканировать и опубликовать или удалить найденный устройствами.

  • Передает завершение штабель.

    Объявление

    C++

    virtual bool requestTerminate( IOService *provider, IOOptionBitsoptions );

    Параметры

    provider

    Завершенный провайдер этого объекта.

    options

    Опции первоначально передали оконечному, плюс kIOServiceRecursing.

    Возвращаемое значение

    true если этот объект должен быть завершен теперь, когда его провайдер был.

    Обсуждение

    Когда IOService сделан неактивным, поведение по умолчанию состоит в том, чтобы также сделать любой из своих клиентов, имеющих его как их единственного провайдера, также неактивного, таким образом рекурсивно вызывая завершение штабель драйвера. Этот метод позволяет объекту IOService переопределить это поведение. Возврат true от этого метода, когда передано справедливый завершенный провайдер заставит клиент также быть завершенным.

  • Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие службы ресурса.

    Объявление

    C++

    static OSDictionary * resourceMatching( const char *name, OSDictionary *table = 0 );

    Параметры

    name

    Имя ресурса, как струна до константы. Когда объект тем именем был опубликован с, ресурс, соответствующий, успешен publishResource метод.

    table

    Если нуль, resourceMatching создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.

    Возвращаемое значение

    Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.

    Обсуждение

    IOService поддерживает службу IOResources ресурса, позволяющую объектам быть опубликованными и найденными глобально в Наборе I/O на основе имени, с помощью стандартного IOService вызовы уведомления и соответствие.

  • Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие службы ресурса.

    Объявление

    C++

    static OSDictionary * resourceMatching( const OSString *name, OSDictionary *table = 0 );

    Параметры

    name

    Имя ресурса, как OSString (который включает OSSymbol). Когда объект тем именем был опубликован с, ресурс, соответствующий, успешен publishResource метод.

    table

    Если нуль, resourceMatching создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.

    Возвращаемое значение

    Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.

    Обсуждение

    IOService поддерживает службу IOResources ресурса, позволяющую объектам быть опубликованными и найденными глобально в Наборе I/O на основе имени, с помощью стандартного IOService вызовы уведомления и соответствие.

  • Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие класса IOService.

    Объявление

    C++

    static OSDictionary * serviceMatching( const char *className, OSDictionary *table = 0 );

    Параметры

    className

    Имя класса, как струна до константы. Класс, соответствующий, успешен на объектах IOService этого класса или любого подкласса.

    table

    Если нуль, serviceMatching создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.

    Возвращаемое значение

    Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.

    Обсуждение

    Очень общее соответствие критерии объекта IOService основывается на своем классе. serviceMatching создает соответствующий словарь, указывающий любой объект IOService класса или его подклассы. Класс указан по имени, и существующий словарь может быть передан в, когда соответствующие свойства будут добавлены к тому словарю вместо того, чтобы создать новый.

  • Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие класса IOService.

    Объявление

    C++

    static OSDictionary * serviceMatching( const OSString *className, OSDictionary *table = 0 );

    Параметры

    className

    Имя класса, как OSString (который включает OSSymbol). Класс, соответствующий, успешен на объектах IOService этого класса или любого подкласса.

    table

    Если нуль, serviceMatching создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.

    Возвращаемое значение

    Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.

    Обсуждение

    Очень общее соответствие критерии объекта IOService основывается на своем классе. serviceMatching создает соответствующий словарь, указывающий любой IOService класса или его подклассы. Класс указан по имени, и существующий словарь может быть передан в, когда соответствующие свойства будут добавлены к тому словарю вместо того, чтобы создать новый.

  • Широковещательно передает фактор агрессивности от родителя драйвера к драйверу.

    Объявление

    C++

    virtual IOReturn setAggressiveness( unsigned longtype, unsigned longnewLevel );

    Параметры

    type

    Тип фактора агрессивности, такой как kPMMinutesToDim, kPMMinutesToSpinDown, kPMMinutesToSleep, и kPMPowerSource. (Факторы агрессивности определяются в pwr_mgt/IOPM.h.)

    newLevel

    Новое значение фактора агрессивности.

    Возвращаемое значение

    IOPMNoErr.

    Обсуждение

    Реализация setAggressiveness для получения уведомления, когда «Агрессивность агрессивности факторами является свободный набор переменных управления питанием, содержащих значения для системного тайм-аута сна выведите на экран тайм-аут сна, является ли система на батарее или AC и других функциях управления питанием. Существует несколько факторов агрессивности, которые могут быть широковещательно переданы, и драйвер может принять меры на том, какой бы ни факторы применяются к нему. Драйвер, присоединившийся к плоскости питания через joinPMtree, получит setAgressiveness вызовы, когда изменяются факторы агрессивности. Драйвер может переопределить этот вызов, если это должно сделать что-то с новым фактором (таким как изменение его неактивный тайм-аут). Если переопределено, драйвер должен вызвать свой суперкласс setAgressiveness метод в его собственном setAgressiveness реализация. Большинство драйверов не должно реализовывать setAgressiveness.

  • Устанавливает массив объектов IODeviceMemory, представляющих диапазоны устройства с отображенной памятью.

    Объявление

    C++

    virtual void setDeviceMemory( OSArray *array );

    Параметры

    array

    OSArray объектов IODeviceMemory или нуль, если ни один не доступен. Массив будет сохранен объектом.

    Обсуждение

    Этот метод устанавливает массив объектов IODeviceMemory, представляющих диапазоны физической памяти, выделенные устройству с отображенной памятью.

  • Наборы или изменения неактивный период таймера.

    Объявление

    C++

    virtual IOReturn setIdleTimerPeriod( unsignedperiod );

    Параметры

    period

    Желаемый неактивный период таймера в секундах.

    Возвращаемое значение

    kIOReturnSuccess на успех; код ошибки Набора I/O иначе.

    Обсуждение

    Драйвер с помощью определения безделья, предоставленного IOService, вызывает свой суперкласс с этим методом, чтобы установить или изменить неактивный период таймера. См. activityTickle для описания этого типа определения безделья.

  • Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

    Объявление

    C++

    virtual IOReturn setPowerParent( IOPowerConnection *parent, bool stateKnown, IOPMPowerFlags currentState ) __attribute__((deprecated));

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

    Объявление

    C++

    virtual IOReturn setPowerState( unsigned longpowerStateOrdinal, IOService *whatDevice );

    Параметры

    powerStateOrdinal

    Число в массиве состояния электропитания состояния драйвер проинструктировано для переключения на.

    whatDevice

    Указатель на объект управления питанием, зарегистрировавшийся для управления питанием для этого устройства. В большинстве случаев, whatDevice будет равно Вашему водительскому собственному this указатель.

    Возвращаемое значение

    Драйвер должен возвратиться IOPMAckImplied если это соответствовало запросу, когда это возвращается. Иначе, если это запустило процесс изменения состояния электропитания, но не закончило его, драйвер должен возвратить много микросекунд, который является верхним пределом времени, которое это должно будет закончить. Затем когда это завершило выключатель питания, это должно вызвать acknowledgeSetPowerState.

    Обсуждение

    Питание управляло, драйвер должен переопределить setPowerState принять участие в управлении питанием системы. После того, как драйвер регистрируется в управлении питанием, системном использовании setPowerState выключать устройство и на для системного сна и следа. Вызовы к PMinit и registerPowerDriver позволяют управлению питанием изменить использование состояния электропитания устройства setPowerState. setPowerState вызывается в чистом и отдельном контексте потока.

  • Во время инстанцирования объекта IOService, запускает объект IOService, выбранный для работы провайдера.

    Объявление

    C++

    virtual bool start( IOService *provider );

    Возвращаемое значение

    true если запуск был успешен; false иначе (который заставит экземпляр быть отсоединенным и обычно освобождаться).

    Обсуждение

    start метод экземпляра IOService вызывает его провайдер, когда он был выбран (вследствие его тестового счета и категории соответствия) как побеждающий клиент. Клиент уже привязан к провайдеру когда start вызывается.

    Реализации start должен вызвать start на их суперклассе в надлежащей точке. Если реализация start уже вызвал super::start но впоследствии решает, что это перестанет работать, это должно вызвать super::stop сбалансировать предшествующий вызов к super::start и предотвратите ссылочные утечки.

  • Объявление

    C++

    void start_PM_idle_timer( void );

    Обсуждение

    Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

  • Во время завершения IOService метод остановки вызывают в его клиентах, прежде чем они будут отсоединены, и он уничтожается.

    Объявление

    C++

    virtual void stop( IOService *provider );

    Обсуждение

    Процесс завершения для IOService (провайдер) вызовет остановку в каждом из ее клиентов, после того, как они закрыли провайдера, если у них был он открытый, или сразу после завершения.

  • Предоставляет благоприятную для программиста строку от кода IOReturn.

    Объявление

    C++

    virtual const char * stringFromReturn( IOReturnrtn );

    Параметры

    rtn

    Код IOReturn.

    Возвращаемое значение

    Указатель на постоянную строку или нуль, если код возврата неизвестен.

    Обсуждение

    Строки доступны для стандартных кодов возврата в IOReturn.h в IOService, в то время как подклассы могут реализовать этот метод для интерпретации зависимых кодов возврата семьи.

  • Говорит каждому драйверу в плоскости питания, что просыпается система.

    Объявление

    C++

    virtual IOReturn systemWake( void ) __attribute__((deprecated));

    Обсуждение

    Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

  • Уведомляет элементы плоскости питания завершения работы системы и перезапуска.

    Объявление

    C++

    virtual void systemWillShutdown( IOOptionBitsspecifier );

    Параметры

    specifier

    kIOMessageSystemWillPowerOff или kIOMessageSystemWillRestart.

    Обсуждение

    Эта функция вызвана для всех элементов плоскости питания в порядке листа к корню. Если подкласс должен ожидать незаконченного I/O, то вызов к systemWillShutdown должен быть отложен, пока I/O не завершается.

    Любое питание управляло драйвером (который вызвал joinPMtree для присоединения к плоскости питания), заинтересованный принятием мер при завершении работы системы, или перезапуск должен переопределить этот метод.

  • Предупреждает драйвер к критической температуре в некоторой тепловой зоне.

    Объявление

    C++

    virtual IOReturn temperatureCriticalForZone( IOService *whichZone ) __attribute__((deprecated));

    Обсуждение

    Этот вызов не использован управлением питанием. Это не предназначается, чтобы быть вызванным или переопределенным.

  • Драйвер вызывает этот метод для содержания себя в самом высоком состоянии электропитания, пока это не имеет дочерние элементы.

    Объявление

    C++

    IOReturn temporaryPowerClampOn( void );

    Возвращаемое значение

    Код возврата, который может быть проигнорирован вызывающей стороной.

    Обсуждение

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

  • Заставляет IOService возразить неактивный и начинает его уничтожение.

    Объявление

    C++

    virtual bool terminate( IOOptionBits options = 0 );

    Параметры

    options

    В большинстве случаев никакие опции не необходимы. kIOServiceSynchronous может быть передан причине terminate для не возврата до, служба завершена.

    Обсуждение

    Регистрация объекта IOService сообщает возможным клиентам о своем существовании и инстанцирует драйверов, которые могут использоваться с нею; terminate включает противоположный процесс информирования клиентов, что объект IOService больше не в состоянии использоваться и будет уничтожен. По умолчанию, если у какого-либо клиента есть открытая служба, terminate сбои. Если kIOServiceRequired флаг передается, однако, terminate будет успешно, хотя далее развиваются в уничтожении объекта IOService, не продолжится, пока последний клиент не закрыл его. Служба будет сделана неактивной после успешного завершения, и все его клиенты будут уведомлены через их метод сообщения с сообщением типа kIOMessageServiceIsTerminated. Оба этих действия имеют место на потоке вызывающей стороны. После того, как объект IOService сделан неактивным, далее соответствуя, или вызовы присоединения перестанут работать на нем. Каждому клиенту призвали его метод остановки их завершение неактивного объекта IOService, или после его завершения, если у них нет его открытым. После stop, отсоединение вызывают в каждом клиенте. Когда все клиенты были отсоединены, завершить метод вызывают в неактивной службе. Процесс завершения является по сути асинхронным, потому что он будет задержан, пока все клиенты не приняли решение закрыться.

  • Передает завершение штабель.

    Объявление

    C++

    virtual bool terminateClient( IOService *client, IOOptionBitsoptions );

    Параметры

    client

    Клиент завершенного провайдера.

    options

    Опции первоначально передали оконечному, плюс kIOServiceRecursing.

    Возвращаемое значение

    результат оконечного запроса на клиенте.

    Обсуждение

    Когда объект IOService сделан неактивным, поведение по умолчанию состоит в том, чтобы также сделать любой из своих клиентов, имеющих его как их единственного неактивного провайдера, таким образом рекурсивно вызывая завершение штабель драйвера. Этот метод позволяет завершенному объекту IOService переопределить это поведение. Обратите внимание на то, что клиент может также переопределить это поведение путем переопределения его оконечного метода.

  • Разблокировал IOService obkect после успешного lockForArbitration.

    Объявление

    C++

    virtual void unlockForArbitration( void );

    Обсуждение

    Предоставленный эксклюзивный доступ потока к объекту IOService должен выпустить его с unlockForArbitration.

  • Удаляет обработчика прерываний функции C для устройства, предоставляющего аппаратные прерывания.

    Объявление

    C++

    virtual IOReturn unregisterInterrupt( intsource);

    Параметры

    source

    Индекс источника прерывания в устройстве.

    Возвращаемое значение

    Код IOReturn (kIOReturnNoInterrupt возвращается, если источник не допустим).

    Обсуждение

    Этот метод удаляет обработчика прерываний функции C, ранее установленного с registerInterrupt.

  • запросите текущие данные для указанных каналов

    Объявление

    C++

    virtual IOReturn updateReport( IOReportChannelList *channels, IOReportUpdateActionaction, void *result, void *destination);

    Параметры

    channels

    - каналы, которые будут обновлены

    action

    - тип/стиль обновления

    result

    - возвращенные подробные данные о том, что было обновлено

    destination

    - место назначения для этого (специфичного для действия) обновления

  • Ожидает соответствия к службе, которая будет опубликована.

    Объявление

    C++

    static IOService * waitForMatchingService( OSDictionary *matching, uint64_t timeout = timeout);

    Параметры

    matching

    Соответствующий словарь, описывающий желаемый объект IOService. (Не использует ссылку соответствующего словаря - отличается от waitForService (), который действительно использует ссылку на соответствующем словаре.)

    timeout

    Максимальное время для ожидания в наносекундах. Значение по умолчанию должно ожидать навсегда.

    Возвращаемое значение

    Опубликованный объект IOService соответствие предоставленного словаря. waitForMatchingService возвращает ссылку на IOService, который должен быть выпущен вызывающей стороной. (Отличается от waitForService (), который не сохраняет возвращенный объект.)

    Обсуждение

    Обеспечивает метод ожидания объекта IOService соответствие предоставленного словаря соответствия, который будет зарегистрирован и полностью соответствующим.

  • Осуждаемое использование waitForMatchingService (). Ожидает соответствия к службе, которая будет опубликована.

    Объявление

    C++

    static IOService * waitForService( OSDictionary *matching, mach_timespec_t *timeout = 0);

    Параметры

    matching

    Соответствующий словарь, описывающий желаемый объект IOService. waitForService использует одну ссылку соответствующего словаря.

    timeout

    Максимальное время для ожидания.

    Возвращаемое значение

    Опубликованный объект IOService соответствие предоставленного словаря.

    Обсуждение

    Обеспечивает метод ожидания объекта IOService соответствие предоставленного словаря соответствия, который будет зарегистрирован и полностью соответствующим.

  • Ожидает объекта IOService busyState быть нулем.

    Объявление

    C++

    IOReturn waitQuiet( uint64_t timeout = timeout);

    Параметры

    timeout

    Максимальное время для ожидания в наносекундах. Значение по умолчанию должно ожидать навсегда.

    Возвращаемое значение

    Если примитивы синхронизации Маха перестали работать, возвращает код ошибки kIOReturnTimeout, или kIOReturnSuccess.

    Обсуждение

    Блокирует вызывающую сторону, пока объект IOService не занят.

  • Передает завершение штабель.

    Объявление

    C++

    virtual bool willTerminate( IOService *provider, IOOptionBitsoptions );

    Параметры

    provider

    Завершенный провайдер этого объекта.

    options

    Опции первоначально передали оконечному.

    Возвращаемое значение

    true.

    Обсуждение

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

  • Сообщает управлению питанием, какой объект IOService является корнем плоскости питания.

    Объявление

    C++

    virtual IOReturn youAreRoot( void ) __attribute__((deprecated));

    Обсуждение

    Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.

Типы данных

  • Объявление

    C++

    struct ExpansionData { };

    Обсуждение

    Эта структура будет использоваться для расширения capablilties этого класса в будущем.

Переменные экземпляра

  • Зарезервированный для будущего использования. (Только внутреннее использование)

    Объявление

    C++

    ExpansionData * reserved;