Condividi tramite


Routine IoCompletion per i irP di attesa/riattivazione

Il gestore I/O chiama la routine di attesa/riattivazione di IoCompletion di un driver dopo che il driver inferiore successivo nello stack di dispositivi ha completato l'IRP di attesa/riattivazione. Ogni driver di funzione e filtro (FDO) che gestisce un'IRP di attesa/riattivazione deve impostare una routine IoCompletion per l'IRP .

Ogni driver di funzione o filtro imposta una routine IoCompletion in quanto gestisce l'IRP di attesa/riattivazione nel suo percorso verso il basso dello stack di dispositivi. Il proprietario dei criteri di alimentazione del dispositivo, che invia l'IRP, potrebbe quindi avere una routine IoCompletion oltre a una routine di callback. Tenere presente che la routine di callback viene richiamata dopo la routine IoCompletion e che i due hanno requisiti diversi. Per altre informazioni, vedere Routine di attesa/riattivazione.

Le azioni necessarie in una routine IoCompletion di attesa/riattivazione dipendono dal dispositivo e dal tipo di driver. Di seguito sono riportate alcune azioni che un driver potrebbe dover eseguire nella routine di attesa/ riattivazione IoCompletion :

  1. Reimpostare tutti i campi pertinenti nell'estensione del dispositivo. Ad esempio, quando un'IRP di attesa/riattivazione è in sospeso, la maggior parte dei driver imposta un flag e mantiene un puntatore all'IRP nell'estensione del dispositivo.

  2. Reimpostare la routine Annulla , se presente, per l'IRP chiamando IoSetCancelRoutine, specificando un puntatore NULL per la routine.

  3. Chiamare IoCompleteRequest, specificando IO_NO_INCREMENT, per completare l'IRP.

Quando ogni driver successivo completa l'IRP, il gestore I/O passa il controllo alla routine IoCompletion del driver successivo che esegue il backup dello stack.

Dopo aver chiamato le routine IoCompletion impostate dai driver man mano che hanno passato l'IRP di attesa/riattivazione dello stack di dispositivi, il gestore I/O chiama la routine di callback passata a PoRequestPowerIrp dal driver che ha inviato l'IRP. Per altre informazioni, vedere Routine di attesa/riattivazione.