做usb加密狗時需要監測插拔事件,vc提供了wm_devicechange訊息,但還需要registerdevicenotification()註冊要檢測的「device inte***ce class guid」
才能獲取到有用資訊。
裝置相關的guid有device class guid、device inte***ce class guid、 inte***ce guid。
本次要使用的guid_devinte***ce_usb_device在msdn裡可以查到:
【關鍵**】
在視窗初始化函式裡:
/* 設定usb裝置插拔監測 */
dev_broadcast_deviceinte***ce stdev;
memset(&stdev, 0, sizeof(dev_broadcast_deviceinte***ce));
stdev.dbcc_size = sizeof(dev_broadcast_deviceinte***ce);
stdev.dbcc_devicetype = dbt_devtyp_deviceinte***ce;
stdev.dbcc_classguid = };
registerdevicenotification(getsafehwnd(), &stdev, device_notify_window_handle);
bool ondevicechange(uint neventtype, dword dwdata)
break;
case dbt_devicearrival: // 發現usb裝置
break;
default:
break;
} return true;
}
USB插拔監測
參考 pf netlink socket 監測核心裝置插拔事件 udev 參考 linux的檔案系統是非同步的,也就是說寫乙個檔案不是立刻儲存到介質 硬碟,u盤等 中,而是存到緩衝區內,等積累到一定程度再一起儲存到介質中。如果沒有umount就非法拔出u盤,程式是不知道的,fopen,fwrite等...
USB 裝置插拔事件處理
windows 系統下,裝置連線至電腦或從電腦移除,系統會廣播一條 wm devicechange 訊息到所有應用程式,在程式的訊息處理函式中可以對事件進行相應。class cmaindlg public cdialogimpl 4 5 begin msg map cmaindlg 6 7 mess...
Android監聽USB插拔事件
android監聽usb插拔事件有兩種方式 一種是在mainifest.xml中註冊 android.hardware.usb.action.usb device attached即在usb插入是的action意圖。在android.hardware.usb.usbmanager類中有多種actio...