Используя обратный вызов процесса Windows для изменений устройства, я могу настроить дескриптор, когда устройство прибывает, что позволяет мне просто взглянуть на его атрибуты устройства, такие как идентификаторы оборудования, без необходимости перечисления каких-либо устройств.
Однако при «отключении устройства» полученная ручка недействительна, что кажется правильным, поскольку устройство больше не подключено, но я не могу посмотреть атрибуты устройства. Есть ли способ, которым ручку все еще можно использовать?
DEV_BROADCAST_HDR* devHDR = reinterpret_cast<DEV_BROADCAST_HDR*>(lParam);
if (devHDR->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
DEV_BROADCAST_DEVICEINTERFACE* devInterface = reinterpret_cast<DEV_BROADCAST_DEVICEINTERFACE*>(lParam);
DeviceHandle = CreateFile(devInterface->dbcc_name, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
if(DeviceHandle == != INVALID_HANDLE_VALUE){
// arrive gets here
} else {
// disconnect gets here
}
}
По сути, поскольку я не могу получить действительный дескриптор при отключении, я не могу получить идентификаторы оборудования и другие данные из структуры DEV_BROADCAST_DEVICEINTERFACE. Есть ли другой способ получить аппаратные идентификаторы устройства при отключении?