Introduzione alle destinazioni di I/O

Gli argomenti di questa sezione descrivono come un driver WDF (Windows Driver Frameworks) può inoltrare una richiesta di I/O o e inviare una nuova richiesta a un altro driver, denominata destinazione I/O.

Quando un driver di funzione, un driver di filtro o un driver miniport riceve una richiesta di I/O, il driver potrebbe essere in grado di elaborare la richiesta da solo o potrebbe richiedere l'assistenza di altri driver. Se il driver necessita di assistenza, può inoltrare la richiesta a un altro driver oppure creare una o più nuove richieste e inviarle a un altro driver.

In Kernel-Mode Driver Framework, una destinazione di I/O rappresenta un oggetto dispositivo di destinazione di una richiesta di I/O. Una funzione, un filtro o un driver miniport può usare una destinazione di I/O per inviare richieste di I/O a un altro driver. Questi driver spesso inviano le richieste di I/O al driver inferiore successivo nello stack di driver. Pertanto, ogni funzione basata su framework, filtro e miniport driver ha una destinazione di I/O locale per ogni dispositivo, ovvero il driver successivo del dispositivo.

In alcuni casi, un driver deve inviare una richiesta di I/O a una destinazione diversa, ovvero la parte superiore di uno stack di driver diverso o, raramente, alcuni altri driver all'interno dello stack del driver di invio. Pertanto, il framework fornisce anche destinazioni di I/O remote, costituite da tutte le destinazioni di I/O, ad eccezione della destinazione I/O locale.

Ogni destinazione di I/O è rappresentata da un oggetto di destinazione di I/O. Ogni oggetto di destinazione I/O è principalmente una coda che controlla quando una richiesta viene recapitata all'oggetto dispositivo di destinazione. Quando un driver invia una richiesta a una destinazione di I/O, il framework archivia la richiesta nella coda finché non può recapitare la richiesta all'oggetto dispositivo di destinazione.

Il framework supporta sia destinazioni di I/O generali che destinazioni di I/O specializzate:

  • Le destinazioni di I/O generali possono essere usate da tutti i driver di funzione, filtro e miniport, ma non supportano formati di dati specifici del dispositivo.

  • Le destinazioni di I/O specializzate abilitano la funzione, il filtro e i driver miniport per inviare facilmente richieste di I/O che richiedono formattazione dei dati speciali e specifiche di destinazione. Attualmente, il framework fornisce supporto per le seguenti destinazioni di I/O specializzate:

Se il framework fornisce destinazioni di I/O specializzate che supportano il formato dati del dispositivo, il driver deve usare le destinazioni di I/O specializzate. In caso contrario, il driver deve usare destinazioni di I/O generali.