Share via


Introduzione agli oggetti driver

Il gestore di I/O crea un oggetto driver per ogni driver installato e caricato. Gli oggetti driver vengono definiti usando strutture DRIVER_OBJECT .

Quando il gestore di I/O chiama la routine DriverEntry di un driver, fornisce l'indirizzo dell'oggetto driver del driver. L'oggetto driver contiene lo spazio di archiviazione per i punti di ingresso a molte routine standard di un driver. Il conducente è responsabile del riempimento di questi punti di ingresso.

La figura seguente illustra un oggetto driver, con il set di routine standard definite dal sistema che i driver di livello più basso e superiore possono o devono avere.

Ogni routine standard con un asterisco accanto al nome riceve un pacchetto di richiesta I/O come input. Ognuna di queste routine standard riceve anche un puntatore all'oggetto dispositivo di destinazione per la richiesta di I/O.

diagramma che illustra un oggetto driver.

Gestione I/O definisce il tipo di oggetto driver e usa gli oggetti driver per registrare e tenere traccia delle informazioni sulle immagini caricate dei driver. Si noti che i punti di ingresso dispatch (DDDispatchXxx tramite DDDispatchYyy) nell'oggetto driver corrispondono ai codici di funzione principali (IRP_MJ_XXX) passati nelle posizioni dello stack I/O dei provider di integrazione.

Il gestore di I/O indirizza ogni IRP prima a una routine di invio fornita dal driver. La routine dispatch di un driver di livello più basso chiama in genere una routine di supporto di I/O (IoStartPacket) per accodare (o passare) ogni IRP con argomenti validi per la routine StartIo del driver. La routine StartIo avvia l'operazione di I/O richiesta in un determinato dispositivo. I driver di livello superiore in genere non hanno routine StartIo , ma possono.