Вызов PoStartNextPowerIrp из драйвера фильтра
Начиная с Windows Vista вызов PoStartNextPowerIrp не требуется, и вызов этой подпрограммы не выполняет никаких операций управления питанием. Однако в Windows Server 2003, Windows XP и Windows 2000 драйвер фильтра должен вызывать PoStartNextPowerIrp один раз для каждого IRP_MN_QUERY_POWER или IRP_MN_SET_POWER запроса, получаемого драйвером. Время вызова зависит от типа запроса и от того, завершится ли драйвер сбоем или успешной отправкой запроса, как показано в следующей таблице.
Тип запроса | Если драйвер успешно выполняет запрос, происходит вызов: | Если драйвер не выполняет запрос, происходит вызов: |
---|---|---|
IRP_MN_QUERY_POWER (состояние питания устройства) |
В процедуре IoCompletion непосредственно перед возвратом. |
В подпрограмме DispatchPower перед вызовом IoCompleteRequest. |
IRP_MN_QUERY_POWER (состояние питания системы) |
В подпрограмме DispatchPower после получения снимите блокировку и перед настройкой расположения стека IRP. |
В подпрограмме DispatchPower перед вызовом IoCompleteRequest. |
IRP_MN_SET_POWER (состояние питания устройства) |
В процедуре IoCompletion непосредственно перед возвратом. |
Не допускается. |
IRP_MN_SET_POWER (состояние питания системы) |
В подпрограмме DispatchPower после получения снимите блокировку и перед настройкой расположения стека IRP. |
Не допускается. |