2010-01-11 60 views
2

我想開發一個C#應用程序,可以與USB HID進行通信。我已經重寫我的WndProc方法,這樣是捕獲所有WM_DEVICECHANGE事件,並傳遞DeviceChange方法的方法OnDeviceChange(此代碼實際上是從賈恩·阿克塞爾森借來的),它看起來是這樣的....DeviceAttached消息從來沒有來過

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的經驗有什麼想法?

回答

0

在調試會話中,Visual Studio可以省略消息。

我不明白爲什麼要錯過DBT_DEVICEARRIVALDBT_DEVICEREMOVECOMPLETE。只要在行 if (m.Msg == DeviceManagement.WM_DEVICECHANGE)未設置斷點。

我已經回答,因爲帖子未關閉。

相關問題