ネットワーク経由でLinuxボックスに接続されたMacOSX(Windowsはすでに実行中)用の仮想USBバスドライバーに取り組んでいます。10.6 および 10.7 では、大容量記憶装置とマウスやキーボードなどの HID デバイスを使用して正常に動作します。
ただし、10.7(.5) 未満の HID デバイスでは、デバイスの削除 (プラグの抜き取り) または単純なアンロードは、1 つのインスタンスが残っているため失敗します (デタッチ後に保持カウントがゼロにならない)。私の 10.6 と 10.7 のテスト環境は、まったく同じ MacBooksPro 8.2 i7 です。
しばらくすると (5 ~ 50 分)、私の側から何もしなくても kext が解放されることがあります。電力モードの変更には依存しないようです。
はい、USBFamily のログ ライブラリと多くの出力がありますが、動作中 (kextunload OK) と動作していない実行の間で、ログ レベル 7 でもログに違いはありません。
大容量ストレージ デバイスがうまく動作しているように見えるため、問題は特に 10.7 未満のダイ HID ドライバー スタック内にあると思いますか?
10.6 と 10.7 の間で USB HID デバイス ドライバー スタックを削除する既知の違いはありますか?
私のkextは、(リモートLinuxボックスで)実際に接続されたUSBデバイスのUSBDeviceを確立/作成する(仮想)ControllerV3派生クラスです。XCode 4.4.1 を使用。
アイデアやヒントを事前にありがとう、Markus
PS: 10.7 未満で非常に多くの HID オブジェクトがドライバー スタックの上にあることは、私には少し奇妙に見えます。kextunload の後 (「..VirDevice has 1 instance」というエラーで)、それらはまだ生きているように見えます。しかし、これは 100% ローカルで接続されている、または接続されていない Logitech マウスと同じです。
私からは、オブジェクト MsVirBus (IOUSBControllerV3 から派生した仮想 USB バス) と Mouse@xaffe003f の両方のオブジェクトが IOUSBDevice 派生オブジェクトであることが最低です。