Tipi di eventi del dispositivo
Per determinare il tipo di evento del dispositivo durante l'elaborazione di un messaggio di WM_DEVICECHANGE, esaminare il parametro wParam. Il valore di wParam determina il significato dei dati specifici dell'evento nel parametro lParam . In generale, i dati specifici dell'evento identificano il dispositivo e forniscono dettagli aggiuntivi sull'evento. Il formato di questi dati dipende dal tipo di dispositivo, ma i primi byte hanno sempre lo stesso formato della struttura DEV_BROADCAST_HDR. Per determinare il formato dei dati, controllare il membro dbch_devicetype .
Il sistema trasmette un evento del dispositivo di tipo DBT_DEVICEARRIVAL,ovvero un messaggio di WM_DEVICECHANGE con wParam impostato su DBT_DEVICEARRIVAL) ogni volta che un dispositivo è stato inserito ed è disponibile per l'uso. Le applicazioni in genere controllano il tipo di dispositivo e iniziano immediatamente a usare il dispositivo, se appropriato.
Il sistema trasmette un evento del dispositivo DBT_DEVICEQUERYREMOVE per richiedere l'autorizzazione per rimuovere un dispositivo. Per determinare se è necessario il dispositivo, un'applicazione può visualizzare una finestra di dialogo per richiedere istruzioni all'utente. Se un'applicazione determina che ha bisogno del dispositivo, può negare questa richiesta e annullare la rimozione restituendo BROADCAST_QUERY_DENY. Se l'applicazione non richiede il dispositivo, deve restituire TRUE. Il sistema invia immediatamente un messaggio di DBT_DEVICEQUERYREMOVEFAILED se un'applicazione o un driver ha annullato una richiesta precedente per rimuovere un dispositivo.
Il sistema trasmette un evento del dispositivo DBT_DEVICEREMOVEPENDING come ultimo avviso prima che un dispositivo venga rimosso. A questo punto, l'applicazione non può annullare la rimozione, quindi se usa il dispositivo deve prepararsi per la rimozione per evitare la perdita di dati. Ciò è particolarmente importante quando viene rimossa una connessione di rete. L'applicazione deve determinare se una delle relative pipe o file aperti si trovano in tale connessione. A tale scopo, è possibile confrontare l'identificatore di risorsa di rete nei dati specifici dell'evento del messaggio con gli identificatori di risorsa ottenuti in precedenza per i file e le pipe. Il sistema trasmette un evento del dispositivo DBT_DEVICEREMOVECOMPLETE quando un dispositivo è stato rimosso e non è più disponibile.
Il sistema trasmette un evento del dispositivo DBT_QUERYCHANGECONFIG per richiedere l'autorizzazione per modificare la configurazione corrente (ancoraggio o scollegata). Qualsiasi applicazione può restituire BROADCAST_QUERY_DENY per negare la richiesta e annullare la modifica. Se un'applicazione nega la richiesta, il sistema invia un messaggio di DBT_CONFIGCHANGECANCELED . Se la configurazione corrente è stata modificata, a causa di un dock o di un'scollegata, il sistema invia un messaggio di DBT_CONFIGCHANGED .
Il sistema trasmette un evento del dispositivo DBT_DEVICETYPESPECIFIC ogni volta che si verifica un evento specifico del dispositivo.
I driver possono creare tipi di evento personalizzati. Gli eventi personalizzati vengono inviati solo all'applicazione registrata per la notifica degli eventi del dispositivo in un determinato dispositivo e possono essere avviati solo dai driver in modalità kernel. Per altre informazioni, vedere DBT_CUSTOMEVENT.