Ссылка IOHIDDevicePlugIn.h
Эта документация описывает подробные данные интерфейса программирования для доступа к Устройствам Интерфейса пользователя и интерфейсам от кода, работающего в пространстве пользователя. Это предназначается, что непривилегированный режим, драйверы HID должным образом реализуют все интерфейсы, описанные здесь, чтобы быть видимыми через менеджера по HID.
Эта документация предполагает, что у Вас есть основное понимание материала, содержавшегося в Для определений терминов Набора I/O, использованных в этой документации, таких как соответствие словаря, семьи и драйвера, см. обзор условий Набора I/O и понятий в «Доступе к устройствам и главе» Набора I/O Доступа к Аппаратным средствам Из Приложений.
Эта документация также предполагает, что Вы читали. Рассмотрите документацию перед использованием этой ссылки.
Вся информация, описанная в этом документе, содержится в заголовочном файле IOHIDLib.h
найденный в /System/Library/Frameworks/IOKit.framework/Headers/hid/IOHIDDevicePlugIn.h
.
Включенные заголовки
<sys/cdefs.h>
<CoreFoundation/CoreFoundation.h>
<CoreFoundation/CFPlugInCOM.h>
<IOKit/IOTypes.h>
<IOKit/IOReturn.h>
<IOKit/IOCFPlugIn.h>
<IOKit/hid/IOHIDBase.h>
<IOKit/hid/IOHIDKeys.h>
<IOKit/hid/IOHIDLibObsolete.h>
См. Обзор для документации уровня заголовка.
-
Объявление
Objective C
#define kIOHIDDeviceDeviceInterfaceID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x47, 0x4b, 0xdc, 0x8e, 0x9f, 0x4a, 0x11, 0xda, \ 0xb3, 0x66, 0x00, 0x0d, 0x93, 0x6d, 0x06, 0xd2 ) #define kIOHIDDeviceFactoryID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x13, 0xAA, 0x9C, 0x44, 0x6F, 0x1B, 0x11, 0xD4, \ 0x90, 0x7C, 0x00, 0x05, 0x02, 0x8F, 0x18, 0xD5) #define kIOHIDDeviceQueueInterfaceID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x2e, 0xc7, 0x8b, 0xdb, 0x9f, 0x4e, 0x11, 0xda, \ 0xb6, 0x5c, 0x00, 0x0d, 0x93, 0x6d, 0x06, 0xd2) #define kIOHIDDeviceTransactionInterfaceID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x1f, 0x2e, 0x78, 0xfa, 0x9f, 0xfa, 0x11, 0xda, \ 0x90, 0xb4, 0x00, 0x0d, 0x93, 0x6d, 0x06, 0xd2) #define kIOHIDDeviceTypeID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x7d, 0xde, 0xec, 0xa8, 0xa7, 0xb4, 0x11, 0xda, \ 0x8a, 0x0e, 0x00, 0x14, 0x51, 0x97, 0x58, 0xef)
Константы
-
kIOHIDDeviceDeviceInterfaceID
kIOHIDDeviceDeviceInterfaceID
Эта константа UUID используется для получения соответствия интерфейса устройства службе IOHIDDevice в ядре. Типом этого интерфейса устройства является IOHIDDeviceDeviceInterface. Этот интерфейс устройства получен после того, как IOCFPlugInInterface для самой службы был получен.
Примечание: Обратите внимание на то, что последующие вызовы к QueryInterface с UUID kIOHIDDeviceTransactionInterfaceID, возвратит сохраненный экземпляр существующего IOHIDDeviceTransactionInterface.
Пример:
IOCFPluginInterface ** iodev; // obtained earlier
IOHIDDeviceDeviceInterface ** dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOHIDDeviceDeviceInterfaceID),
(LPVoid)&dev);
Доступный в OS X v10.5 и позже.
-
kIOHIDDeviceFactoryID
kIOHIDDeviceFactoryID
Эта константа UUID используется внутренне системой и не придется использовать никаким кодом драйвера для доступа к интерфейсам устройства.
Доступный в OS X v10.0 и позже.
-
kIOHIDDeviceQueueInterfaceID
kIOHIDDeviceQueueInterfaceID
Эта константа UUID используется для получения соответствия интерфейса очереди службе IOHIDDevice в ядре. Типом этого интерфейса очереди является IOHIDDeviceQueueInterface. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: Обратите внимание на то, что последующие вызовы к QueryInterface с UUID kIOHIDDeviceQueueInterfaceID, возвратит сохраненный экземпляр нового IOHIDDeviceQueueInterface.
Пример:
IOCFPluginInterface ** iodev; // obtained earlier
IOHIDDeviceQueueInterface ** intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOHIDDeviceQueueInterfaceID),
(LPVoid)&intf);
Доступный в OS X v10.5 и позже.
-
kIOHIDDeviceTransactionInterfaceID
kIOHIDDeviceTransactionInterfaceID
Эта константа UUID используется для получения соответствия интерфейса транзакции службе IOHIDDevice в ядре. Типом этого интерфейса очереди является IOHIDDeviceTransactionInterface. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: Обратите внимание на то, что последующие вызовы к QueryInterface с UUID kIOHIDDeviceTransactionInterfaceID, возвратит сохраненный экземпляр нового IOHIDDeviceTransactionInterface.
Пример:
IOCFPluginInterface ** iodev; // obtained earlier
IOHIDDeviceTransactionInterface ** intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOHIDDeviceTransactionInterfaceID),
(LPVoid)&intf);
Доступный в OS X v10.5 и позже.
-
kIOHIDDeviceTypeID
kIOHIDDeviceTypeID
Эта константа UUID используется для получения соответствия интерфейса устройства io_service_t, соответствующему IOHIDDevice в ядре. Как только Вы получили IOCFPlugInInterface для службы, необходимо использовать функцию QueryInterface для получения интерфейса устройства для пользовательского клиента самого.
Пример:
io_service_t hidDeviceRef; // obtained earlier
IOCFPlugInInterface **iodev; // fetching this now
SInt32 score; // not used
IOReturn err;
err = IOCreatePlugInInterfaceForService(hidDeviceRef,
kIOHIDDeviceTypeID,
kIOCFPlugInInterfaceID,
&iodev,
&score);
Доступный в OS X v10.5 и позже.
-