2016-04-07 6 views
1

既存のカスタムマウスドライバデバイスをOSX 10.11にアップグレードしています。 appleがusbスタックを更新したことがわかります。10.11用osxドライバのアップグレード(USBスタックの変更)

参照してください - https://developer.apple.com/library/mac/releasenotes/General/APIDiffsMacOSX10_11/Objective-C/Kernel.html

を私の既存のコードが削除されたクラス(IOUSBHIDDriverIOUSBInterfaceIOUSBPipeなど)の多くを使用しています。 10.11にアップグレードするための代替情報や有用な情報を見つけるのに助けてくれる人はいますか?

多くのクラスとヘッダーファイルの名前が変更されており、上記のリンクからの置き換えを見つけることができます。しかし、コードでは廃止されたクラスIOUSBPipeとそのメソッドも使用されています。私はそれが何のために使われているか完全に理解していません。誰かがIOUSBPipeの目的を説明できるだけでなく、私にOSX 10.11の代替クラスを提案できますか?

この行の下にパイプが基本的にUSBエンドポイントの一つの方向を表し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

を扱うコードスニペットを見つけてください。あなたはそれからデータを送受信できます。私はMac OS Xでのカーネルレベルの開発についてはよく分かりませんが、投稿したdocumentを見ると、IOUSBPipeの代わりにIOUSBHostPipeを使用すると思われます。

関連する問題