Overdosed - Mi 17.08.05 14:26
Titel: DBT_DEVICEQUERYREMOVE wird nie ausgelöst
Hallo !
Ich versuche per WM_DEVICECHANGE herauszufinden, ob ein bestimmtes USB-Gerät entfernt wird/wurde.
Dazu prüfe ich den WParam auf DBT_DEVICEQUERYREMOVE, nur leider kommt dieses Ereignis nie an.
Die zwei die ich bekomme sind DBT_DEVICEARRIVAL und DBT_DEVICEREMOVECOMPLETE.
Kann mir einer erklären, warum ?
Verarbeitung bei WM_DEVICECHANGE:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| case Msg.wParam of DBT_DEVICEQUERYREMOVE: begin if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_Volume then begin Drive := GetDrive(PDevBroadcastVolume(Msg.lParam)); if Drive = strProgrammDriveLetter then begin bolClose := True; Application.Terminate; end; end; end; end; |
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt.
Overdosed - Fr 19.08.05 00:10
Ok, nach langem Suchen endlich was gefunden.
Damit die Nächsten nicht den gleichen Stress haben wie ich, sollte man sich mal den Toolbox-Artikel zu Gemüte führen:
http://www.toolbox-mag.de/data/tx22005artikel1.pdf
Zitat: |
Es hängt wohl
davon ab, wieviel Lust die Treiberentwickler haben, die
Vorgaben von Microsoft zu implementieren. |
Schade !
Gruss, Perry