Destinazioni di I/O generali in UMDF

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.

Le destinazioni di I/O generali, che possono essere locali o remote, sono destinazioni di I/O che non supportano formati di dati speciali specifici del dispositivo, ad esempio blocchi di richiesta USB. Prima che i driver inviino dati a una destinazione di I/O generale, devono inserire i dati in un buffer di scrittura in un formato che la destinazione di I/O e il dispositivo possano interpretare. Analogamente, quando i driver leggono dati da una destinazione di I/O generale, i driver devono essere in grado di interpretare il contenuto dei buffer di dati ricevuti dalla destinazione.

Destinazioni di I/O locali
I driver inviano spesso richieste di I/O al driver inferiore successivo nello stack di driver. Di conseguenza, ogni driver basato su UMDF ha una destinazione di I/O predefinita per ogni dispositivo, ovvero il driver inferiore successivo del dispositivo. La destinazione di I/O predefinita per il driver basato su UMDF di livello più basso è il riflettore in modalità kernel.

A volte un driver basato su UMDF deve inviare richieste di I/O a una destinazione di I/O basata su handle file, ad esempio un file o un socket di rete. Pertanto, il framework fornisce anche oggetti di destinazione di I/O basati su handle file.

Sia la destinazione di I/O predefinita che le destinazioni di I/O basate su gestione file sono chiamate destinazioni di I/O locali, perché i driver basati su UMDF usano queste destinazioni per inviare richieste di I/O ai dispositivi supportati dallo stack di driver.

Destinazioni di I/O remote
In alcuni casi, un driver deve inviare una richiesta di I/O a uno stack di driver diverso. Pertanto, il framework fornisce anche destinazioni di I/O remote, costituite da tutte le destinazioni di I/O, ad eccezione delle destinazioni di I/O locali.

Una destinazione di I/O remota potrebbe essere un dispositivo che lo stack di driver non supporta, un file nel dispositivo o un'interfaccia del dispositivo per tale dispositivo.

Le sezioni seguenti descrivono come inizializzare e usare una destinazione di I/O generale: