Я обновляю старый старый код (который работает пока, но использует OpenTransport, так что ... нет), который взаимодействует со сканером USB. Я думаю, я понимаю, как IOUSBDeviceInterface
и IOUSBInterfaceInterface
должны работать, но я не могу получить информацию о каналах.
У меня есть метод, который принимает: (IOUSBInterfaceInterface **)intf
, который имеет две трубы. Я считаю, что он настроен правильно, но я не уверен, как это проверить. Внутри я делаю:
for (i=1; i <= numPipes; i++)
{
err = (*intf)->GetPipeProperties(intf, i, &direction, &number, &transferType, &maxPacketSize, &interval);
}
Но возвращается kIOReturnNotOpen
. Я правильно определяю сканер (когда сканер выключен, он даже не доходит до этой стадии), и я не думаю, что другие программы пытаются получить доступ к сканеру.
Есть ли какой-нибудь разумный способ определить, что идет не так? (то есть, какая другая программа думает, что у нее есть открытые каналы, или как там?)
Код технически написан на Objective-C, но, как вы можете видеть, приведенный выше код довольно ванильный C, отсюда и теги.