USB HID と通信できる C# アプリケーションを開発しようとしています。WndProc メソッドをオーバーライドして、すべての WM_DEVICECHANGE イベントをキャッチし、DeviceChange メソッドをメソッド OnDeviceChange (このコードは実際には Jan Axelson から借用したもの) に渡します。これは次のようになります....
protected override void WndProc( ref Message m )
{
try
{
// The OnDeviceChange routine processes WM_DEVICECHANGE messages.
if ( m.Msg == DeviceManagement.WM_DEVICECHANGE )
{
OnDeviceChange( m );
}
// Let the base form process the message.
base.WndProc( ref m );
}
catch ( Exception ex )
{
DisplayException( this.Name, ex );
throw ;
}
}
ただし、何らかの理由で、デバイスを接続するたびに、それがマウス、キーボード、または開発中のデバイスであるかどうかにかかわらず、すべて HID であり、WParam の値は常に 0x7 です。
DBT.h をチェックインしたところ、0x0007 の値は ...
#define DBT_DEVNODES_CHANGED 0x0007
/*
* Message = WM_DEVICECHANGE
* wParam = DBT_QUERYCHANGECONFIG
* lParam = 0
*
* sent to ask if a config change is allowed
*/....
最初のメッセージが届いた後に停止するだけではなく、すべてのメッセージを調べて、すべてのメッセージの値が常に 0x0007 になるようにします。DeviceAttached または DeviceRemoved イベントが表示されないのはなぜですか?
USBの経験がある人は何か考えがありますか?