Compartir a través de


Implementación del temporizador de inactividad de clase de dispositivo de audio

El controlador del sistema PortCls utiliza las funcionalidades de detección de inactividad del sistema para implementar un temporizador de inactividad para sus clientes de audio. PortCls programa dos valores de tiempo de espera y un estado de energía inactivo deseado en el temporizador cuando lo inicializa. PortCls supervisa todos los accesos (como E/S y accesos de propiedad) del dispositivo y restablece eficazmente el recuento del temporizador en cada acceso. Si el temporizador agota el tiempo de espera, el sistema solicita un IRP de alimentación para colocar el dispositivo en el estado de inactividad deseado. Una vez que el dispositivo se haya colocado en estado inactivo, PortCls encenderá la copia de seguridad del dispositivo en caso de nueva actividad de acceso.

PortCls contiene valores predeterminados codificados de forma rígida para los tiempos de espera de inactividad y el estado de energía inactiva. Opcionalmente, los proveedores de hardware pueden invalidar los valores predeterminados escribiendo sus propios valores en claves específicas del controlador en el registro del sistema. De este modo, los proveedores pueden seleccionar los valores de parámetros de inactividad de energía que son más adecuados para sus dispositivos.

Los proveedores pueden invalidar los valores predeterminados de los siguientes parámetros de inactividad de energía:

  • ConservationIdleTime

    Este parámetro especifica el intervalo de tiempo de espera de inactividad cuando el sistema se ejecuta en modo de conservación de energía. Este es el modo que se usa normalmente cuando el sistema está funcionando con batería. El valor predeterminado de este parámetro es 0, que deshabilita el temporizador de inactividad de energía en modo de conservación. El proveedor de hardware puede establecer el valor mediante un archivo inf como este.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
    

El fragmento de archivo INF anterior muestra un valor hexadecimal (hexadecimal) de "1e" para ConservationIdleTime y esto equivale a un tiempo de espera de inactividad de 30 segundos.

FLG_ADDREG_BINVALUETYPE

Los demás parámetros se usan para controlar cómo se agrega la clave del Registro. Por ejemplo, %REG_BINARY% indica que los datos se almacenan como datos "sin procesar". Para obtener más información, consulte directiva INF AddReg.

  • PerformanceIdleTime

    Este parámetro especifica el intervalo de tiempo de espera de inactividad cuando el sistema se ejecuta en modo de rendimiento. Este es el modo que se usa normalmente cuando el sistema se ejecuta en la alimentación de CA. El valor predeterminado de este parámetro es 0, que deshabilita el temporizador de inactividad de energía en modo de rendimiento.

    El proveedor de hardware puede establecer el valor mediante un archivo inf como este.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
    

    El valor de la clave especifica el intervalo de tiempo de espera en segundos. En este ejemplo, el valor de 2c 01 será de 300 segundos o cinco minutos.

  • IdlePowerState

    Este parámetro especifica el estado de alimentación en el que se colocará el dispositivo si expira el período de tiempo de espera de inactividad. El valor predeterminado de este parámetro es 3, que corresponde al estado de alimentación del dispositivo D3, que es el estado de baja potencia del dispositivo con menor potencia. El proveedor de hardware puede establecer el valor mediante un archivo inf como este.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00
    

    El valor colocado en la clave debe ser 0, 1, 2 o 3, correspondiente al estado de alimentación del dispositivo D0, D1, D2 o D3, respectivamente.

Las tres claves del Registro de inactividad de energía solo existen si el archivo INF de instalación del dispositivo los crea. Antes de configurar el temporizador de inactividad de energía, PortCls intenta recuperar los parámetros power-idle específicos del controlador del registro. PortCls usa los valores predeterminados en lugar de los parámetros de inactividad de energía que no encuentra en el registro. Como se explicó anteriormente, los valores predeterminados del parámetro power-idle deshabilitan el temporizador de inactividad.

Para obtener más información sobre cómo especificar los parámetros ConservationIdleTime, PerformanceIdleTime y IdlePowerState , consulte las definiciones de los tres últimos parámetros de llamada en PoRegisterDeviceForIdleDetection.

Ejemplo

Por ejemplo, un proveedor de hardware podría querer especificar los siguientes parámetros de inactividad de energía para un dispositivo de audio: ConservationIdleTime = 0x0000001e (30 segundos), PerformanceIdleTime = 0x0000012c (300 segundos) y IdlePowerState = 0x00000003 (estado de alimentación del dispositivo D3). Para habilitar esta configuración, el archivo de instalación del dispositivo puede incluir una sección AddReg inf que contenga las siguientes directivas:

[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00

Consulte también

PoRegisterDeviceForIdleDetection