Condividi tramite


Introduzione agli oggetti driver

Il gestore 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. 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 (IRP) come input. Ognuna di queste routine standard riceve anche un puntatore all'oggetto del dispositivo di destinazione per la richiesta di I/O.

diagramma che illustra un oggetto driver.

Il gestore I/O definisce il tipo di oggetto driver e utilizza gli oggetti driver per registrare e monitorare le 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 degli IRP.

Il gestore di I/O indirizza ogni IRP prima a una routine di smistamento fornita dal driver. La routine dispatch di un driver di livello più basso chiama in genere una routine di supporto 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 solitamente non hanno routine StartIo, ma possono averle.