Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Avvertimento
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 informazioni, vedere Introduzione a UMDF.
Il framework definisce gli stati seguenti per le destinazioni di I/O generali:
avviato
La destinazione di I/O è aperta,ovvero disponibile per il driver UMDF, e il driver può inviare richieste di I/O. Il framework recapita le richieste al driver appropriato.
arrestato
La destinazione di I/O è aperta, ma il driver UMDF non può inviare richieste di I/O alla destinazione di I/O, a meno che il driver non passi il flag WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE al parametro Flags in una chiamata al metodo IWDFIoRequest::Send.
Il framework interrompe il recapito delle richieste al driver appropriato.
Chiuso per rimozione delle query
La destinazione di I/O viene temporaneamente chiusa in quanto il dispositivo potrebbe essere rimosso a breve.
chiuso
La destinazione di I/O è chiusa e non può essere avviata o arrestata.
eliminato
Il dispositivo di destinazione di I/O è stato rimosso.
L'enumerazione WDF_IO_TARGET_STATE definisce i valori che rappresentano questi stati.
Stati di destinazione di I/O locali
Il framework apre e avvia automaticamente le destinazioni di I/O locali.
Se necessario, il driver può chiamare IWDFIoTargetStateManagement::Stop per arrestare temporaneamente una destinazione I/O locale e chiamare IWDFIoTargetStateManagement::Start per riavviarlo. Ad esempio, il driver potrebbe arrestare una destinazione di I/O locale se rileva una condizione di errore temporanea e quindi riavviare la destinazione di I/O se la condizione di errore viene corretta.
Se un dispositivo di destinazione di I/O locale viene rimosso, il framework arresta e chiude automaticamente la destinazione di I/O e annulla tutte le richieste di I/O presenti nella coda della destinazione. Il framework notifica al driver che il dispositivo non è più disponibile chiamando le funzioni di callback degli eventi dell'oggetto dispositivo. Per ulteriori informazioni su queste funzioni di callback, vedere gli scenari di PnP e gestione dell'alimentazione in UMDF.
I driver possono chiamare IWDFIoTargetStateManagement::GetState per ottenere lo stato corrente di una destinazione di I/O locale.
Stati di destinazione I/O remoti
I driver devono chiamare IWDFRemoteTarget::OpenFileByName o IWDFRemoteTarget::OpenRemoteInterface per aprire destinazioni di I/O remote. Quando un driver apre una destinazione di I/O remota, il framework avvia automaticamente la destinazione di I/O.
Se necessario, il driver può chiamare IWDFRemoteTarget::Stop per arrestare temporaneamente una destinazione di I/O remota e chiamare IWDFRemoteTarget::Start per riavviarlo.
Se un dispositivo di destinazione di I/O remoto viene rimosso, il framework arresta e chiude automaticamente la destinazione di I/O e annulla tutte le richieste di I/O presenti nella coda della destinazione, a meno che il driver non registri le funzioni di callback degli eventi seguenti:
IRemoteTargetCallbackRemoval::OnRemoteTargetQueryRemove
Informa il driver che un dispositivo di destinazione di I/O remoto potrebbe essere rimosso. Il tuo driver deve chiamare IWDFRemoteTarget::CloseForQueryRemove se vuoi che il driver consenta la rimozione del dispositivo.
IRemoteTargetCallbackRemoval::OnRemoteTargetRemoveComplete
Informa il driver che il dispositivo di destinazione di I/O remoto è stato rimosso. Questa funzione di callback deve chiamare IWDFRemoteTarget::Close.
IRemoteTargetCallbackRemoval::OnRemoteTargetRemoveCanceled
Informa il driver che un tentativo di rimuovere un dispositivo di destinazione di I/O remoto è stato annullato. Se si desidera che il driver continui a utilizzare la destinazione, il driver deve chiamare IWDFRemoteTarget::Reopen. In genere, un driver chiama riaprire dall'interno della funzione di callback OnRemoteTargetRemoveCanceled, ma riaprire può essere invece chiamato dopo che OnRemoteTargetRemoveCanceled restituisce.
I driver possono chiamare IWDFRemoteTarget::GetState per ottenere lo stato corrente di una destinazione di I/O remota.