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
метод. Суперкласс реализация IOServiceactivityTickle
ничего не делает сkIOPMSubclassPolicy
параметр. -
Добавляет свойство соответствия расположения к существующему словарю.
Объявление
C++
static OSDictionary * addLocation( OSDictionary *
table
);Параметры
table
Соответствующие свойства добавляются к указанному словарю, который должен быть ненулевым.
Возвращаемое значение
Создаваемый словарь соответствия расположения возвращается на успехе или нуле при отказе.
Обсуждение
Эта функция создает соответствие свойств, указывающих расположение объекта IOService как встроенный словарь соответствия. Это соответствие будет успешно на объекте IOService, присоединившем к объекту IOService, соответствующему этот словарь соответствия расположения.
-
Добавляет постоянный обработчик уведомления, который будет уведомлен относительно событий IOService.
Объявление
C++
static IONotifier * addMatchingNotification( const OSSymbol *
type
, OSDictionary *matching
, IOServiceMatchingNotificationHandlerhandler
, 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
, IOServiceNotificationHandlerhandler
, 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( SInt32
delta
);Параметры
delta
Дельта, которая будет применена к объекту IOService
busyState
.Обсуждение
Применяет дельту к объекту IOService
busyState
. Изменение вbusyState
к или от нуля изменит провайдера объекта IOServicebusyState
одним (в том же направлении). -
Присоединяет клиент 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
, boolwaitForFunction
, void *param1
, void *param2
, void *param3
, void *param4
);Параметры
functionName
Имя функции, которую вызовут. Когда
functionName
струна до,callPlatformFunction
преобразовывает струну до в OSSymbol и вызывает версию OSSymbolcallPlatformFunction
. Этот процесс может блокировать и не должен использоваться от контекста прерывания.waitForFunction
Если
true
,callPlatformFunction
не возвратится, пока функция не была вызвана.Возвращаемое значение
Код IOReturn;
kIOReturnSuccess
если функция успешно выполнялась,kIOReturnUnsupported
если не могла бы быть найдена служба для выполнения функции. Другие коды возврата могут быть возвращены функцией.Обсуждение
Эксперт по платформе или другие драйверы могут реализовать различные функции для управления аппаратными функциями.
callPlatformFunction
позволяет любому объекту IOService получить доступ к этим функциям. ОбычноcallPlatformFunction
вызывается на провайдере службы. Провайдер обслуживает запрос или передает его его провайдеру. IOPlatformExpert системы разделяют на подклассы функции выгод, о которых это знает и перенаправляет их в другие части плоскости службы. Если подкласс IOPlatformExpert не может выполнить функцию, базовый класс вызывают. Базовый класс IOPlatformExpert пытается найти, что служба выполняет функцию путем поиска имени функции в пространстве имен IOResources. Служба может опубликовать использование службыpublishResource(functionName, this)
. Если никакая служба, как не могут находить, выполняет функцию, ошибка возвращается. -
Заставляет прерывание устройства происходить.
Объявление
C++
virtual IOReturn causeInterrupt( int
source
);Параметры
source
Индекс источника прерывания в устройстве.
Возвращаемое значение
Код IOReturn (
kIOReturnNoInterrupt
возвращается, если источник не допустим).Обсуждение
Эмулирует аппаратное прерывание, чтобы быть вызванным от уровня задачи.
-
Устанавливает водительское состояние электропитания.
Объявление
C++
IOReturn changePowerStateTo( unsigned long
ordinal
);Параметры
ordinal
Число желаемого состояния электропитания в массиве состояния электропитания.
Возвращаемое значение
Код возврата, который может быть проигнорирован вызывающей стороной.
Обсуждение
Эта функция является одним из нескольких, которые используются для установки водительского состояния электропитания. При большинстве обстоятельств, однако, необходимо вызвать changePowerStateToPriv вместо этого. Вызовы к
changePowerStateTo
,changePowerStateToPriv
, и водительское питание дочерние элементы все влияние состояние электропитания драйвера. По устаревшим причинам проекта у них есть перекрывающаяся функциональность. Несмотря на то, что необходимо вызватьchangePowerStateToPriv
для изменения состояния электропитания устройства Вы, возможно, должны были бы вызватьchangePowerStateTo
при следующих обстоятельствах:Если драйвер будет использовать
changePowerStateToPriv
для изменения его состояния электропитания это должно вызватьchangePowerStateTo(0)
вstart
подпрограмма для устранения влиянияchangePowerStateTo
имеет на вычислениях состояния электропитания.Вызвать
changePowerStateTo
в сочетании с setIdleTimerPeriod и activityTickle для бездействия драйвера в состояние низкой мощности. Для драйвера с 3 состояниями электропитания, например,changePowerStateTo(1)
устанавливает минимальный уровень состояния электропитания 1, такой, что неактивный период таймера может не установить питание Вашего устройства, немного понижаются, чем состояние 1.
-
Говорит водительскому суперклассу изменять состояние электропитания своего устройства.
Объявление
C++
IOReturn changePowerStateToPriv( unsigned long
ordinal
);Параметры
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
для каждого ключа возвращается успех; иначе отказ. -
compareProperty (OSDictionary *, символ константы *) - compareProperty (OSDictionary *, символ константы *)
Сравнивает свойство в соответствующем словаре с таблицей свойства объекта IOService.
Объявление
C++
virtual bool compareProperty( OSDictionary *
matching
, const char *key
);Параметры
matching
Соответствующий словарь, который должен быть ненулевым.
key
Ключ словаря указание свойства, которое будет сравнено как струна до.
Возвращаемое значение
true
если свойство не существует в соответствующей таблице. Если свойство существует в соответствующем словаре, но не таблице свойства IOService, отказ возвращается. Иначе результат вызова свойства из соответствующего словаряisEqualTo
метод со свойством IOService как параметр возвращается.Обсуждение
Это - функция помощника для помощи в реализации matchPropertyTable. Если свойство, указанное
key
существует в соответствующем словаре, это по сравнению со свойством того же имени в таблице свойства объекта IOService. Сравнение выполняется сisEqualTo
метод. Если свойство не существует в соответствующей таблице, успех возвращается. Если свойство существует в соответствующем словаре, но не таблице свойства IOService, отказ возвращается. -
compareProperty (OSDictionary *, константа OSString *) - compareProperty (OSDictionary *, константа OSString *)
Сравнивает свойство в соответствующем словаре с таблицей свойства объекта 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( int
source
);Параметры
source
Индекс источника прерывания в устройстве.
Возвращаемое значение
Код IOReturn (
kIOReturnNoInterrupt
возвращается, если источник не допустим).Обсуждение
Если процедура прерывания будет работать, то вызов блокирует, пока подпрограмма не завершается. Это - ответственность вызывающей стороны отслеживать разрешать состояние источника прерывания.
-
Включает прерывание устройства.
Объявление
C++
virtual IOReturn enableInterrupt( int
source
);Параметры
source
Индекс источника прерывания в устройстве.
Возвращаемое значение
Код IOReturn (
kIOReturnNoInterrupt
возвращается, если источник не допустим).Обсуждение
Это - ответственность вызывающей стороны отслеживать разрешать состояние источника прерывания.
-
Переводит код IOReturn в BSD
errno
.Объявление
C++
virtual int errnoFromReturn( IOReturn
rtn
);Параметры
rtn
Код IOReturn.
Возвращаемое значение
BSD
errno
илиEIO
если неизвестный.Обсуждение
BSD определяет его собственные коды возврата для его функций в
sys/errno.h
, и семьи I/O Kit, возможно, должны предоставить совместимые результаты в контейнерах BSD. Результаты доступны для стандартных кодов возврата вIOReturn.h
в IOService, в то время как подклассы могут реализовать этот метод для интерпретации зависимых кодов возврата семьи. -
Завершает уничтожение объекта IOService.
Объявление
C++
virtual bool finalize( IOOptionBits
options
);Параметры
options
Опции, переданные оконечному методу объекта IOService, передаются
finalize
.Возвращаемое значение
true
.Обсуждение
finalize
метод вызывают в неактивном (т.е. завершают), объект IOService после того, как отсоединился последний клиент. Реализация IOSERVICE вызовет остановку, близко, и отсоединится на каждом провайдере. Когдаfinalize
возвраты, объект сохраняет количество, не будет иметь никаких ссылок сгенерированными процессом регистрации IOSERVICE. -
Освобождает структуры данных, выделенные, когда управление питанием было инициализировано на этой службе.
Объявление
C++
virtual void free(
void
); -
Возвращает текущее значение агрессивности для данного типа.
Объявление
C++
virtual IOReturn getAggressiveness( unsigned long
type
, unsigned long *currentLevel
);Параметры
type
Фактор агрессивности для запросов.
currentLevel
По успешному возврату, содержит значение фактора агрессивности
type
.Возвращаемое значение
kIOReturnSuccess
на успех; код ошибки Набора I/O иначе. -
Возвраты
busyState
из объекта IOService.Объявление
C++
virtual UInt32 getBusyState(
void
);Возвращаемое значение
busyState
значение.Обсуждение
Много действий в IOService являются асинхронными. Когда регистрация, соответствие или завершение происходят на объекте IOService,
busyState
увеличен одним. Изменение вbusyState
к или от нуля также изменяет провайдера объекта IOServicebusyState
одним, что означает, что объект 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 int
index
);Параметры
index
Индекс в массив диапазонов присвоился к устройству.
Возвращаемое значение
Указатель на экземпляр IODeviceMemory или нуль, если индекс вне доступного количества. IODeviceMemory сохраняется провайдером, так допустимо, в то время как присоединено, или в то время как существуют любые отображения к нему. Это не должно быть выпущено вызывающей стороной. См. также mapDeviceMemoryWithIndex, который создает отображение памяти устройства.
Обсуждение
Этот метод возвращает указатель на экземпляр IODeviceMemory для диапазона физической памяти в данном индексе для устройства с отображенной памятью.
-
Возвращает тип прерывания, используемого для устройства, предоставляющего аппаратные прерывания.
Объявление
C++
virtual IOReturn getInterruptType( int
source
, 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
, IOOptionBitsoptions
, void *arg
);Параметры
forClient
Назначает клиент провайдера, запрашивающего открытое.
options
Опции для открытого, может быть интерпретирован конструктором
handleOpen
.Возвращаемое значение
true
если открытое было успешно;false
иначе.Обсуждение
IOService вызывает этот метод в своих подклассах в ответ на открытый метод, таким образом, подкласс может реализовать запрос. Реализация по умолчанию обеспечивает единственный доступ владельца к объекту IOService через
open
. Объект заблокирован через lockForArbitration преждеhandleOpen
вызывается. -
Определяет, какое состояние электропитания устройство находится в учитывая текущее состояние домена питания.
Объявление
C++
virtual unsigned long initialPowerStateForDomainState( IOPMPowerFlags
domainState
);Параметры
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 int
index
, 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( IOPMPowerFlags
domainState
);Параметры
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 метод. -
nameMatching (символ константы *, OSDictionary *) - nameMatching (символ константы *, OSDictionary *)
Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие имени IOService.
Объявление
C++
static OSDictionary * nameMatching( const char *
name
, OSDictionary *table = 0 );Параметры
name
Имя службы, как струна до константы. Имя, соответствующее, успешно на объектах IOService, отвечающих успешно на
IORegistryEntry::compareName
метод.table
Если нуль,
nameMatching
создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.Возвращаемое значение
Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.
Обсуждение
Очень общее соответствие критерии объекта IOService основывается на своем имени.
nameMatching
создает соответствующий словарь, указывающий любой объект IOService, успешно реагирующий на IORegistryEntry:: метод compareName. Существующий словарь может быть передан в, когда соответствующие свойства будут добавлены к тому словарю вместо того, чтобы создать новый. -
nameMatching (константа OSString *, OSDictionary *) - nameMatching (константа OSString *, OSDictionary *)
Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие имени 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_t
owningTask
, 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( AbsoluteTime
currentTime
, 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 long
stateNumber
);Параметры
stateNumber
Число состояния в массиве состояния, от которого переключилось устройство.
Обсуждение
Управление питанием использует этот метод для информирования драйвера, когда изменение питания полностью сделано, когда все заинтересованные стороны подтвердили вызов powerStateDidChangeTo. Реализация по умолчанию этого метода является нулем; метод предназначается, чтобы быть переопределенным управляемыми драйверами разделенного на подклассы питания. Драйвер должен использовать этот метод, чтобы узнать, завершено ли изменение питания, которое это инициировало.
-
Позволяет драйверу отключать переопределение питания.
Объявление
C++
IOReturn powerOverrideOffPriv(
void
);Возвращаемое значение
Код возврата, который может быть проигнорирован вызывающей стороной.
Обсуждение
Когда драйвер включил переопределение через powerOverrideOnPriv, он может отключить его снова путем вызова этого метода в его суперклассе. Отключение переопределения возвращается к алгоритму по умолчанию для определения состояния электропитания устройства. Суперкласс теперь сохранит устройство в самом высоком состоянии требуемым
changePowerStateTo
,changePowerStateToPriv
, и его дочерние элементы. Если водительское желаемое состояние электропитания будет отличаться от максимума управляемого водительского желания питания и детских желаний, выключение переопределения будет инициировать изменение питания. -
Позволяет драйверу игнорировать свои детские запросы управления питанием и только использовать changePowerStateToPriv для определения его собственного состояния электропитания.
Объявление
C++
IOReturn powerOverrideOnPriv(
void
);Возвращаемое значение
Код возврата, который может быть проигнорирован вызывающей стороной.
Обсуждение
Управление питанием обычно сохраняет устройство в самом высоком состоянии требуемым его запросами через changePowerStateTo, changePowerStateToPriv, и его дочерними элементами. Однако драйвер может гарантировать более низкое состояние электропитания, чем иначе требуемый отдельно и его дочерние элементы, использующие
powerOverrideOnPriv
. Когда переопределение идет, управление питанием сохраняет состояние электропитания устройства в состоянии указаннымchangePowerStateToPriv
. Включение переопределения будет инициировать изменение питания если водительскоеchangePowerStateToPriv
желаемое состояние электропитания отличается от максимумаchangePowerStateTo
желаемое состояние электропитания и детские желания. -
Сообщает заинтересованным сторонам, что устройство изменилось на различное состояние электропитания.
Объявление
C++
virtual IOReturn powerStateDidChangeTo( IOPMPowerFlags
capabilities
, unsigned longstateNumber
, IOService *whatDevice
);Параметры
capabilities
Флаги, описывающие возможность устройства в новом состоянии электропитания (они происходят из
capabilityFlags
поле нового состояния в массиве состояния электропитания).stateNumber
Число состояния в массиве состояния, на который переключается устройство.
whatDevice
Указатель на изменяющийся драйвер. Это может использоваться драйвером, получающим уведомления изменения состояния электропитания для многократных устройств для различения их.
Возвращаемое значение
Возвраты драйвера
IOPMAckImplied
если это подготовилось к изменению питания, когда это возвращается. Если это начало подготавливаться, но не закончилось, это должно возвратить много микросекунд, который является верхним пределом времени, которое это должно будет закончить подготавливать. Затем когда это завершило свои приготовления, это должно вызвать acknowledgePowerChange.Обсуждение
Управление питанием сообщает заинтересованным сторонам, что устройство изменилось на различное состояние электропитания. Заинтересованные стороны - те, которые зарегистрировались для этого уведомления через registerInterestedDriver. Если Вы вызвали
registerInterestedDriver
на управляемом драйвере питания Вы должны implemnt powerStateWillChangeTo иpowerStateDidChangeTo
получить уведомления.powerStateDidChangeTo
вызывается в чистом и отдельном контексте потока.powerStateWillChangeTo
вызывается, прежде чем переход состояния электропитания имеет место;powerStateDidChangeTo
вызывается после того, как переход завершился. -
Определяет, в каком состоянии электропитания устройство было бы для состояния домена данных полномочий.
Объявление
C++
virtual unsigned long powerStateForDomainState( IOPMPowerFlags
domainState
);Параметры
domainState
Флаги, описывающие символ «доменного питания»; они представляют
outputPowerCharacter
поле состояния в массиве состояния электропитания домена питания.Возвращаемое значение
Число состояния.
Обсуждение
Управление питанием вызывает драйвер с этим методом для обнаружения, в каком состоянии электропитания устройство было бы для состояния домена данных полномочий. Это происходит, когда домен питания изменяет управление состоянием, и управление питанием должно определить эффект изменения. Большинство драйверов не должно реализовывать этот метод и может положиться на реализацию IOService по умолчанию. Реализация IOService сканирует массив состояния электропитания, ища самое высокое состояние чей
inputPowerRequirement
поле точно соответствует значениеdomainState
параметр. Если более интеллектуальное определение требуется, питание управляло, драйвер должен реализовать метод и переопределить реализацию суперкласса. -
Сообщает заинтересованным сторонам, что устройство собирается изменить свое состояние электропитания.
Объявление
C++
virtual IOReturn powerStateWillChangeTo( IOPMPowerFlags
capabilities
, 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
делает объект доступным для любого ожидающего его или ищущий его в будущем. -
publishResource (константа OSSymbol *, OSObject *) - publishResource (константа OSSymbol *, OSObject *)
Использует службу ресурса для публикации свойства.
Объявление
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
, IOInterruptActionhandler
, 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 longspecificationFlags
);Обсуждение
Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.
-
Запросы, что аппаратные средства быть повторно отсканированным для устройств.
Объявление
C++
virtual IOReturn requestProbe( IOOptionBits
options
);Параметры
options
Семья определила опции, не интерпретируемые IOService.
Возвращаемое значение
Код IOReturn.
Обсуждение
Для семейств шины, обычно не обнаруживающих дополнение устройства или удаление, этот метод представляет внешний запрос (например, из служебного приложения), чтобы повторно отсканировать и опубликовать или удалить найденный устройствами.
-
Передает завершение штабель.
Объявление
C++
virtual bool requestTerminate( IOService *
provider
, IOOptionBitsoptions
);Параметры
provider
Завершенный провайдер этого объекта.
options
Опции первоначально передали оконечному, плюс
kIOServiceRecursing
.Возвращаемое значение
true
если этот объект должен быть завершен теперь, когда его провайдер был.Обсуждение
Когда IOService сделан неактивным, поведение по умолчанию состоит в том, чтобы также сделать любой из своих клиентов, имеющих его как их единственного провайдера, также неактивного, таким образом рекурсивно вызывая завершение штабель драйвера. Этот метод позволяет объекту IOService переопределить это поведение. Возврат
true
от этого метода, когда передано справедливый завершенный провайдер заставит клиент также быть завершенным. -
resourceMatching (символ константы *, OSDictionary *) - resourceMatching (символ константы *, OSDictionary *)
Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие службы ресурса.
Объявление
C++
static OSDictionary * resourceMatching( const char *
name
, OSDictionary *table = 0 );Параметры
name
Имя ресурса, как струна до константы. Когда объект тем именем был опубликован с, ресурс, соответствующий, успешен
publishResource
метод.table
Если нуль,
resourceMatching
создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.Возвращаемое значение
Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.
Обсуждение
IOService поддерживает службу IOResources ресурса, позволяющую объектам быть опубликованными и найденными глобально в Наборе I/O на основе имени, с помощью стандартного IOService вызовы уведомления и соответствие.
-
resourceMatching (константа OSString *, OSDictionary *) - resourceMatching (константа OSString *, OSDictionary *)
Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие службы ресурса.
Объявление
C++
static OSDictionary * resourceMatching( const OSString *
name
, OSDictionary *table = 0 );Параметры
name
Имя ресурса, как OSString (который включает OSSymbol). Когда объект тем именем был опубликован с, ресурс, соответствующий, успешен
publishResource
метод.table
Если нуль,
resourceMatching
создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.Возвращаемое значение
Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.
Обсуждение
IOService поддерживает службу IOResources ресурса, позволяющую объектам быть опубликованными и найденными глобально в Наборе I/O на основе имени, с помощью стандартного IOService вызовы уведомления и соответствие.
-
serviceMatching (символ константы *, OSDictionary *) - serviceMatching (символ константы *, OSDictionary *)
Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие класса IOService.
Объявление
C++
static OSDictionary * serviceMatching( const char *
className
, OSDictionary *table = 0 );Параметры
className
Имя класса, как струна до константы. Класс, соответствующий, успешен на объектах IOService этого класса или любого подкласса.
table
Если нуль,
serviceMatching
создает соответствующий словарь и возвращает ссылку на него, иначе соответствующие свойства добавляются к указанному словарю.Возвращаемое значение
Соответствующий словарь, создаваемый, или, передал в, возвращается на успехе или нуле при отказе.
Обсуждение
Очень общее соответствие критерии объекта IOService основывается на своем классе.
serviceMatching
создает соответствующий словарь, указывающий любой объект IOService класса или его подклассы. Класс указан по имени, и существующий словарь может быть передан в, когда соответствующие свойства будут добавлены к тому словарю вместо того, чтобы создать новый. -
serviceMatching (константа OSString *, OSDictionary *) - serviceMatching (константа OSString *, OSDictionary *)
Создает соответствующий словарь или добавляет соответствие свойств к существующему словарю, указывающих соответствие класса 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 long
type
, 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( unsigned
period
);Параметры
period
Желаемый неактивный период таймера в секундах.
Возвращаемое значение
kIOReturnSuccess
на успех; код ошибки Набора I/O иначе.Обсуждение
Драйвер с помощью определения безделья, предоставленного IOService, вызывает свой суперкласс с этим методом, чтобы установить или изменить неактивный период таймера. См. activityTickle для описания этого типа определения безделья.
-
Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.
Объявление
C++
virtual IOReturn setPowerParent( IOPowerConnection *
parent
, boolstateKnown
, IOPMPowerFlagscurrentState
) __attribute__((deprecated)); -
Запрашивает, чтобы питание управляло драйвером для изменения состояния электропитания его устройства.
Объявление
C++
virtual IOReturn setPowerState( unsigned long
powerStateOrdinal
, 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( IOReturn
rtn
);Параметры
rtn
Код IOReturn.
Возвращаемое значение
Указатель на постоянную строку или нуль, если код возврата неизвестен.
Обсуждение
Строки доступны для стандартных кодов возврата в
IOReturn.h
в IOService, в то время как подклассы могут реализовать этот метод для интерпретации зависимых кодов возврата семьи. -
Говорит каждому драйверу в плоскости питания, что просыпается система.
Объявление
C++
virtual IOReturn systemWake(
void
) __attribute__((deprecated));Обсуждение
Этот вызов обрабатывается внутренне управлением питанием. Это не предназначается, чтобы быть переопределенным или вызванным драйверами.
-
Уведомляет элементы плоскости питания завершения работы системы и перезапуска.
Объявление
C++
virtual void systemWillShutdown( IOOptionBits
specifier
);Параметры
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( int
source
);Параметры
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;