IOHIDDevice
IOHIDDevice определяет объект Human Interface Device (HID), который будет взаимодействовать с менеджером по HID путем публикации статических свойств в реестре, и также путем создания отчетов о событиях HID через общую память. IOHIDDevice является абстрактным классом, который должен быть разделен на подклассы для поддержки определенного типа устройств HID, таких как USB устройства класса HID. Так как большинство устройств HID, как ожидают, будет USB-устройствами, IOHIDDevice использует USB спецификация HID для определения формата дескриптора отчета, и также сообщает, что используются для передачи с аппаратными средствами через некоторый прошедший транспортный уровень. Однако нет никакого мандата, что транспортный уровень должен быть ограничен USB. Подкласс может быть создан для поддержки устаревших джойстиков ADB, и пакеты проблемы на ADB соединяют шиной и переводят те пакеты в отчеты USB, и наоборот. IOHIDDevice не заботится, как те отчеты сгенерированы или использованы физическим устройством, пока отчеты пребывают к спецификации USB.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.0 и позже.
-
Проверьте, будут ли события от элемента HID поставлены указанной очереди событий.
Объявление
C++
virtual IOReturn checkEventDelivery( IOHIDEventQueue *
queue
, IOHIDElementCookiecookie
, bool *isActive
);Параметры
queue
Очередь событий.
cookie
Cookie для элемента HID опубликован устройством HID.
isActive
Указатель на возвращаемое значение, установленное в истину, если события, сгенерированные элементом HID, будут поставлены очереди или лжи иначе. Это возвращаемое значение установлено, только если возвращается kIOReturnSuccess.
Возвращаемое значение
kIOReturnSuccess на успехе или kIOReturnBadArgument, если один или больше предоставленных параметров недопустимы.
-
Освободите объект IOHIDDevice.
Объявление
C++
virtual void free();
Обсуждение
Высвободите все средства, ранее выделенные, затем вызывающие супер:: свободный () для распространения вызова к нашему суперклассу.
-
Получите ссылку на дескриптор памяти, описывающий блок памяти, содержащий текущие значения элемента HID.
Объявление
C++
virtual IOMemoryDescriptor * getMemoryWithCurrentElementValues() const;
Возвращаемое значение
Ссылка на дескриптор памяти, описывающий значения элемента тока, или 0 для указания дефицита ресурсов.
Обсуждение
Каждый элемент HID, который может способствовать вводу, выведенному, или отчет функции, присваивается область памяти от блока общей памяти, выделенного IOHIDDevice. Каждый элемент будет использовать свою присвоенную область памяти для хранения его текущей стоимости, определенной структурой IOHIDElementValue. Память, описанная дескриптором памяти, может быть отображена на пространстве пользователя, чтобы позволить менеджеру по HID опрашивать значение элемента тока без стоимости перехода пользовательского ядра. Подклассы не должны переопределять этот метод.
-
getReport (IOMemoryDescriptor *, IOHIDReportType, IOOptionBits) - getReport (IOMemoryDescriptor *, IOHIDReportType, IOOptionBits)
Получите отчет от устройства HID.
Объявление
C++
virtual IOReturn getReport( IOMemoryDescriptor *
report
, IOHIDReportTypereportType
, IOOptionBitsoptions
);Параметры
report
Дескриптор памяти, описывающий память для хранения отчета, считанного из устройства HID.
reportType
Тип отчета.
options
Более низкие 8 битов будут представлять Идентификатор отчета. Другие 24 бита являются опциями указать запрос.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
Обсуждение
Параметр завершения может быть добавлен в будущем.
-
getReport (IOMemoryDescriptor *, IOHIDReportType, IOOptionBits, UInt32, IOHIDCompletion *) - getReport (IOMemoryDescriptor *, IOHIDReportType, IOOptionBits, UInt32, IOHIDCompletion *)
Получите отчет от устройства HID.
Объявление
C++
virtual IOReturn getReport( IOMemoryDescriptor *
report
, IOHIDReportTypereportType
, IOOptionBitsoptions
, UInt32completionTimeout
, IOHIDCompletion *completion = 0);Параметры
report
Дескриптор памяти, описывающий память для хранения отчета, считанного из устройства HID.
reportType
Тип отчета.
options
Более низкие 8 битов будут представлять Идентификатор отчета. Другие 24 бита являются опциями указать запрос.
completionTimeout
Указывает количество времени (в мс), после которого будет прервана команда, если не была завершена вся команда.
completion
Функция для вызова, когда завершается запрос. Если опущено тогда getReport () выполняется синхронно, блокируя, пока запрос не завершен.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
Обсуждение
Параметр завершения может быть добавлен в будущем.
-
Обработайте клиент близко в интерфейсе.
Объявление
C++
virtual void handleClose( IOService *
client
, IOOptionBitsoptions
);Параметры
client
Объект клиента, запросивший завершение.
options
Опции передали IOService:: близко ().
Обсуждение
Этот метод вызывает IOService:: близко () с арбитражной сохраненной блокировкой. Этот метод поочередно вызовет handleClientClose () для уведомления заинтересованных подклассов о клиенте близко. Если это будет представлять последнее завершение, то интерфейс также закроет контроллер перед этим методом возвраты. controllerWillClose () метод вызовут прежде, чем закрыть контроллер. Подклассы не должны переопределять этот метод.
-
Запрос, есть ли у клиента открытое в интерфейсе.
Объявление
C++
virtual bool handleIsOpen( const IOService *
client
) const;Возвращаемое значение
истина, если у указанного клиента или какого-либо клиента, если ни один (0) не указан, в настоящее время есть открытое на этом объекте.
Обсуждение
Этот метод всегда вызывает IOService с арбитражной сохраненной блокировкой. Подклассы не должны переопределять этот метод.
-
Обработайте клиент, открытый в интерфейсе.
Объявление
C++
virtual bool handleOpen( IOService *
client
, IOOptionBitsoptions
, void *argument
);Параметры
client
Объект клиента, запросивший открытое.
options
Опции передали IOService:: открытый ().
argument
Параметр передал IOService:: открытый ().
Возвращаемое значение
истина для принятия клиента, открытого, ложного иначе.
Обсуждение
Этот метод вызывает IOService:: открытый () с арбитражной блокировкой, сохраненной, и, должен возвратить true для принятия открытого клиента. Этот метод поочередно вызовет handleClientOpen () для квалификации клиента, запрашивающего открытое.
-
Обработайте асинхронный отчет, полученный от устройства HID.
Объявление
C++
virtual IOReturn handleReport( IOMemoryDescriptor *
report
, IOHIDReportType reportType =kIOHIDReportTypeInput
, IOOptionBits options = 0 );Параметры
report
Дескриптор памяти, описывающий отчет.
reportType
Тип отчета.
options
Опции указать запрос. Никакие опции в настоящее время не определяются, и значение по умолчанию 0.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
-
Обработайте асинхронный отчет, полученный от устройства HID.
Объявление
C++
virtual IOReturn handleReportWithTime( AbsoluteTime
timeStamp
, IOMemoryDescriptor *report
, IOHIDReportType reportType =kIOHIDReportTypeInput
, IOOptionBits options = 0);Параметры
timeStamp
Метка времени отчета.
report
Дескриптор памяти, описывающий отчет.
reportType
Тип отчета. В настоящее время, только kIOHIDReportTypeInput тип отчета обрабатывается.
options
Опции указать запрос. Никакие опции в настоящее время не определяются, и значение по умолчанию 0.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
-
Подготовьте аппаратные средства и драйвер для поддержки операций I/O.
Объявление
C++
virtual bool handleStart( IOService *
provider
);Параметры
provider
Параметр провайдера передал для запуска ().
Возвращаемое значение
Истина на успехе или ложь иначе. Возвращение false вызовет, начинают () приводить к сбою и возвращать false.
Обсуждение
IOHIDDevice вызовет этот метод от запуска (), прежде чем любые операции I/O будут выпущены к конкретному подклассу. Методы, такие как newReportDescriptor () только вызывают, после handleStart () возвратил true. Подкласс, переопределяющий этот метод, должен начать свою реализацию путем призыва версии супер, и затем проверить возвращаемое значение.
-
Заморозьте аппаратные средства и остановите драйвер.
Объявление
C++
virtual void handleStop( IOService *
provider
);Параметры
provider
Параметр провайдера передал остановке ().
Обсуждение
IOHIDDevice вызовет этот метод от остановки (), чтобы сигнализировать, что аппаратные средства должны быть заморожены, и драйвер остановился. Подкласс, переопределяющий этот метод, должен закончить свою реализацию путем призыва версии супер.
-
Инициализируйте объект IOHIDDevice.
Объявление
C++
virtual bool init( OSDictionary *dictionary = 0 );
Параметры
A
словарь таблица свойства связался с этим экземпляром IOHIDDevice.
Возвращаемое значение
Истина на успехе или ложь иначе.
Обсуждение
Главный IOHIDDevice возражают и подготавливают его для поддержки зонда () или запуск () вызов. Эта реализация просто вызовет супер:: init ().
-
Вызванный провайдером во время соответствия
Объявление
C++
virtual bool matchPropertyTable( OSDictionary *
table
, SInt32 *score
);Параметры
table
Таблица свойства, против которой будет соответствовать это устройство
Обсуждение
Сравните свойства в предоставленной таблице к свойствам этого объекта.
-
Получает сообщения, освобожденные от присоединенного провайдера.
Объявление
C++
virtual IOReturn message( UInt32
type
, IOService *provider
, void *argument = 0 );Параметры
type
Тип, определенный в
IOMessage.h
.provider
Провайдер, из которого происходит сообщение.
argument
Параметр определяется типом сообщения.
Возвращаемое значение
Код IOReturn определяется типом сообщения.
Обсуждение
Дескрипторы
kIOMessageDeviceSignaledWakeup
сообщение от провайдера, идентифицирующего IOHIDDevice как источник пробуждения. -
Возвращает объект числа, описывающий код страны устройства HID.
Объявление
C++
virtual OSNumber * newCountryCodeNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает массив словарей использования. IOHIDDevice создает, создают это из фактического дескриптора отчета, и это должно быть основой для любого переопределения подкласса.
Объявление
C++
virtual OSArray * newDeviceUsagePairs();
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает объект числа, описывающий расположение ID устройства HID.
Объявление
C++
virtual OSNumber * newLocationIDNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает строковый объект, описывающий производителя устройства HID.
Объявление
C++
virtual OSString * newManufacturerString() const;
Возвращаемое значение
Строковый объект. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает объект числа, описывающий основное использование устройства HID.
Объявление
C++
virtual OSNumber * newPrimaryUsageNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает объект числа, описывающий основную страницу использования устройства HID.
Объявление
C++
virtual OSNumber * newPrimaryUsagePageNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает объект числа, описывающий идентификатор продукта устройства HID.
Объявление
C++
virtual OSNumber * newProductIDNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает строковый объект, описывающий продукт устройства HID.
Объявление
C++
virtual OSString * newProductString() const;
Возвращаемое значение
Строковый объект. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Создайте и возвратите новый дескриптор памяти, описывающий дескриптор отчета для устройства HID.
Объявление
C++
virtual IOReturn newReportDescriptor( IOMemoryDescriptor **
descriptor
) const = 0;Параметры
descriptor
Указатель на дескриптор памяти возвратился. Этот дескриптор памяти будет выпущен вызывающей стороной.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
Обсуждение
Подкласс должен переопределить эту чистую виртуальную функцию и возвратить дескриптор памяти, описывающий дескриптор отчета HID, как определено Определением класса USB-устройства для спецификации Версии 1.1 Устройств Интерфейса пользователя.
-
Возвращает объект числа, описывающий фактический интервал опроса устройства HID в микросекундах.
Объявление
C++
virtual OSNumber * newReportIntervalNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает объект числа, описывающий фактический интервал опроса устройства HID в микросекундах.
Объявление
C++
virtual OSNumber * newReportIntervalNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
THIS HAS BEEN DEPRECATED. PLEASE USE newSerialNumberString.
Объявление
C++
virtual OSNumber * newSerialNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает строковый объект, описывающий порядковый номер устройства HID.
Объявление
C++
virtual OSString * newSerialNumberString() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает строковый объект, описывающий транспортный уровень, используемый устройством HID.
Объявление
C++
virtual OSString * newTransportString() const;
Возвращаемое значение
Строковый объект. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Обработайте запрос для создания соединения для не клиента ядра.
Объявление
C++
virtual IOReturn newUserClient( task_t
owningTask
, void *security_id
, UInt32type
, OSDictionary *properties
, IOUserClient **handler
);Параметры
owningTask
Задача Маха, запрашивающая соединение.
security_id
Маркер, представляющий уровень доступа для задачи.
type
Постоянное указание типа соединения, которое будет создаваться.
properties
Словарь дополнительных свойств для соединения.
handler
Объект IOUserClient возвратился.
Возвращаемое значение
Возврат из IOService:: newUserClient () возвращается.
Обсуждение
Создайте новый IOUserClient или подкласс IOUserClient, для обслуживания соединения с не клиентом ядра. Эта реализация просто вызовет реализацию в IOService для обработки вызова.
-
Возвращает объект числа, описывающий идентификатор поставщика устройства HID.
Объявление
C++
virtual OSNumber * newVendorIDNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает объект числа, описывающий источник идентификатора поставщика устройства HID.
Объявление
C++
virtual OSNumber * newVendorIDSourceNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Возвращает объект числа, описывающий номер версии устройства HID.
Объявление
C++
virtual OSNumber * newVersionNumber() const;
Возвращаемое значение
Объект числа. Вызывающая сторона должна постепенно уменьшиться, сохранение рассчитывают на возвращенный объект.
-
Элемент сообщений оценивает устройству HID через setReport.
Объявление
C++
virtual IOReturn postElementValues( IOHIDElementCookie *
cookies
, UInt32 cookieCount = 1);Параметры
cookies
Список cookie элемента, кто значения, должен быть установлен на устройстве.
cookieCount
Число cookie элемента.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
Обсуждение
Параметр завершения может быть добавлен в будущем.
-
Опубликуйте свойства HID к реестру Набора I/O.
Объявление
C++
virtual bool publishProperties( IOService *
provider
);Параметры
provider
Параметр провайдера передал для запуска ().
Возвращаемое значение
Истина, чтобы указать, что все свойства были обнаружены и опубликованы к реестру, ложь иначе. Возвращение false вызовет, начинают () приводить к сбою и возвращать false.
Обсуждение
Вызванный запуском () метод, чтобы выбрать и опубликовать все свойства HID к реестру Набора I/O. Эти свойства позволят менеджеру по HID идентифицировать все устройство (а) HID в системе путем итерации через объекты, которые являются подклассами IOHIDDevice, и затем выбирают их опубликованные значения свойств. Реализация в IOHIDDevice вызовет методы для получения каждого отдельного свойства HID, и подклассы не должны будут обычно переопределять этот метод.
-
Регистрационная функция, вызванная элементом HID, чтобы зарегистрировать себя, и также получить уникальный идентификатор cookie (уникальный для каждого устройства, не уникальный в масштабе всей системы).
Объявление
C++
virtual bool registerElement( IOHIDElementPrivate *
element
, IOHIDElementCookie *cookie
);Параметры
element
Элемент, запрашивающий регистрацию с ее владельцем.
cookie
Указатель на возвращенный cookie присвоился к этому элементу.
Возвращаемое значение
Истина на успехе или ложь иначе.
Обсуждение
Внутренний тип данных, IOHIDElementPrivate, создается для представления каждого элемента HID, обнаруженного путем парсинга дескриптора отчета HID. Каждый создаваемый элемент вызовет этот метод, чтобы зарегистрировать себя в его владельце (IOHIDDevice), и также получить cookie элемента, использующийся менеджером по HID, чтобы указать и идентифицировать элемент. Подклассы не должны переопределять этот метод.
-
setReport (IOMemoryDescriptor *, IOHIDReportType, IOOptionBits) - setReport (IOMemoryDescriptor *, IOHIDReportType, IOOptionBits)
Отправьте отчет в устройство HID.
Объявление
C++
virtual IOReturn setReport( IOMemoryDescriptor *
report
, IOHIDReportTypereportType
, IOOptionBits options = 0 );Параметры
report
Дескриптор памяти, описывающий отчет отправить к устройству HID.
reportType
Тип отчета.
options
Более низкие 8 битов будут представлять Идентификатор отчета. Другие 24 бита являются опциями указать запрос.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
Обсуждение
Параметр завершения может быть добавлен в будущем.
-
setReport (IOMemoryDescriptor *, IOHIDReportType, IOOptionBits, UInt32, IOHIDCompletion *) - setReport (IOMemoryDescriptor *, IOHIDReportType, IOOptionBits, UInt32, IOHIDCompletion *)
Отправьте отчет в устройство HID.
Объявление
C++
virtual IOReturn setReport( IOMemoryDescriptor *
report
, IOHIDReportTypereportType
, IOOptionBitsoptions
, UInt32completionTimeout
, IOHIDCompletion *completion = 0);Параметры
report
Дескриптор памяти, описывающий отчет отправить к устройству HID.
reportType
Тип отчета.
options
Более низкие 8 битов будут представлять Идентификатор отчета. Другие 24 бита являются опциями указать запрос.
completionTimeout
Указывает количество времени (в мс), после которого будет прервана команда, если не была завершена вся команда.
completion
Функция для вызова, когда завершается запрос. Если опущено тогда setReport () выполняется синхронно, блокируя, пока запрос не завершен.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
Обсуждение
Параметр завершения может быть добавлен в будущем.
-
Запустите драйвер с помощью данного провайдера.
Объявление
C++
virtual bool start( IOService *
provider
);Параметры
provider
Провайдер, который драйвер был соответствующим к и выбран для выполнения с.
Возвращаемое значение
Истина на успехе или ложь иначе.
Обсуждение
IOHIDDevice выделит ресурсы, затем вызвать handleStart () прежде, чем выбрать дескриптор отчета через newReportDescriptor () и опубликовать свойства HID к реестру. Прежде, чем возвратить true для указания успеха, registerService () вызывают для инициирования клиентского соответствия. Подклассам рекомендуют переопределить handleStart ().
-
Начните освобождать события от элемента HID до указанной очереди событий.
Объявление
C++
virtual IOReturn startEventDelivery( IOHIDEventQueue *
queue
, IOHIDElementCookiecookie
, IOOptionBits options = 0 );Параметры
queue
Очередь событий, интересующаяся получением событий, сгенерированных указанным элементом HID. Сохранение рассчитывает на очередь, будет постепенно увеличен одним.
cookie
Cookie для элемента HID опубликован устройством HID.
options
Опции указать запрос. Никакие опции в настоящее время не определяются, и значение по умолчанию является нулем.
Возвращаемое значение
kIOReturnSuccess на успехе или kIOReturnBadArgument, если очередь или указанный параметр cookie недопустимы, или kIOReturnNoMemory, если встретились с дефицитом ресурсов.
Обсуждение
Клиенты IOHIDDevice могут создать IOHIDEventQueue, и затем вызвать этот метод для регистрации для поставки событий, сгенерированных одним или более элементами HID к той очереди событий. Подклассы не должны переопределять этот метод.
-
Вызванный провайдером (во время его завершения) прежде, чем отсоединить все его клиенты.
Объявление
C++
virtual void stop( IOService *
provider
);Параметры
provider
Провайдер, на котором был запущен драйвер.
Обсуждение
IOHIDDevice вызовет handleStop (), затем высвободит выделенные средства. Подклассам рекомендуют переопределить handleStop ().
-
Прекратите освобождать события от одного или более элементов HID до указанной очереди событий.
Объявление
C++
virtual IOReturn stopEventDelivery( IOHIDEventQueue *
queue
, IOHIDElementCookie cookie = 0 );Параметры
queue
Очередь событий, больше не хотящая получить события, сгенерированные указанным элементом HID.
cookie
Cookie для элемента HID опубликован устройством HID. Значение по умолчанию нуля указывает, что очередь должна быть удалена из списка отгрузки события всех элементов HID, опубликованных устройством HID. Подклассы не должны переопределять этот метод.
Возвращаемое значение
kIOReturnSuccess, если очередь была удалена из списка отгрузки события для одного или более элементов HID или kIOReturnBadArgument, если очередь или указанный параметр cookie недопустимы, или kIOReturnNotFound, если не была найдена очередь.
Обсуждение
Клиенты, которые названный startEventDelivery () должен в конечном счете вызвать этот метод для остановки поставки события ее очереди от одного или более элементов HID.
-
Элемент обновлений оценивает от устройства HID через getReport.
Объявление
C++
virtual IOReturn updateElementValues( IOHIDElementCookie *
cookies
, UInt32 cookieCount = 1);Параметры
cookies
Список cookie элемента, кто значения, должен быть установлен на устройстве.
cookieCount
Число cookie элемента.
Возвращаемое значение
kIOReturnSuccess на успехе или ошибка возвращаются иначе.
Обсуждение
Параметр завершения может быть добавлен в будущем.
-
Зарезервированный для будущего использования. (Только внутреннее использование)
Объявление
C++
ExpansionData * _reserved;
-
Зарезервированный для будущего использования. (Только внутреннее использование)
Объявление
C++
ExpansionData * _reserved;