Introduzione alle destinazioni di I/O
Negli argomenti di questa sezione viene descritto come un driver Windows Driver Frameworks (WDF) può inoltrare una richiesta di I/O o creare e inviare una nuova richiesta a un altro driver, denominata destinazione di I/O.
Quando un driver di funzione , il driver di filtro o driver miniport riceve una richiesta di I/O, il driver potrebbe essere in grado di elaborare la richiesta autonomamente o potrebbe richiedere l'assistenza di altri driver. Se il driver necessita di assistenza, può inoltrare la richiesta a un altro driver oppure può creare una o più nuove richieste e inviarle a un altro driver.
In Kernel-Mode Driver Framework, un di destinazione di I/O rappresenta un oggetto dispositivo che è la 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 inviano spesso le richieste di I/O al driver inferiore successivo nello stack di driver. Di conseguenza, ogni funzione basata su framework, filtro e driver miniport ha un destinazione di I/O locale per ogni dispositivo, ovvero il driver successivo inferiore del dispositivo.
In alcuni casi, un driver deve inviare una richiesta di I/O a un'altra destinazione, ovvero la parte superiore di uno stack di driver diverso o, raramente, un altro driver all'interno dello stack del driver di invio. Pertanto, il framework fornisce anche destinazioni di I/O remote, che includono tutte le destinazioni di I/O tranne la destinazione di I/O locale.
Ogni destinazione di I/O è rappresentata da un oggetto di destinazione di I/O . Ogni oggetto di destinazione di 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 fino a quando 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 generali di I/O possono essere utilizzate da tutti i driver di funzione, di filtro e miniport, ma non supportano formati di dati specifici e speciali per dispositivi.
Le destinazioni di I/O specializzate permettono ai driver di funzione, filtro e miniport di inviare facilmente richieste di I/O che richiedono una formattazione dei dati specifica per la destinazione. Attualmente, il framework fornisce supporto per le destinazioni di I/O specializzate seguenti:
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.