Устройство отчетов включено при возврате системы в S0
[Относится только к KMDF]
Когда система возвращается в рабочее состояние (S0) из состояния с низким энергопотреблением, диспетчер PnP отправляет системный IRP (IRP_MN_SET_POWER), чтобы вернуть устройство в рабочее состояние (D0). WDF обрабатывает системный IRP с питанием. Однако, поскольку в сценарии с несколькими компонентами драйвер непосредственно зарегистрирован в платформе управления питанием (PoFx), драйвер должен вызвать PoFxReportDevicePoweredOn , когда устройство завершило переход на полностью включенное (D0) состояние питания. Драйвер может сделать это, зарегистрировав подпрограмму предварительной обработки WDM, чтобы получать уведомления при поступлении системного IRP с питанием.
Драйвер может использовать следующую процедуру:
- Вызовите WdfDeviceInitAssignWdmIrpPreprocessCallback , чтобы зарегистрировать функцию обратного вызова EvtDeviceWdmIrpPreprocess для IRP_MN_SET_POWER. В обратном вызове драйвер устанавливает флаг в расширении устройства, чтобы указать, что ему необходимо вызвать PoFxReportDevicePoweredOn из следующего обратного вызова EvtDeviceD0Entry .
- Если флаг установлен в EvtDeviceD0Entry, драйвер очищает флаг и вызывает Метод PoFxReportDevicePoweredOn.
- Драйвер также проверяет флаг в EvtDeviceSelfManagedIoFlush. Если флаг установлен, устройству не удалось вернуться в D0 и устройство было удалено. В этом случае драйвер вызывает PoFxReportDevicePoweredOn , а затем отменяет регистрацию в power framework.