如果我通過程序禁用或啟用了某個設備(比如網卡),從設備管理器就可以看到該設備被禁用或啟用,這樣看來,設備管理器應該是捕獲了操作系統的某個消息或是等到了某個事件或信號,有沒有哪位大神知道設備管理器是如何實現這一塊的?具體用了哪個Win API函數?
ON_WM_DEVICECHANGE()
裡面撲捉
驅動啟用 相當於虛擬device認到
BOOL OnDeviceChange(UINT nEventType,DWORD dwData)
{
//DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*) dwData;
PDEV_BROADCAST_HDR devHdr;
PDEV_BROADCAST_DEVICEINTERFACE devInterface;
switch (nEventType)
{
case DBT_DEVICEREMOVECOMPLETE://移除設備
break;
case DBT_DEVICEARRIVAL://添加設備
if (m_bAuto_Flash_wvkey)
{
devHdr = (PDEV_BROADCAST_HDR)dwData;
devInterface = (PDEV_BROADCAST_DEVICEINTERFACE)devHdr;
if (CheckPidVidByGuid(WceusbshGUID))
OnStartCallFlashWVKey();
}
break;
default:
break;
}
return TRUE;
}