Geräteereignistypen
Untersuchen Sie den wParam-Parameter, um den Geräteereignistyp bei der Verarbeitung einer WM_DEVICECHANGE-Nachricht zu bestimmen. Der Wert von wParam bestimmt die Bedeutung der ereignisspezifischen Daten im lParam-Parameter . Im Allgemeinen identifizieren die ereignisspezifischen Daten das Gerät und bieten zusätzliche Details zum Ereignis. Das Format dieser Daten hängt vom Gerätetyp ab, aber die ersten Bytes haben immer das gleiche Format wie die DEV_BROADCAST_HDR-Struktur . Um das Format der Daten zu bestimmen, überprüfen Sie den dbch_devicetype Member.
Das System überträgt ein Geräteereignis vom Typ DBT_DEVICEARRIVAL (d. h. eine WM_DEVICECHANGE Nachricht, bei der wParam auf DBT_DEVICEARRIVAL festgelegt ist), wenn ein Gerät eingefügt wurde und zur Verwendung verfügbar ist. Anwendungen überprüfen in der Regel den Gerätetyp und beginnen bei Bedarf sofort mit der Verwendung des Geräts.
Das System sendet ein DBT_DEVICEQUERYREMOVE-Geräteereignis , um die Berechtigung zum Entfernen eines Geräts anzufordern. Um zu bestimmen, ob das Gerät benötigt wird, kann eine Anwendung ein Dialogfeld anzeigen, in dem der Benutzer zur Eingabe von Anweisungen aufgefordert wird. Wenn eine Anwendung feststellt, dass sie das Gerät benötigt, kann sie diese Anforderung ablehnen und die Entfernung abbrechen, indem sie BROADCAST_QUERY_DENY zurückgibt. Wenn die Anwendung das Gerät nicht benötigt, muss sie TRUE zurückgeben. Das System sendet sofort eine DBT_DEVICEQUERYREMOVEFAILED-Nachricht , wenn eine Anwendung oder ein Treiber eine vorherige Anforderung zum Entfernen eines Geräts abgebrochen hat.
Das System überträgt ein DBT_DEVICEREMOVEPENDING-Geräteereignis als letzte Warnung, bevor ein Gerät entfernt wird. Zu diesem Zeitpunkt kann die Anwendung die Entfernung nicht abbrechen. Wenn sie das Gerät verwendet, muss sie sich daher auf die Entfernung vorbereiten, um Datenverluste zu verhindern. Dies ist besonders wichtig, wenn eine Netzwerkverbindung entfernt wird. Die Anwendung muss bestimmen, ob sich eine ihrer geöffneten Dateien oder Pipes über diese Verbindung befindet. Dazu kann der Netzwerkressourcenbezeichner in den ereignisspezifischen Daten der Nachricht mit den Ressourcenbezeichnern verglichen werden, die zuvor für die Dateien und Pipes abgerufen wurden. Das System überträgt ein DBT_DEVICEREMOVECOMPLETE-Geräteereignis , wenn ein Gerät entfernt wurde und nicht mehr verfügbar ist.
Das System überträgt ein DBT_QUERYCHANGECONFIG-Geräteereignis , um die Berechtigung zum Ändern der aktuellen Konfiguration (Andocken oder Abdocken) anzufordern. Jede Anwendung kann BROADCAST_QUERY_DENY zurückgeben, um die Anforderung zu verweigern und die Änderung abzubrechen. Wenn eine Anwendung die Anforderung ablehnt, sendet das System eine DBT_CONFIGCHANGECANCELED Nachricht. Wenn sich die aktuelle Konfiguration aufgrund eines Docks oder Einerock geändert hat, sendet das System eine DBT_CONFIGCHANGED Nachricht.
Das System überträgt ein DBT_DEVICETYPESPECIFIC-Geräteereignis , wenn ein gerätespezifisches Ereignis auftritt.
Treiber können ihre eigenen benutzerdefinierten Ereignistypen erstellen. Benutzerdefinierte Ereignisse werden nur an Anwendungen gesendet, die für die Geräteereignisbenachrichtigung auf einem bestimmten Gerät registriert sind, und können nur von Kernelmodustreibern initiiert werden. Weitere Informationen finden Sie unter DBT_CUSTOMEVENT.