Función PoRegisterDeviceForIdleDetection (wdm.h)
La rutina PoRegisterDeviceForIdleDetection habilita o cancela la detección de inactividad y establece valores de tiempo de espera de inactividad para un dispositivo.
Sintaxis
PULONG PoRegisterDeviceForIdleDetection(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG ConservationIdleTime,
[in] ULONG PerformanceIdleTime,
[in] DEVICE_POWER_STATE State
);
Parámetros
[in] DeviceObject
Puntero al DEVICE_OBJECT creado por el controlador para el dispositivo. En los sistemas Windows 2000 y versiones posteriores, este parámetro puede apuntar a un objeto de dispositivo físico (PDO) o a un objeto de dispositivo funcional (FDO). En Windows 98/Me, este parámetro debe apuntar al PDO del dispositivo subyacente.
[in] ConservationIdleTime
Establece el valor de tiempo de espera (en segundos) que se aplicará cuando la directiva de energía del sistema se optimice para la conservación de la energía. Especifique cero para deshabilitar la detección de inactividad cuando la directiva de conservación esté en vigor.
[in] PerformanceIdleTime
Establece el valor de tiempo de espera (en segundos) que se va a aplicar cuando la directiva de energía del sistema optimiza el rendimiento. Especifique cero para deshabilitar la detección de inactividad cuando la directiva de rendimiento esté en vigor.
[in] State
Especifica el estado de energía del dispositivo que se va a solicitar en una solicitud de IRP_MN_SET_POWER cuando se ha cumplido ConservationIdleTime o PerformanceIdleTime . Los valores posibles son los valores de DEVICE_POWER_STATE .
Valor devuelto
PoRegisterDeviceForIdleDetection devuelve un puntero al contador inactivo para indicar que se ha habilitado la detección de inactividad. Devuelve NULL para indicar que se ha deshabilitado la detección de inactividad, que no se pudo asignar un contador inactivo o que uno o ambos valores de tiempo de espera no eran válidos.
Comentarios
PoRegisterDeviceForIdleDetection permite a los controladores usar el mecanismo de detección de inactividad proporcionado por el administrador de energía. Los controladores llaman a PoRegisterDeviceForIdleDetection por cualquiera de los siguientes motivos:
- Para habilitar la detección de inactividad para el dispositivo y establecer los valores de tiempo de espera de inactividad iniciales
- Para cambiar los valores de tiempo de espera de inactividad de un dispositivo
- Para deshabilitar la detección de inactividad para un dispositivo
Cada vez que el dispositivo satisface el valor de tiempo de espera de inactividad actual, el administrador de energía envía una solicitud de IRP_MN_SET_POWER a la parte superior de la pila de dispositivos, especificando el estado de energía del dispositivo. En respuesta al IRP, cada controlador realiza las tareas específicas del dispositivo necesarias antes de la transición de estado de energía y, a continuación, pasa el IRP al controlador inferior siguiente. Cuando el IRP llega al controlador de autobús, ese controlador coloca el dispositivo en el estado de menor potencia solicitado y completa el IRP.
PoRegisterDeviceForIdleDetection establece valores de tiempo de espera para la conservación y el rendimiento. El valor de ConservationIdleTime se aplica cuando la directiva de energía del sistema optimiza la conservación; El valor PerformanceIdleTime se aplica cuando la directiva de energía del sistema optimiza el rendimiento. Normalmente, la directiva aplicable depende de la fuente de alimentación: cuando se ejecuta con alimentación de CA, el sistema optimiza el rendimiento y, al apagar una batería, el sistema optimiza para la conservación.
Algunos dispositivos pueden especificar valores de tiempo de espera de -1 para usar los tiempos de espera de la directiva de energía estándar para su clase de dispositivo. Los valores estándar de tiempo de espera proporcionan una mejor integración del sistema para las clases de dispositivo estándar admitidas. En la actualidad, WDM admite esta característica para dispositivos de tipo FILE_DEVICE_DISK y FILE_DEVICE_MASS_STORAGE. PoRegisterDeviceForIdleDetection devuelve NULL si se especifica -1 para un dispositivo de un tipo no admitido. (Para obtener información sobre los tipos de dispositivo, consulte Especificación de tipos de dispositivo).
Solo se puede establecer una detección de inactividad por dispositivo. Las llamadas posteriores a PoRegisterDeviceForIdleDetection cambian los valores de detección de inactividad.
Si tanto ConservationIdleTime como PerformanceIdleTime son cero, esta rutina cancela toda la detección de inactividad para el dispositivo y devuelve NULL.
PoRegisterDeviceForIdleDetection puede liberar un controlador de la necesidad de realizar su propia detección de inactividad. Sin embargo, los controladores también pueden implementar su propia detección de inactividad.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 2000. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |