Condividi tramite


Un utente scollega un dispositivo (UMDF 1)

Avviso

UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2.

Gli esempi di UMDF 1 archiviati sono disponibili nell'aggiornamento degli esempi di driver di Windows 11 versione 22H2 - Maggio 2022.

Per altre info, vedi Introduzione con UMDF.

Mentre un sistema è in esecuzione, un utente può rimuovere un dispositivo in uno dei due modi seguenti: rimuovendo in modo ordinato, il che significa che l'utente informa il sistema che il dispositivo sta per essere rimosso (ad esempio, utilizzando il programma Unplug o Eject Hardware); o tramite rimozione a sorpresa, il che significa che l'utente scollega il dispositivo senza informare il sistema. Se il bus supporta la rimozione a sorpresa (ad esempio, USB), i driver del dispositivo devono essere in grado di gestire la scomparsa improvvisa del dispositivo.

Rimozione ordinata
L'utente richiede la rimozione tramite il programma Unplug o Eject Hardware del sistema, disabilitando il dispositivo tramite Gestione dispositivi o premendo il pulsante di espulsione di un dispositivo espulso. Il framework consente di rimuovere o disabilitare il dispositivo, a meno che il driver non abbia fornito una funzione di callback IPnpCallback::OnQueryRemove e la funzione di callback abbia veto la rimozione.

La figura seguente mostra la sequenza di callback di UMDF in accensione e rimozione. La sequenza inizia nella parte superiore della figura con un dispositivo che si trova nello stato di alimentazione funzionante (D0).

Diagramma di flusso che mostra la sequenza di spegnimento e rimozione ordinata del dispositivo per un driver UMDF.

Rimozione a sorpresa
In questo scenario, un utente scollega un dispositivo in modo imprevisto. Nella sequenza di rimozione a sorpresa, UMDF chiama il callback IPnpCallback::OnSurpriseRemoval per notificare al driver che il dispositivo è stato rimosso in modo imprevisto. Questo callback non è garantito in alcun ordine specifico con gli altri callback nella sequenza di rimozione.

In genere, il driver deve evitare di accedere all'hardware nel percorso di rimozione. Timeout del riflettore se un tentativo di accesso all'hardware attende per un periodo illimitato. Nella figura seguente viene illustrata la sequenza di rimozione delle sorprese per un driver UMDF.

Diagramma di flusso che mostra la sequenza di rimozione a sorpresa per un driver UMDF.