Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Wanneer een stuurprogramma een wacht-/wake-IRP aanvraagt, moet het een callback-routine opgeven, zodat het apparaat kan worden geretourneerd naar de werkstatus (D0) wanneer de wake-upgebeurtenis plaatsvindt. Nadat de wake-upgebeurtenis plaatsvindt en alle stuurprogramma's de IRP hebben voltooid, roept het systeem de callback-routine aan die is doorgegeven aan PoRequestPowerIrp.
Omdat deze callback-routine is ingesteld namens het stuurprogramma dat afkomstig is van het IRP, en niet voor een stuurprogramma dat de IRP verwerkt, mag het geen PoStartNextPowerIrp aanroepen; alleen de IoCompletion-routines die zijn ingesteld als stuurprogramma's de IRP omlaag doorgeven aan de stack, moeten de volgende energie-IRP starten. Houd er rekening mee dat de beleidseigenaar niet alleen de IRP verzendt, maar deze afhandelt, en het kan daarom een IoCompletion-routine instellen terwijl de IRP wordt doorgegeven aan de stack, naast het instellen van een callback-routine wanneer het de wacht-/wake-IRP aanvraagt.
De callback-routine heeft de volgende verantwoordelijkheden:
Als de bestuurder meer dan één apparaat aanstuurt, bepaalt u welk apparaat het ontwaken heeft gesignaleerd.
Behandel de gebeurtenis die het ontwaaksignaal heeft veroorzaakt.
Stel het apparaat in dat de ontwaak in de D0-status heeft gesignaleerd door PoRequestPowerIrp aan te roepen om een PowerDeviceD0-aanvraag te verzenden. Het stuurprogramma moet ook PoSetPowerState aanroepen om de energiebeheerder op de hoogte te stellen van de energiestatus van het nieuwe apparaat. Zie voor meer informatie Verzenden IRP_MN_QUERY_POWER of IRP_MN_SET_POWER voor Apparaatstroomstatussen.
Als het stuurprogramma een routine Annuleren voor de IRP heeft ingesteld, roept u IoSetCancelRoutine aan om de routine Annuleren opnieuw in te stellen op NULL.
Als het stuurprogramma het energiebeleid beheert voor meer dan één apparaat, verlaag dan de wacht/wake-referentieteller. Als het aantal niet-nul is, wat aangeeft dat een ander apparaat eerder een wacht-/wake-IRP had verzonden, vraagt u een andere wacht-/wake-IRP (PoRequestPowerIrp) aan voor de bijbehorende PDO.
Een PCI-apparaat kan bijvoorbeeld wachten/waken hebben ingeschakeld voor zowel een modem als een NIC (Network Interface Card). Als de NIC het systeem ontwaakt (waardoor de IRP wordt voltooid), moet de PCI-FDO een andere wacht-/wake-IRP naar zichzelf verzenden, zodat de modem nog steeds kan worden geactiveerd.
Omdat het stuurprogramma dat het wacht-/wake-IRP heeft aangevraagd, het energiebeleid voor de apparaatstack controleert, is het verantwoordelijk voor het retourneren van het apparaat naar de werkstatus wanneer de IRP is voltooid. Hoewel lagere stuurprogramma's mogelijk al fysiek energie op het apparaat hebben toegepast, moet de beleidseigenaar PoRequestPowerIrp aanroepen om een IRP_MN_SET_POWER aanvraag voor apparaatstroomstatus D0 te verzenden. Pas nadat alle stuurprogramma's in de apparaatstack deze IRP voor power-up hebben verwerkt, wordt het apparaat teruggezet naar de werkstatus.