升级10x的osx驱动程序(USB堆栈中的更改)

时间:2016-04-07 14:02:54

标签: objective-c kernel usb driver osx-elcapitan

我正在将现有的自定义鼠标驱动程序设备升级到OSX 10.11。可以看出,苹果已经更新了它的usb堆栈。

请参阅 - https://developer.apple.com/library/mac/releasenotes/General/APIDiffsMacOSX10_11/Objective-C/Kernel.html

我现有的代码使用了许多已移除的类(IOUSBHIDDriverIOUSBInterfaceIOUSBPipe等)。有人可以帮助我找到替换或任何有用的信息升级到10.11吗?

重命名了许多类和头文件,我可以从上面的链接中找出替换内容。但是代码也使用了弃用的类IOUSBPipe及其方法。我还没有完全理解它的用途。有人可以解释IOUSBPipe的目的,并建议我OSX 10.11的替代类吗?

请在此行下方找到处理IOUSBpipe

的代码段
IOMemoryDescriptor *report;
setReport(report, kIOHIDReportTypeOutput);
IOReturn ret;
IOUSBDevRequest request;

IOUSBFindEndpointRequest findRequest = {
    kUSBAnyType,
    kUSBAnyDirn,
    0,
    0
};

IOUSBPipe *pipe = NULL;

while(pipe=usbInterface->FindNextPipe(pipe, &findRequest))
{
if (!pipe)
{
    IOLog("NO PIPE!\n");
    return 0;
}
IOLog("control request on pipe!\n");

request.bmRequestType = (UInt8)req->bmRequestType;
request.bRequest = (UInt8)req->bRequest;
request.wIndex = (UInt16)req->wIndex;
request.wLength = req->wLength;
request.wValue = (UInt16)req->wValue;
request.pData = (void*)data;

pipe->ControlRequest(&request);
    IOLog("result: %d", data[0]);
}

1 个答案:

答案 0 :(得分:1)

管道基本上代表USB端点的一个方向。您可以从中发送或接收数据。我对Mac OS X中的内核级开发知之甚少,但通过查看您发布的document,我怀疑您现在应该使用 IOUSBHostPipe 而不是IOUSBPipe。 / p>