views:

111

answers:

0

Hello, I've ran into a problem when CreateInterfaceIterator does not return all interfaces for the device. When I open "USB Prober" it says there are 9 interfaces, but displays 14 of then counting
Interface #1 - Vendor-specific
Interface #1 - Vendor-specific (#1)
as one interface.
The problem is that CreateInterfaceIterator returns just 9 of them (it does not return "Interface #1 - Vendor-specific (#1)", only "Interface #1 - Vendor-specific"). And pipes I need to read and write are only on those interfaces not returned, basically I can get only interrupt pipes and that's all. I searched all over examples and could not find anything else on how to obtain needed pipes. On windows the code for device written just like file input/output opening file "\IsochronousPipe\2\0"

Here is how I create interface iterator:
request.bInterfaceClass = kIOUSBFindInterfaceDontCare;
request.bInterfaceSubClass = kIOUSBFindInterfaceDontCare;
request.bInterfaceProtocol = kIOUSBFindInterfaceDontCare;
request.bAlternateSetting = kIOUSBFindInterfaceDontCare;
kr = (*device)->CreateInterfaceIterator(device, &request, &iterator);
while (usbInterface = IOIteratorNext(iterator))
{
....... // only 9 interfaces here
}

Thanks in advance!