0
我目前正在使用Windows服務來檢測USB設備何時插入。 USB連接時,我會成功收到通知。但是現在我似乎無法從單位掩碼中獲取驅動器號。我認爲是由於面具不正確。獲取UnitMask的驅動器盤符
DEV_BROADCAST_DEVICEINTERFACE notificationFilter;
ZeroMemory(¬ificationFilter, sizeof(notificationFilter));
notificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
notificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
//notificationFilter.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;
notificationFilter.dbcc_classguid = GUID_DEVINTERFACE_VOLUME;
HDEVNOTIFY hDeviceNotify = RegisterDeviceNotification(
handle, // events recipient
¬ificationFilter, // type of device
DEVICE_NOTIFY_SERVICE_HANDLE // type of recipient handle
);
PDEV_BROADCAST_DEVICEINTERFACE deviceInterface = static_cast<PDEV_BROADCAST_DEVICEINTERFACE>(lpEventData);
switch (dwEventType)
{
case DBT_DEVICEARRIVAL:
if (deviceInterface->dbcc_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
if (::IsEqualGUID(deviceInterface->dbcc_classguid, GUID_DEVINTERFACE_VOLUME))
{
PDEV_BROADCAST_VOLUME pVol = (PDEV_BROADCAST_VOLUME)deviceInterface;
// Here is where i would process the unitmask
}
}
所以我上面的代碼應該在pVol變量中有單位掩碼。然而我接受的面具是1408590605這似乎不正確。任何人都可以看到我是否做了任何錯誤的方式,我這樣做。