わかりました。uControllerプロジェクト(ポインティングデバイス)に取り組んでいます。ユーザースペースドライバーを作成しようとしていますIOkit.framework
。
idProductとidVendorを使用して、IOUSBInterfaceInterface300
objを取得できます
問題は私が試してみるときです
kr = (*intf)->USBInterfaceOpen(intf);
で失敗します。kIOReturnExclusiveAccess
おそらく、HID
マネージャがすでに排他的アクセスでデバイスを開いているためです。
ここでは、コードレスkextがHIDManagerによるデバイスの乗っ取りを防ぐことができると述べています
MacでのUSB(HID)割り込みエンドポイントの読み取りと書き込み
idVendor
とを使用してkextを作成し、idProduct
kextloadを使用してロードしました。kextloadから「正常にロード」されました
しかし、どういうわけか私はまだインターフェイスを開くことができませんか?私は何か間違ったことをしていますか?
ファイル名Info.plist(idProductとidVendorを調整したその投稿と同じコンテンツ)を作成してkextを作成し、MyUSBDeviceTest.kextという名前のフォルダーに配置しました。
次に、所有者をroot:wheelに変更し、次にkextをコピーします/System/Library/Extensions
。
sudo kextload -vt /System/Library/Extensions/MyUSBDeviceTest.kext
デバイスを再起動して再接続しようとしましたが、HID
システムからインターフェイスを取得できません