Condividi tramite


Rilevamento dell'accensione del dispositivo quando il sistema torna a S0

[Si applica solo a KMDF]

Quando il sistema torna allo stato di lavoro (S0) da uno stato a basso consumo, il gestore PnP invia un IRP di alimentazione del sistema (IRP_MN_SET_POWER) per restituire il dispositivo allo stato di lavoro (D0). WDF gestisce l'IRP di impostazione dell'alimentazione del sistema. Tuttavia, poiché nello scenario multi-componente il driver si è registrato direttamente presso il framework di risparmio di energia (PoFx), il driver deve chiamare PoFxReportDevicePoweredOn quando il dispositivo ha completato la transizione al suo stato di alimentazione completamente attivo (D0). Il driver può eseguire questa operazione registrando una routine di pre-elaborazione WDM per ricevere una notifica quando arriva un IRP di alimentazione del sistema.

Il driver può usare la procedura seguente:

  1. Chiamare WdfDeviceInitAssignWdmIrpPreprocessCallback per registrare una funzione di callback EvtDeviceWdmIrpPreprocess per IRP_MN_SET_POWER. Nel callback il driver imposta un flag nell'estensione del dispositivo per indicare che deve chiamare PoFxReportDevicePoweredOn dal successivo EvtDeviceD0Entry callback.
  2. In EvtDeviceD0Entry, se il flag è impostato, il driver cancella il flag e chiama PoFxReportDevicePoweredOn.
  3. Il driver controlla anche il flag in EvtDeviceSelfManagedIoFlush. Se il flag è impostato, il dispositivo non è riuscito a tornare a D0 e il dispositivo è stato rimosso. In questo caso, il driver chiama PoFxReportDevicePoweredOn e quindi si deregistra dal framework di gestione dell'alimentazione.