Поделиться через


Вызов 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.

Не допускается.