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.
Gli oggetti di richiesta del framework rappresentano richieste di I/O inviate dal gestore di I/O a un driver. I driver basati sul framework elaborano ogni richiesta di I/O chiamando i metodi oggetto della richiesta del framework .
Ogni richiesta di I/O contiene un di richiesta di I/O WDM (struttura di IRP), ma i driver basati su framework in genere non devono accedere alla struttura IRP.
La maggior parte degli oggetti di richiesta del framework viene creata dal framework, ma il driver può anche creare oggetti di richiesta.
Richiedere oggetti creati dal framework
Quando un driver basato su framework riceve un pacchetto di richiesta di I/O (IRP) dal gestore di I/O, il framework intercetta l'IRP e crea un oggetto richiesta framework. Il framework inserisce l'oggetto richiesta in una coda di I/O e, se il driver ha registrato gestori di richieste per la coda, chiama il gestore corrispondente.
Il diagramma seguente illustra i passaggi che si verificano quando il framework crea un oggetto richiesta per un'operazione di lettura.
I passaggi seguenti corrispondono ai numeri del diagramma precedente:
Un'applicazione in modalità utente legge un file chiamando la funzione ReadFile di Microsoft Win32.
La funzione ReadFile chiama la gestione I/O, che viene eseguita in modalità kernel.
Il gestore di I/O alloca una struttura IRP e archivia un codice di funzione IRP_MJ_READ nella struttura.
Il gestore I/O chiama la routine standard del driver DispatchRead per il driver x, passando un puntatore alla struttura IRP. Poiché il driver x è un driver basato su framework, il framework fornisce la routine DispatchRead del driver.
Il framework crea un oggetto richiesta che rappresenta la struttura IRP. Il framework aggiunge l'oggetto richiesta a uno degli oggetti coda del driver.
Il framework chiama il gestore di richieste EvtIoRead del driver, passando un handle di oggetto coda e un handle di oggetto richiesta.
Richiedere oggetti creati da un driver
I driver basati su framework possono anche creare oggetti di richiesta. Ad esempio, un driver potrebbe creare oggetti di richiesta se riceve una richiesta di lettura o scrittura per una quantità di dati maggiore rispetto alle destinazioni di I/O del driver che possono gestire contemporaneamente. In una situazione di questo tipo, il driver può dividere i dati in diverse richieste più piccole e usare oggetti richiesta aggiuntivi per inviare queste richieste più piccole a una o più destinazioni di I/O.
Per creare un oggetto richiesta, il driver deve chiamare WdfRequestCreate seguito da metodi dell'oggetto framework che inizializzano la richiesta, ad esempio WdfUsbTargetPipeFormatRequestForRead.
Se un driver riceve IRP WDM in una routine dispatch WDM e quindi li gestisce o li inoltra usando il framework, il driver può chiamare WdfRequestCreateFromIrp.