USB裝置的插拔事件監測

2021-07-12 02:09:34 字數 914 閱讀 1507

做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...