Panoramica del completamento di Wait/Wake IRP
Un'IRP di attesa/riattivazione viene completata quando arriva un segnale di riattivazione. Il segnale di riattivazione è specifico del dispositivo, ma è in genere un normale evento di servizio per il dispositivo. Ad esempio, un anello in ingresso potrebbe causare il risveglio di un modem in sospensione.
Nella figura seguente vengono illustrati i passaggi per completare un'IRP di attesa/riattivazione.
Quando si verifica il segnale, il controllo entra nuovamente nel driver del bus nel punto in cui il bus rileva che il dispositivo è stato riattivato. Il driver del bus esegue il servizio dell'evento in base alle esigenze e chiama IoCompleteRequest per completare il IRP_MN_WAIT_WAKE IRP per il relativo PDO.
Il gestore I/O chiama quindi la routine IoCompletion impostata dal driver successivo nello stack di dispositivi. Nella routine IoCompletion , il driver esegue il servizio del segnale di riattivazione in base alle esigenze e chiama IoCompleteRequest per completare l'IRP . Il gestore di I/O continua a chiamare routine IoCompletion che funzionano per eseguire il backup dello stack di dispositivi fino a quando tutti i driver non hanno completato l'IRP.
Nella routine IoCompletion , qualsiasi driver che enumera più di un dispositivo figlio (crea più di un OGGETTO PDO) e ha ricevuto richieste di attesa/riattivazione da più di un dispositivo deve inviare un'IRP di attesa/riattivazione per ricompilarsi per attendere/riattivare un altro figlio. Per informazioni dettagliate, vedere Informazioni sul percorso degli IRP di attesa/riattivazione tramite un albero dei dispositivi.
Dopo aver chiamato le routine IoCompletion impostate dai driver quando hanno passato l'IRP nello stack, il gestore di I/O richiama la routine di callback impostata dal proprietario dei criteri di alimentazione quando ha richiesto l'IRP di attesa/riattivazione. Nella routine di callback, il proprietario dei criteri deve restituire il dispositivo allo stato di lavoro e completare un'IRP di attesa/riattivazione in sospeso per il pdO del figlio, se presente.
Il completamento dell'IRP dell'elemento figlio causa la chiamata delle routine I/ O impostate dai driver nello stack di dispositivi figlio e così via. Alla fine, il proprietario dei criteri che ha avviato l'IRP di attesa/riattivazione originale nel devnode determina che il dispositivo ha affermato il segnale di riattivazione e tutti gli IR di attesa/riattivazione in sospeso saranno completati.