【问题标题】:Upgrading osx driver for 10.11 (Changes in USB stack)升级 10.11 的 osx 驱动程序(USB 堆栈中的更改)
【发布时间】:2016-04-07 14:02:54
【问题描述】:

我正在将现有的自定义鼠标驱动程序设备升级到 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的代码sn-p

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]);
}

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      相关资源
      最近更新 更多