在MacOS和Iokit上实施USB阅读超时

Implementing USB read timeout on MacOS and IOKit

本文关键字:USB 超时 MacOS Iokit      更新时间:2023-10-16

我正在尝试为我的应用程序实现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);
}

我不知道如何实现此功能的阅读超时。如果有人能提供帮助,我会很感激。

使用ReadPipeTO功能而不是ReadPipe。还有一个异步版本,ReadPipeAsyncTO可能很感兴趣。

您可能需要要求IOUSBInterfaceInterface的较新版本比您当前使用的版本,但这不是问题,因为大多数人都返回PPC天的OS X版本。