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


Вызов 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 (состояние питания системы)

В процедуре обратного вызова PoRequestPowerIrp для связанного IRP устройства непосредственно перед завершением системного IRP.

В подпрограмме DispatchPower перед вызовом IoCompleteRequest.

IRP_MN_SET_POWER (состояние питания устройства)

В процедуре IoCompletion непосредственно перед возвратом.

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

IRP_MN_SET_POWER (состояние питания системы)

В процедуре обратного вызова PoRequestPowerIrp для связанного IRP устройства непосредственно перед завершением системного IRP.

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