Freigeben über


Meldungsgerät, das eingeschaltet ist, wenn das System zu S0 zurückkehrt

[Gilt nur für KMDF]

Wenn das System aus einem Zustand mit geringer Leistung in den Betriebszustand (S0) zurückkehrt, sendet der PnP-Manager eine Systemsatzleistungs-IRP (IRP_MN_SET_POWER), um das Gerät in den Betriebszustand (D0) zurück zu versetzen. WDF verarbeitet die IRP für Den Systemsatz. Da der Treiber im Szenario mit mehreren Komponenten jedoch direkt beim Power Management Framework (PoFx) registriert wurde, muss der Treiber PoFxReportDevicePoweredOn aufrufen, wenn das Gerät den Übergang zum vollständigen Ein-/Aus-Zustand (D0) abgeschlossen hat. Der Treiber kann dies erreichen, indem er eine WDM-Vorverarbeitungsroutine registriert, um Benachrichtigungen zu erhalten, wenn ein IRP mit Systemsatzleistung eintrifft.

Der Treiber kann das folgende Verfahren verwenden:

  1. Rufen Sie WdfDeviceInitAssignWdmIrpPreprocessCallback auf , um eine EvtDeviceWdmIrpPreprocess-Rückruffunktion für IRP_MN_SET_POWER zu registrieren. Im Rückruf legt der Treiber ein Flag in seiner Geräteerweiterung fest, um anzugeben, dass poFxReportDevicePoweredOn vom nächsten EvtDeviceD0Entry-Rückruf aufgerufen werden muss.
  2. Wenn das Flag in EvtDeviceD0Entry festgelegt ist, löscht der Treiber das Flag und ruft PoFxReportDevicePoweredOn auf.
  3. Der Treiber überprüft auch das Flag in EvtDeviceSelfManagedIoFlush. Wenn das Flag festgelegt ist, konnte das Gerät nicht zu D0 zurückkehren, und das Gerät wurde entfernt. In diesem Fall ruft der Treiber PoFxReportDevicePoweredOn auf und hebt die Registrierung mit dem Power Framework auf.