2015-05-22 7 views
5

Sto seguendo un esempio per rilevare il plug in USB flash drive e il rilevamento di plugout in Windows 7. Ricevo la notifica WM_DEVICECHANGE ma non DBT_DEVICEARRIVAL che è quando il dispositivo USB è collegato. è qui sotto:WM_DEVICECHANGE ricevuto ma non DBT_DEVICEARRIVAL nella mia app Qt

+0

L'unica cosa che viene in mente è questo bocconcino: "Si consiglia di non memorizzare questo valore in quanto è probabile che cambi in fase di esecuzione." Controlla se 'effectiveWinId' rimane uguale. Se cambia, devi registrarti di nuovo. –

+0

Ma il messaggio arriva alla finestra, solo la parte secondaria del messaggio no. – zar

+0

L'unica cosa che ho fatto è stato typecast 'effectiveWinId()' su 'HWND', altrimenti il ​​compilatore si stava lamentando di non poter convertire' WId' in 'HWND', non so se questo può farci qualcosa !? ma come lo compilo che se non fossi typecast? – zar

risposta

0

Lo capisco e qui è la soluzione se qualcun altro si imbatte in un problema simile.

Il problema era InterfaceClassGuid nella riga sottostante.

GUID InterfaceClassGuid = HID_CLASSGUID; 

HID_CLASSGUID è stato fissato al seguente nel mio codice:

#define HID_CLASSGUID {0x4d1e55b2, 0xf16f, 0x11cf,{ 0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30}} 

Questo era sbagliato, ho scelto questo su da esempio e mai capito che avrei avuto bisogno di cambiarlo. Ci sono diversi valori da registrare per diversi tipi di notifiche e il sistema di aiuto non è stato di grande aiuto in questo caso, ma qui è l'elenco di GUID valido values.

L'ho modificato come segue e ora ottengo le notifiche desiderate.

#define HID_CLASSGUID {0x745a17a0,0x74d3, 0x11d0, 0xb6fe, 0x00a0c90f57da} 
Problemi correlati