Реализация времени ожидания чтения USB на MacOS и IOKit

Я пытаюсь реализовать драйвер USB для моего приложения. Похоже, что все основные функции, такие как инициализация, чтение и запись, могут быть легко реализованы с помощью IOKit. Но проблема, с которой я столкнулся, заключается в чтении тайм-аута, более точного отсутствия этой функциональности.

На самом деле, я использую этот учебник для создания моего драйвера USB.

Например, мой код для чтения выглядит следующим образом:

QByteArray Read(UInt32 size)
{
IOReturn result;
char buffer[size];

result = (*m_interface)->ReadPipe(m_interface, m_pipeIn, buffer, &size);
if(result != kIOReturnSuccess)
{
SetError("Error reading from pipe", IErrorrable::ErrorTypes::Error, result);
return QByteArray();
}
return QByteArray(buffer, size);
}

Я понятия не имею, как реализовать тайм-аут чтения для этой функции. Буду очень признателен, если кто-нибудь сможет помочь.

1

Решение

Использовать ReadPipeTO функция вместо ReadPipe, Есть также асинхронная версия, ReadPipeAsyncTO что может представлять интерес.

Возможно, вам придется запросить более новую версию IOUSBInterfaceInterface чем то, что вы используете в настоящее время, но это не проблема, так как большинство из них возвращаются к версиям OS X со времен PPC.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]