1

ローエンドのマシン (XP Pro SP3) でカスタム HID デバイスを何度も抜き差しすると、Windows は新しい USB 接続の認識を停止し、任意の USB ポート (任意のデバイス クラス) で切断します。Driver Verifier をオンにして、エラー コード 0x21D の 0xC9 バグチェック (DRIVER_VERIFIER_IOMANAGER_VIOLATION) を取得しました (IRP ディスパッチ ハンドラーが、削除 IRP を受信したときに、その下のスタックから適切に切り離されていません)。参照されたドライバー ファイルは HIDCORE.SYS です。Windows に組み込まれている HID ドライバーを使用しています。

この問題は、いくつかのコマンドをデバイスに送信する、作成したユーティリティが実行されている場合にのみ発生します。このユーティリティの実行中、USB が「ロックアップ」する前に、デバイスを 3 ~ 30 回接続および切断できます。接続されているデバイスは引き続き機能しますが、新しい接続/切断イベントは認識されません。ローエンド マシンで最も再現性がありますが、ミディアム エンドの PC でも発生することがあります。私たちが見つけた唯一の方法は、再起動することです。アプリケーションを閉じても、USB デバイスが再び認識されることはありません。

切断イベントが発生したときに、デバイスへのすべてのファイル ハンドルを閉じていることを確認しました。

私は RegisterDeviceNotification を使用していません。むしろ、WMI ManagementEventWatcher を使用して、デバイスが接続されたり切断されたりしたときにイベントを取得しています。

この「フリーズ」を回避する方法を知りたいです。アプリケーションがドライバーから適切に切断されていないのか、デバイスが何か問題を起こしているのか、それとも Window XP HID ドライバーに問題があるのか​​はわかりません。

4

0 に答える 0