Dela via


Enhetshändelsetyper

Om du vill fastställa enhetens händelsetyp när du bearbetar ett WM_DEVICECHANGE-meddelande granskar du parametern wParam. Värdet för wParam avgör innebörden av händelsespecifika data i parametern lParam. I allmänhet identifierar händelsespecifika data enheten och ger ytterligare information om händelsen. Formatet för dessa data beror på enhetstypen, men de första byteen har alltid samma format som DEV_BROADCAST_HDR strukturen. Om du vill fastställa dataformatet kontrollerar du dbch_devicetype medlem.

Systemet sänder en enhetshändelse av typen DBT_DEVICEARRIVAL (dvs. ett WM_DEVICECHANGE meddelande med wParam inställd på DBT_DEVICEARRIVAL) när en enhet har infogats och är tillgänglig för användning. Program kontrollerar vanligtvis enhetstypen och börjar använda enheten omedelbart om det är lämpligt.

Systemet sänder en DBT_DEVICEQUERYREMOVE enhetshändelse för att begära behörighet att ta bort en enhet. För att avgöra om den behöver enheten kan ett program visa en dialogruta för att be användaren om instruktioner. Om ett program fastställer att det behöver enheten kan det neka den här begäran och avbryta borttagningen genom att returnera BROADCAST_QUERY_DENY. Om programmet inte behöver enheten måste det returnera TRUE-. Systemet skickar omedelbart ett DBT_DEVICEQUERYREMOVEFAILED meddelande om något program eller en drivrutin avbröt en tidigare begäran om att ta bort en enhet.

Systemet sänder en DBT_DEVICEREMOVEPENDING enhetshändelse som en sista varning innan en enhet tas bort. I det här läget kan programmet inte avbryta borttagningen, så om det använder enheten måste det förbereda sig för borttagningen för att förhindra dataförlust. Detta är särskilt viktigt när en nätverksanslutning tas bort. Programmet måste avgöra om någon av dess öppna filer eller rör finns på den anslutningen. Det kan du göra genom att jämföra nätverksresursidentifieraren i händelsespecifika data i meddelandet med resursidentifierarna som tidigare har hämtats för filerna och rören. Systemet sänder en DBT_DEVICEREMOVECOMPLETE enhetshändelse när en enhet har tagits bort och inte längre är tillgänglig.

Systemet sänder en DBT_QUERYCHANGECONFIG enhetshändelse för att begära behörighet att ändra den aktuella konfigurationen (docka eller avdocka). Alla program kan returnera BROADCAST_QUERY_DENY för att neka begäran och avbryta ändringen. Om ett program nekar begäran skickar systemet ett DBT_CONFIGCHANGECANCELED meddelande. Om den aktuella konfigurationen har ändrats på grund av en docka eller avdocka skickar systemet ett DBT_CONFIGCHANGED meddelande.

Systemet sänder en DBT_DEVICETYPESPECIFIC enhetshändelse när en enhetsspecifik händelse inträffar.

Drivrutiner kan skapa egna anpassade händelsetyper. Anpassade händelser skickas endast till program som har registrerats för enhetshändelsemeddelanden på en viss enhet och kan endast initieras av drivrutiner i kernelläge. Mer information finns i DBT_CUSTOMEVENT.