Geräteereignistypen

Um den Geräteereignistyp beim Verarbeiten einer WM _ DEVICECHANGE-Nachricht zu bestimmen, untersuchen Sie den wParam-Parameter. Der Wert von wParam bestimmt die Bedeutung der ereignisspezifischen Daten im lParam-Parameter. Im Allgemeinen identifizieren die ereignisspezifischen Daten das Gerät und stellen zusätzliche Details zum Ereignis bereit. 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 immer dann ein Geräteereignis vom Typ DBT _ DEVICECONTEXTVAL (d. h. eine WM _ DEVICECHANGE-Nachricht mit auf DBT DEVICECONTEXTVAL festgelegter wParam), _ 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 überträgt ein DBT _ DEVICEQUERYREMOVE-Geräteereignis, um die Berechtigung zum Entfernen eines Geräts anzufordern. Um festzustellen, 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 BROADCAST QUERY DENY zurückgegeben _ _ wird. 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. An diesem Punkt kann die Anwendung das Entfernen nicht abbrechen. Wenn sie also das Gerät verwendet, muss sie sich auf die Entfernung vorbereiten, um Datenverluste zu verhindern. Dies ist besonders wichtig, wenn eine Netzwerkverbindung entfernt wird. Die Anwendung muss bestimmen, ob eine der geöffneten Dateien oder Pipes auf dieser Verbindung vorhanden ist. Dies kann erreicht werden, indem der Netzwerkressourcenbezeichner in den ereignisspezifischen Daten der Nachricht mit den Ressourcenbezeichnern verglichen wird, 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 anzufordern (Andocken oder Abdocken). 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 Andockens oder Abdockens 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 eigene benutzerdefinierte Ereignistypen erstellen. Benutzerdefinierte Ereignisse werden nur an Anwendungen gesendet, die sich für die Geräteereignisbenachrichtigung auf einem bestimmten Gerät registriert haben, und können nur von Kernelmodustreibern initiiert werden. Weitere Informationen finden Sie unter DBT _ CUSTOMEVENT.