Вызов 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. |
Не допускается. |