Udostępnij przez


Typy zdarzeń urządzenia

Aby określić typ zdarzenia urządzenia podczas przetwarzania komunikatu WM_DEVICECHANGE, sprawdź parametr wParam. Wartość wParam określa znaczenie danych specyficznych dla zdarzenia w parametrze lParam. Ogólnie rzecz biorąc, dane specyficzne dla zdarzenia identyfikują urządzenie i udostępniają dodatkowe szczegóły dotyczące zdarzenia. Format tych danych zależy od typu urządzenia, ale kilka pierwszych bajtów zawsze ma taki sam format jak struktura DEV_BROADCAST_HDR. Aby określić format danych, sprawdź element członkowski dbch_devicetype.

System emituje zdarzenie urządzenia typu DBT_DEVICEARRIVAL (czyli komunikat WM_DEVICECHANGE z wParam ustawiony na DBT_DEVICEARRIVAL) za każdym razem, gdy urządzenie zostało wstawione i jest dostępne do użycia. Aplikacje zazwyczaj sprawdzają typ urządzenia i zaczynają używać urządzenia natychmiast, jeśli jest to odpowiednie.

System emituje zdarzenie urządzenia DBT_DEVICEQUERYREMOVE, aby zażądać uprawnień do usunięcia urządzenia. Aby określić, czy urządzenie wymaga, aplikacja może wyświetlić okno dialogowe z monitem użytkownika o instrukcje. Jeśli aplikacja ustali, że potrzebuje urządzenia, może odrzucić to żądanie i anulować usunięcie, zwracając BROADCAST_QUERY_DENY. Jeśli aplikacja nie potrzebuje urządzenia, musi zwrócić true. System natychmiast wysyła komunikat DBT_DEVICEQUERYREMOVEFAILED, jeśli jakakolwiek aplikacja lub sterownik anulował poprzednie żądanie usunięcia urządzenia.

System emituje zdarzenie urządzenia DBT_DEVICEREMOVEPENDING jako ostatnie ostrzeżenie przed usunięciem urządzenia. W tym momencie aplikacja nie może anulować usunięcia, więc jeśli używa urządzenia, musi przygotować się do jego usunięcia, aby zapobiec utracie danych. Jest to szczególnie ważne w przypadku usunięcia połączenia sieciowego. Aplikacja musi określić, czy jakiekolwiek z otwartych plików lub potoków znajdują się w tym połączeniu. Może to zrobić, porównując identyfikator zasobu sieciowego w danych specyficznych dla zdarzenia komunikatu z identyfikatorami zasobów uzyskanymi wcześniej dla plików i potoków. System emituje zdarzenie urządzenia DBT_DEVICEREMOVECOMPLETE, gdy urządzenie zostało usunięte i nie jest już dostępne.

System emituje zdarzenie urządzenia DBT_QUERYCHANGECONFIG, aby zażądać uprawnienia do zmiany bieżącej konfiguracji (dock lub oddokuj). Każda aplikacja może zwrócić BROADCAST_QUERY_DENY, aby odrzucić żądanie i anulować zmianę. Jeśli aplikacja odmówi żądania, system wyśle komunikat DBT_CONFIGCHANGECANCELED. Jeśli bieżąca konfiguracja uległa zmianie ze względu na dokowanie lub oddokowany, system wysyła komunikat DBT_CONFIGCHANGED.

System emituje zdarzenie urządzenia DBT_DEVICETYPESPECIFIC za każdym razem, gdy wystąpi zdarzenie specyficzne dla urządzenia.

Sterowniki mogą tworzyć własne niestandardowe typy zdarzeń. Zdarzenia niestandardowe są wysyłane tylko do aplikacji, która została zarejestrowana na potrzeby powiadomień o zdarzeniu urządzenia na określonym urządzeniu i może być inicjowana tylko przez sterowniki trybu jądra. Aby uzyskać więcej informacji, zobacz DBT_CUSTOMEVENT.