Condividi tramite


Uso di routine IoCompletion

Driver di livello superiore che monitorano, su base specifica per IRP, come i driver di livello inferiore hanno eseguito particolari richieste possono avere una o più routine IoCompletion . I driver di livello superiore che allocano gli IRP per inviare richieste a driver inferiori devono avere una routine IoCompletion.

Una routine DispatchRead o DispatchWrite di un driver di livello più alto o intermedio è probabile che imposti una routine IoCompletion per un IRP, perché i driver di livello inferiore devono gestire le richieste di trasferimento in modo asincrono.

Il driver di livello più basso in uno stack di driver non può registrare routine IoCompletion.

I driver in genere non registrano routine di IoCompletion per i runtime di integrazione associati alle operazioni di I/O sincrone. Ad esempio, la routine di un driver di livello superiore DispatchDeviceControl può allocare un IRP utilizzando IoBuildDeviceIoControlRequest. In questo caso, la routine dispatch in genere non registra una routine IoCompletion, perché le richieste di controllo del dispositivo vengono generalmente gestite in modo sincrono. Il driver può invece allocare e inizializzare un oggetto evento, e la sua routine DispatchDeviceControl può attendere che un evento venga inizializzato quando invia gli IRP allocati dal driver. In genere, un driver di livello superiore non registra una routine IoCompletion per un IRP allocato con IoBuildSynchronousFsdRequest, per lo stesso motivo.

Questa sezione contiene gli argomenti seguenti:

Registrazione di una routine di completamento Io

Implementazione di una routine IoCompletion