Condividi tramite


Routine IoCompletion per i runtime di integrazione di Alimentazione del dispositivo

Al termine dell'IRP, il gestore di I/O chiama le routine IoCompletion registrate dai driver di livello superiore mentre passavano l'IRP verso il basso nello stack.

Ogni volta che un dispositivo entra nello stato D0, ognuno dei relativi driver deve impostare una routine IoCompletion che esegue la maggior parte delle attività necessarie per restituirla allo stato di lavoro. I driver devono impostare una routine IoCompletion per qualsiasi transizione allo stato D0, indipendentemente dal fatto che il dispositivo venga restituito da uno stato di sospensione o immettendo D0 all'avvio del sistema. Nella figura seguente vengono illustrate le attività che devono essere eseguite da una routine IoCompletion .

diagramma che illustra la routine iocompletion di alimentazione del dispositivo.

Queste attività includono:

  • Ripristino dello stato di alimentazione del dispositivo o reinizializzazione del dispositivo, in base alle esigenze e preparazione alla gestione di eventuali operazioni di I/O accodate dai driver mentre il dispositivo non era nello stato di lavoro

  • Chiamata di PoSetPowerState per notificare al risparmio energia che il dispositivo si trova nello stato di alimentazione D0.

  • Chiamando PoStartNextPowerIrp per ricevere l'IRP di alimentazione successiva, se il driver non ha originariamente inviato l'IRP di alimentazione corrente. (Solo Windows Server 2003, Windows XP e Windows 2000).

  • Liberare memoria allocata per il contesto di dispositivo.

  • Chiamando IoReleaseRemoveLock per liberare il blocco acquisito dal driver nella routine DispatchPower quando ha ricevuto l'IRP.

  • Restituzione di STATUS_SUCCESS.

Il conducente del bus non accende il dispositivo finché non deve comunicare con il dispositivo o superiore.

Quando il dispositivo entra in stato di sospensione, un driver deve impostare una routine IoCompletion che chiama PoStartNextPowerIrp (Solo Windows Server 2003, Windows XP e Windows 2000) e rilascia il blocco di rimozione. Tenere presente che un driver non può accedere al dispositivo mentre il dispositivo è in stato di sospensione.