Llamar a PoStartNextPowerIrp desde un controlador de filtro
A partir de Windows Vista, no es necesario llamar a PoStartNextPowerIrp y llamar a esta rutina no realiza ninguna operación de administración de energía. Sin embargo, en Windows Server 2003, Windows XP y Windows 2000, un controlador de filtro debe llamar a PoStartNextPowerIrp una vez por cada IRP_MN_QUERY_POWER o IRP_MN_SET_POWER solicitud que recibe el controlador. Cuando se produce la llamada depende del tipo de solicitud y de si el controlador producirá un error o se realizará correctamente la solicitud, como se muestra en la tabla siguiente.
Tipo de solicitud | Si el controlador se realiza correctamente la solicitud, se produce la llamada: | Si el controlador produce un error en la solicitud, se produce la llamada: |
---|---|---|
IRP_MN_QUERY_POWER (estado de alimentación del dispositivo) |
En una rutina de IoCompletion , inmediatamente antes de volver. |
En la rutina DispatchPower , antes de llamar a IoCompleteRequest. |
IRP_MN_QUERY_POWER (estado de alimentación del sistema) |
En la rutina DispatchPower , después de adquirir el bloqueo de eliminación y antes de establecer la ubicación de la pila irP. |
En la rutina DispatchPower , antes de llamar a IoCompleteRequest. |
IRP_MN_SET_POWER (estado de alimentación del dispositivo) |
En una rutina de IoCompletion , inmediatamente antes de volver. |
No permitido. |
IRP_MN_SET_POWER (estado de alimentación del sistema) |
En la rutina DispatchPower , después de adquirir el bloqueo de eliminación y antes de establecer la ubicación de la pila irP. |
No permitido. |