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: