Ссылка IOUSBLib.h
Эта документация описывает подробные данные интерфейса программирования для доступа к USB-устройствам и интерфейсам USB от кода, работающего в пространстве пользователя. Эта документация предполагает, что у Вас есть основное понимание материала, содержавшегося в Для определений терминов Набора I/O, использованных в этой документации, таких как соответствие словаря, семьи и драйвера, см. обзор условий Набора I/O и понятий в «Доступе к устройствам и главе» Набора I/O Доступа к Аппаратным средствам Из Приложений.
Эта документация также предполагает, что Вы читали. Рассмотрите тот документ перед использованием этой ссылки.
Вся информация, описанная в этом документе, содержится в заголовочном файле IOUSBLib.h
найденный в /System/Library/Frameworks/IOKit.framework/Headers/usb/IOUSBLib.h
.
Включенные заголовки
<IOKit/usb/USB.h>
<IOKit/IOKitLib.h>
<CoreFoundation/CFRunLoop.h>
<CoreFoundation/CFPlugIn.h>
<CoreFoundation/CFPlugInCOM.h>
<sys/cdefs.h>
-
Объявление
Objective C
IOUSBDescriptorHeader * ( *FindNextAltInterface)( void *self, const void *current, IOUSBFindInterfaceRequest *request);
Параметры
self
Указатель на IOUSBInterfaceInterface.
current
интерфейсный дескриптор, чтобы начать искать от, NULL для запуска в альтернативном интерфейсе 0.
request
указывает, какие свойства интерфейсу, должно быть, придется соответствовать.
Возвращаемое значение
Указатель на соответствующий интерфейсный дескриптор или NULL, если ни один не соответствует.
Обсуждение
возвратите альтернативный интерфейсный дескриптор, удовлетворяющий требования, указанные в запросе или NULL, если нет никого. запрос обсуждения обновляется со свойствами возвращенного интерфейса.
-
Сочтите следующий дескриптор требуемого типа связанным с интерфейсом.
Объявление
Objective C
IOUSBDescriptorHeader * ( *FindNextAssociatedDescriptor)( void *self, const void *currentDescriptor, UInt8 descriptorType);
Параметры
self
Указатель на IOUSBInterfaceInterface.
currentDescriptor
Дескриптор, чтобы начать искать от, NULL для запуска с начала списка.
descriptorType
Тип дескриптора для поиска, или kUSBAnyDesc для возврата любого типа дескриптора.
Возвращаемое значение
Указатель на дескриптор или NULL, если не найдены никакие дескрипторы соответствия.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Получает недавнее число кадра шины, к которой устройство присоединяется, вместе с системным временем, соответствуя запуску того кадра
Объявление
Objective C
IOReturn ( *GetBusFrameNumberWithTime)( void *self, UInt64 *frame, AbsoluteTime *atTime);
Параметры
self
Указатель на IOUSBInterfaceInterface.
frame
Указатель на UInt64 для содержания числа кадра.
atTime
Указатель на возвращенный AbsoluteTime, который является системным временем («стенное время») как близко как возможным к началу того кадра USB. Дрожание на этом значении может составить целых 200 микросекунд.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnUnsupported, являются шиной, не поддерживает эту функцию.
Обсуждение
Устройство не должно быть открыто для использования этой функции.
-
Получает свойства для канала, включая сопутствующие свойства USB SuperSpeed конечной точки.
Объявление
Objective C
IOReturn ( *GetPipePropertiesV2)( void *self, UInt8 pipeRef, UInt8 *direction, UInt8 *number, UInt8 *transferType, UInt16 *maxPacketSize, UInt8 *interval, UInt8 *maxBurst, UInt8 *mult, UInt16 *bytesPerInterval);
Параметры
self
Указатель на IOUSBInterfaceInterface.
pipeRef
Индекс для желаемого канала (1 - GetNumEndpoints).
direction
Указатель на UInt8 для получения направления канала.
number
Указатель на UInt8 для получения числа канала.
transferType
Указатель на UInt8 для получения типа передачи канала.
maxPacketSize
Указатель на UInt16 для получения maxPacketSize канала.
interval
Указатель на UInt8 для получения интервала для опроса канала для данных (в миллисекундах).
maxBurst
Указатель на UInt8 для получения bMaxBurst значения Сопутствующего дескриптора Конечной точки SuperSpeed
mult
Указатель на UInt8 для получения mult значения bmAttributes поля Сопутствующего дескриптора Конечной точки SuperSpeed, допустимого только для изохронной конечной точки
bytesPerInterval
Указатель на UInt16 для получения wBytesPerInterval значения Сопутствующего дескриптора Конечной точки SuperSpeed, допустимого только для периодических конечных точек
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Как только интерфейс открыт, все каналы в том интерфейсе создаются ядром. Число каналов может быть получено GetNumEndpoints. Клиент может тогда получить свойства любого канала с помощью индекса 1 к GetNumEndpoints. Канал 0 является каналом управления по умолчанию в устройстве.
См. Обзор для документации уровня заголовка.
-
Объявление
Objective C
#define kIOUSBDeviceInterfaceID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x5c, 0x81, 0x87, 0xd0, 0x9e, 0xf3, 0x11, 0xD4, \ 0x8b, 0x45, 0x00, 0x0a, 0x27, 0x05, 0x28, 0x61) #define kIOUSBDeviceInterfaceID182 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x15, 0x2f, 0xc4, 0x96, 0x48, 0x91, 0x11, 0xD5, \ 0x9d, 0x52, 0x00, 0x0a, 0x27, 0x80, 0x1e, 0x86) #define kIOUSBDeviceInterfaceID187 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x3C, 0x9E, 0xE1, 0xEB, 0x24, 0x02, 0x11, 0xB2, \ 0x8E, 0x7E, 0x00, 0x0A, 0x27, 0x80, 0x1E, 0x86) #define kIOUSBDeviceInterfaceID197 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0xC8, 0x09, 0xB8, 0xD8, 0x08, 0x84, 0x11, 0xD7, \ 0xBB, 0x96, 0x00, 0x03, 0x93, 0x3E, 0x3E, 0x3E) #define kIOUSBDeviceInterfaceID245 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0xFE, 0x2F, 0xD5, 0x2F, 0x3B, 0x5A, 0x47, 0x3B, \ 0x97, 0x7B, 0xAD, 0x99, 0x00, 0x1E, 0xB3, 0xED) #define kIOUSBDeviceInterfaceID300 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x39, 0x61, 0x04, 0xF7, 0x94, 0x3D, 0x48, 0x93, \ 0x90, 0xF1, 0x69, 0xBD, 0x6C, 0xF5, 0xC2, 0xEB) #define kIOUSBDeviceInterfaceID320 CFUUIDGetConstantUUIDWithBytes(kCFAllocatorSystemDefault, \ 0x01, 0xA2, 0xD0, 0xE9, 0x42, 0xF6, 0x4A, 0x87, \ 0x8B, 0x8B, 0x77, 0x05, 0x7C, 0x8C, 0xE0, 0xCE) #define kIOUSBDeviceInterfaceID500 CFUUIDGetConstantUUIDWithBytes(kCFAllocatorSystemDefault, \ 0xA3, 0x3C, 0xF0, 0x47, 0x4B, 0x5B, 0x48, 0xE2, \ 0xB5, 0x7D, 0x02, 0x07, 0xFC, 0xEA, 0xE1, 0x3B) #define kIOUSBDeviceUserClientTypeID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x9d, 0xc7, 0xb7, 0x80, 0x9e, 0xc0, 0x11, 0xD4, \ 0xa5, 0x4f, 0x00, 0x0a, 0x27, 0x05, 0x28, 0x61) #define kIOUSBFactoryID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x45, 0x47, 0xa8, 0xaa, 0x9e, 0xf3, 0x11, 0xD4, \ 0xa9, 0xbd, 0x00, 0x0a, 0x27, 0x05, 0x28, 0x61) #define kIOUSBInterfaceInterfaceID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x73, 0xc9, 0x7a, 0xe8, 0x9e, 0xf3, 0x11, 0xD4, \ 0xb1, 0xd0, 0x00, 0x0a, 0x27, 0x05, 0x28, 0x61) #define kIOUSBInterfaceInterfaceID182 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x49, 0x23, 0xac, 0x4c, 0x48, 0x96, 0x11, 0xD5, \ 0x92, 0x08, 0x00, 0x0a, 0x27, 0x80, 0x1e, 0x86) #define kIOUSBInterfaceInterfaceID183 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x1c, 0x43, 0x83, 0x56, 0x74, 0xc4, 0x11, 0xD5, \ 0x92, 0xe6, 0x00, 0x0a, 0x27, 0x80, 0x1e, 0x86) #define kIOUSBInterfaceInterfaceID190 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x8f, 0xdb, 0x84, 0x55, 0x74, 0xa6, 0x11, 0xD6, \ 0x97, 0xb1, 0x00, 0x30, 0x65, 0xd3, 0x60, 0x8e) #define kIOUSBInterfaceInterfaceID192 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x6C, 0x79, 0x8A, 0x6E, 0xD6, 0xE9, 0x11, 0xD6, \ 0xAD, 0xD6, 0x00, 0x03, 0x93, 0x3E, 0x3E, 0x3E) #define kIOUSBInterfaceInterfaceID197 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0xC6, 0x3D, 0x3C, 0x92, 0x08, 0x84, 0x11, 0xD7, \ 0x96, 0x92, 0x00, 0x03, 0x93, 0x3E, 0x3E, 0x3E) #define kIOUSBInterfaceInterfaceID220 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x77, 0x0D, 0xE6, 0x0C, 0x2F, 0xE8, 0x11, 0xD8, \ 0xA5, 0x82, 0x00, 0x03, 0x93, 0xDC, 0xB1, 0xD0) #define kIOUSBInterfaceInterfaceID245 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x64, 0xBA, 0xBD, 0xD2, 0x0F, 0x6B, 0x4B, 0x4F, \ 0x8E, 0x3E, 0xDC, 0x36, 0x04, 0x69, 0x87, 0xAD) #define kIOUSBInterfaceInterfaceID300 CFUUIDGetConstantUUIDWithBytes(NULL, \ 0xBC, 0xEA, 0xAD, 0xDC, 0x88, 0x4D, 0x4F, 0x27, \ 0x83, 0x40, 0x36, 0xD6, 0x9F, 0xAB, 0x90, 0xF6) #define kIOUSBInterfaceInterfaceID500 CFUUIDGetConstantUUIDWithBytes(kCFAllocatorSystemDefault, \ 0x6C, 0x0D, 0x38, 0xC3, 0xB0, 0x93, 0x4E, 0xA7, \ 0x80, 0x9B, 0x09, 0xFB, 0x5D, 0xDD, 0xAC, 0x16) #define kIOUSBInterfaceUserClientTypeID CFUUIDGetConstantUUIDWithBytes(NULL, \ 0x2d, 0x97, 0x86, 0xc6, 0x9e, 0xf3, 0x11, 0xD4, \ 0xad, 0x51, 0x00, 0x0a, 0x27, 0x05, 0x28, 0x61)
Константы
-
kIOUSBDeviceInterfaceID
kIOUSBDeviceInterfaceID
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBDevice в ядре. Типом этого интерфейса устройства является IOUSBDeviceInterface. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBDeviceInterface возвращается всеми версиями IOUSBFamily, в настоящее время поставляющего. Однако существуют некоторые функции, которые доступны только в версии 1.8.2 IOUSBFamily и выше. Доступ к этим функциям, в дополнение к функциям, содержавшимся в IOUSBDeviceInterface, может быть получен при помощи одного из других UUIDs, перечисленных в этом заголовке.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBDeviceInterface **dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID),
(LPVoid)&dev);
Доступный в OS X v10.0 и позже.
-
kIOUSBDeviceInterfaceID182
kIOUSBDeviceInterfaceID182
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBDevice в ядре. Тип этого интерфейса устройства является IOUSBDeviceInterface182. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBDeviceInterface182 возвращается только версией 1.8.2 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.0.4 OS X. Если Ваше программное обеспечение будет работать на более ранней версии OS X, то необходимо будет использовать UUID kIOUSBDeviceInterfaceID, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBDeviceInterface182 **dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID182),
(LPVoid)&dev);
Доступный в OS X v10.1 и позже.
-
kIOUSBDeviceInterfaceID187
kIOUSBDeviceInterfaceID187
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBDevice в ядре. Тип этого интерфейса устройства является IOUSBDeviceInterface187. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен (см. kIOUSBDeviceUserClientTypeID).
Примечание: IOUSBDeviceInterface187 возвращается только версией 1.8.7 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.1.2 OS X. Если Ваше программное обеспечение будет работать на более ранней версии OS X, то необходимо будет использовать UUID kIOUSBDeviceInterfaceID или kIOUSBDeviceInterfaceID182, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBDeviceInterface187 **dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID187),
(LPVoid)&dev);
Доступный в OS X v10.1 и позже.
-
kIOUSBDeviceInterfaceID197
kIOUSBDeviceInterfaceID197
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBDevice в ядре. Тип этого интерфейса устройства является IOUSBDeviceInterface197. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBDeviceInterface197 возвращается только версией 1.9.7 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.2.3 OS X. Если Ваше программное обеспечение будет работать на более ранней версии OS X, то необходимо будет использовать UUID kIOUSBDeviceInterfaceID, kIOUSBDeviceInterfaceID182, или kIOUSBDeviceInterfaceID187, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBDeviceInterface197 **dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID197),
(LPVoid)&dev);
Доступный в OS X v10.2 и позже.
-
kIOUSBDeviceInterfaceID245
kIOUSBDeviceInterfaceID245
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBDevice в ядре. Тип этого интерфейса устройства является IOUSBDeviceInterface245. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBDeviceInterface245 возвращается только версией 2.4.5 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.4.5 OS X (для Intel). Эта версия больше не добавляет функции к интерфейсу. Это используется, чтобы позволить нам фиксировать сверхвыпуск в нашем завершении, не влияя ни на какие формирователи тока: В предыдущих версиях мы закончили бы тем, что выпустили наш IOService, даже при том, что мы не сохранили его. Для клиентов IOUSBDeviceInterfaceID245 мы сохраним IOService.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBDeviceInterface245 **dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID245),
(LPVoid)&dev);
Доступный в OS X v10.4 и позже.
-
kIOUSBDeviceInterfaceID300
kIOUSBDeviceInterfaceID300
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBDevice в ядре. Тип этого интерфейса устройства является IOUSBDeviceInterface300. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBDeviceInterface300 возвращается только версией 3.0.0 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.5 OS X. Если Ваше программное обеспечение будет работать на более ранней версии OS X, то необходимо будет использовать UUID kIOUSBDeviceInterfaceID, kIOUSBDeviceInterfaceID182, kIOUSBDeviceInterfaceID187, kIOUSBDeviceInterfaceID197, или kIOUSBDeviceInterfaceID245, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBDeviceInterface300 **dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID300),
(LPVoid)&dev);
Доступный в OS X v10.5 и позже.
-
kIOUSBDeviceInterfaceID320
kIOUSBDeviceInterfaceID320
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBDevice в ядре. Тип этого интерфейса устройства является IOUSBDeviceInterface320. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBDeviceInterface320 возвращается только версией 3.2.0 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.5.4 OS X, Если Ваше программное обеспечение будет работать на более ранней версии OS X, то необходимо будет использовать UUID kIOUSBDeviceInterfaceID, kIOUSBDeviceInterfaceID182, kIOUSBDeviceInterfaceID187, kIOUSBDeviceInterfaceID197, kIOUSBDeviceInterfaceID245, или kIOUSBDeviceInterfaceID300, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBDeviceInterface320 **dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID320),
(LPVoid)&dev);
Доступный в OS X v10.6 и позже.
-
kIOUSBDeviceInterfaceID500
kIOUSBDeviceInterfaceID500
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBDevice в ядре. Тип этого интерфейса устройства является IOUSBDeviceInterface320. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBDeviceInterface5000 возвращается только версией 5.0.0 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.7.3 OS X, Если Ваше программное обеспечение будет работать на более ранней версии OS X, то необходимо будет использовать UUID kIOUSBDeviceInterfaceID, kIOUSBDeviceInterfaceID182, kIOUSBDeviceInterfaceID187, kIOUSBDeviceInterfaceID197, kIOUSBDeviceInterfaceID245, kIOUSBDeviceInterfaceID300, или kIOUSBDeviceInterfaceID320, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBDeviceInterface500 **dev; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID500),
(LPVoid)&dev);
Доступный в OS X v10.7 и позже.
-
kIOUSBDeviceUserClientTypeID
kIOUSBDeviceUserClientTypeID
Эта константа UUID используется для получения соответствия интерфейса устройства io_service_t, соответствующему IOUSBDevice в ядре. Как только Вы получили интерфейс устройства для службы, необходимо использовать функцию QueryInterface для получения интерфейса устройства для пользовательского клиента самого.
Пример:
io_service_t usbDeviceRef; // obtained earlier
IOCFPlugInInterface **iodev; // fetching this now
SInt32 score; // not used
IOReturn err;
err = IOCreatePlugInInterfaceForService(usbDeviceRef,
kIOUSBDeviceUserClientTypeID,
kIOCFPlugInInterfaceID,
&iodev,
&score);
Доступный в OS X v10.0 и позже.
-
kIOUSBFactoryID
kIOUSBFactoryID
Эта константа UUID используется внутренне системой и не придется использовать никаким кодом драйвера для доступа к интерфейсам устройства.
Доступный в OS X v10.0 и позже.
-
kIOUSBInterfaceInterfaceID
kIOUSBInterfaceInterfaceID
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Типом этого интерфейса устройства является IOUSBInterfaceInterface. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface возвращается всеми версиями IOUSBFamily, в настоящее время поставляющего. Однако существуют некоторые функции, которые доступны только в версии 1.8.2 IOUSBFamily и выше. Доступ к этим функциям, а также ко всем функциям, содержавшимся в IOUSBInterfaceInterface, может быть получен при помощи одного из других UUIDs, перечисленных в этом заголовке.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID),
(LPVoid)&intf);
Доступный в OS X v10.0 и позже.
-
kIOUSBInterfaceInterfaceID182
kIOUSBInterfaceInterfaceID182
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface182. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface182 возвращается только версией 1.8.2 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.0.4 OS X. Если Ваше программное обеспечение будет работать на более ранней версии OS X, то необходимо будет использовать UUID kIOUSBInterfaceInterfaceID, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface182 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID182),
(LPVoid)&intf);
Доступный в OS X v10.1 и позже.
-
kIOUSBInterfaceInterfaceID183
kIOUSBInterfaceInterfaceID183
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface183. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface183 возвращается только версией 1.8.3 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.1 OS X. Если Ваше программное обеспечение будет работать на версии OS X до 10,1, то необходимо будет использовать UUID kIOUSBInterfaceInterfaceID или kIOUSBInterfaceInterfaceID182, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface183 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID183),
(LPVoid)&intf);
Доступный в OS X v10.1 и позже.
-
kIOUSBInterfaceInterfaceID190
kIOUSBInterfaceInterfaceID190
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface190. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface190 возвращается только версией 1.9 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.2 OS X. Если Ваше программное обеспечение будет работать на версии OS X до 10,2, то необходимо будет использовать UUID kIOUSBInterfaceInterfaceID, kIOUSBInterfaceInterfaceID182, или kIOUSBInterfaceInterfaceID183, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface190 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID190),
(LPVoid)&intf);
Доступный в OS X v10.2 и позже.
-
kIOUSBInterfaceInterfaceID192
kIOUSBInterfaceInterfaceID192
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface192. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface192 возвращается только версией 1.9.2 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.2.3 OS X. Если Ваше программное обеспечение будет работать на версии OS X до 10.2.3, то необходимо будет использовать UUID kIOUSBInterfaceInterfaceID, kIOUSBInterfaceInterfaceID182, kIOUSBInterfaceInterfaceID183, или kIOUSBInterfaceInterfaceID190, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface192 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID192),
(LPVoid)&intf);
Доступный в OS X v10.2 и позже.
-
kIOUSBInterfaceInterfaceID197
kIOUSBInterfaceInterfaceID197
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface197. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface197 возвращается только версией 1.9.7 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.2.5 OS X. Если Ваше программное обеспечение будет работать на версии OS X до 10.2.5, то необходимо будет использовать UUID kIOUSBInterfaceInterfaceID, kIOUSBInterfaceInterfaceID182, kIOUSBInterfaceInterfaceID183, kIOUSBInterfaceInterfaceID190, или kIOUSBInterfaceInterfaceID192, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface197 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID197),
(LPVoid)&intf);
Доступный в OS X v10.2 и позже.
-
kIOUSBInterfaceInterfaceID220
kIOUSBInterfaceInterfaceID220
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface197. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface220 возвращается только версией 2.2.0 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.4 OS X. Если Ваше программное обеспечение будет работать на версии OS X до 10,4, то необходимо будет использовать UUID kIOUSBInterfaceInterfaceID, kIOUSBInterfaceInterfaceID182, kIOUSBInterfaceInterfaceID183, kIOUSBInterfaceInterfaceID190, kIOUSBInterfaceInterfaceID192, или kIOUSBInterfaceInterfaceID197, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface220 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID220),
(LPVoid)&intf);
Доступный в OS X v10.4 и позже.
-
kIOUSBInterfaceInterfaceID245
kIOUSBInterfaceInterfaceID245
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface245. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface245 возвращается только версией 2.4.5 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.4.5 OS X. Эта версия не добавляет новых функций. Это используется, чтобы позволить нам фиксировать утечку в нашем завершении, не влияя ни на какие формирователи тока: В предыдущих версиях мы не выпустили бы ссылку на IOUSBDevice. Для клиентов IOUSBInterfaceInterfaceID245 мы теперь выпустим ту ссылку.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface245 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID245),
(LPVoid)&intf);
Доступный в OS X v10.4 и позже.
-
kIOUSBInterfaceInterfaceID300
kIOUSBInterfaceInterfaceID300
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface300. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface300 возвращается только версией 3.0.0 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.5 OS X. Если Ваше программное обеспечение будет работать на версии OS X до 10,5, то необходимо будет использовать UUID kIOUSBInterfaceInterfaceID, kIOUSBInterfaceInterfaceID182, kIOUSBInterfaceInterfaceID183, kIOUSBInterfaceInterfaceID190, kIOUSBInterfaceInterfaceID192, kIOUSBInterfaceInterfaceID197, kIOUSBInterfaceInterfaceID220, или kIOUSBInterfaceInterfaceID245, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface300 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID300),
(LPVoid)&intf);
Доступный в OS X v10.5 и позже.
-
kIOUSBInterfaceInterfaceID500
kIOUSBInterfaceInterfaceID500
Эта константа UUID используется для получения соответствия интерфейса устройства пользовательскому клиенту IOUSBInterface в ядре. Тип этого интерфейса устройства является IOUSBInterfaceInterface500. Этот интерфейс устройства получен после того, как интерфейс устройства для самой службы был получен.
Примечание: IOUSBInterfaceInterface500 возвращается только версией 5.0.0 или выше IOUSBFamily. Эта версия IOUSBFamily поставила с версией 10.7.3 OS X. Если Ваше программное обеспечение будет работать на версии OS X до 10.7.3, то необходимо будет использовать UUID kIOUSBInterfaceInterfaceID, kIOUSBInterfaceInterfaceID182, kIOUSBInterfaceInterfaceID183, kIOUSBInterfaceInterfaceID190, kIOUSBInterfaceInterfaceID192, kIOUSBInterfaceInterfaceID197, kIOUSBInterfaceInterfaceID220, kIOUSBInterfaceInterfaceID245, или kIOUSBInterfaceInterfaceID300, и у Вас не будет доступа к некоторым функциям.
Пример:
IOCFPluginInterface **iodev; // obtained earlier
IOUSBInterfaceInterface500 **intf; // fetching this now
IOReturn err;
err = (*iodev)->QueryInterface(iodev,
CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID500),
(LPVoid)&intf);
Доступный в OS X v10.7 и позже.
-
kIOUSBInterfaceUserClientTypeID
kIOUSBInterfaceUserClientTypeID
Эта константа UUID используется для получения соответствия интерфейса устройства io_service_t, соответствующему IOUSBInterface в ядре. Как только Вы получили интерфейс устройства для службы, необходимо использовать функцию QueryInterface для получения интерфейса устройства для пользовательского клиента самого.
Пример:
io_service_t usbInterfaceRef; // obtained earlier
IOCFPlugInInterface **iodev; // fetching this now
SInt32 score; // not used
IOReturn err;
err = IOCreatePlugInInterfaceForService(usbInterfaceRef,
kIOUSBInterfaceUserClientTypeID,
kIOCFPlugInInterfaceID,
&iodev,
&score);
Доступный в OS X v10.0 и позже.
-