Share via


Control de usuario del comportamiento inactivo y de reactivación del dispositivo en UMDF

Advertencia

UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2.

Los ejemplos de UMDF 1 archivados se pueden encontrar en la actualización de ejemplos de controladores de Windows 11, versión 22H2 - mayo de 2022.

Para obtener más información, consulta Introducción con UMDF.

Si un dispositivo tiene funcionalidades de encendido o reactivación inactivas, puede decidir si se debe permitir a los usuarios habilitar o deshabilitar estas funcionalidades.

El controlador basado en UMDF puede usar el método IWDFDevice2::AssignS0IdleSettings para especificar si los usuarios con acceso al registro pueden habilitar o deshabilitar la funcionalidad de apagado inactivo de un dispositivo.

El controlador puede usar el método IWDFDevice2::AssignSxWakeSettings para especificar si los usuarios con acceso al registro pueden habilitar o deshabilitar la funcionalidad de reactivación de un dispositivo.

Ambos métodos permiten que el controlador habilite la funcionalidad, deshabilite la funcionalidad o proporcione a los usuarios el control de la funcionalidad:

  • Cuando un controlador llama al método AssignS0IdleSettings , puede proporcionar a los usuarios el control de las funcionalidades inactivas de un dispositivo estableciendo el parámetro UserControlOfIdleSettings en IdleAllowUserControl y estableciendo el parámetro Enabled en WdfTrue o WdfUseDefault.

  • Cuando un controlador llama al método AssignSxWakeSettings , puede proporcionar a los usuarios el control de las funcionalidades de reactivación de un dispositivo estableciendo el parámetro UserControlOfWakeSettings en WakeAllowUserControl y estableciendo el parámetro Enabled en WdfTrue o WdfUseDefault.

Si el controlador permite a los usuarios modificar la configuración de inactividad y reactivación, el marco proporciona una interfaz de usuario, en forma de página de hoja de propiedades que Administrador de dispositivos muestra para que los usuarios puedan habilitar o deshabilitar las funcionalidades inactivas y de reactivación. (El marco modifica los valores del Registro IdleInWorkingState y WakeFromSleepState . Los controladores y sus archivos de instalación no deben leer ni modificar estos valores).

Si un usuario modifica la configuración de un dispositivo, el marco actualiza el estado de energía del dispositivo para que coincida con la nueva configuración, si es necesario. Por ejemplo, si el usuario deshabilita la funcionalidad de apagado inactivo de un dispositivo mientras el dispositivo ya está en un estado de bajo consumo porque estaba inactivo, el marco devuelve el dispositivo a su estado de funcionamiento.

Si el controlador permite a los usuarios modificar la configuración de inactividad y reactivación, el marco habilita esta configuración de forma predeterminada. Es posible que algunos escritores de controladores quieran deshabilitar inicialmente la configuración antes de permitir que los usuarios los modifiquen.

Por lo tanto, las versiones 1.9 y posteriores del marco proporcionan dos valores del Registro definibles por controladores, denominados WdfDefaultIdleInWorkingState y WdfDefaultWakeFromSleepState, que se almacenan en la subclave Device Parameters\WDF del dispositivo, en la clave de hardware del dispositivo. Los valores se escriben REG_DWORD, con "0" que indica que la funcionalidad está deshabilitada y "1" que indica que la funcionalidad está habilitada.

El archivo INF del controlador puede usar una directiva INF AddReg para crear y establecer los valores del Registro WdfDefaultIdleInWorkingState y WdfDefaultWakeFromSleepState . Por ejemplo, si el controlador habilita la funcionalidad de apagado inactivo de un dispositivo, pero si la funcionalidad debe deshabilitarse cuando se instala el dispositivo, el archivo INF del controlador puede establecer WdfDefaultIdleInWorkingState en "0".

El marco examina el valor del Registro WdfDefaultIdleInWorkingState solo si el controlador establece el parámetro UserControlOfIdleSettings en IdleAllowUserControl y el parámetro Enabled en WdfTrue o WdfUseDefault cuando el controlador llama al método IWDFDevice2::AssignS0IdleSettings .

El marco examina los valores del Registro WdfDefaultWakeFromSleepState solo si el controlador establece el parámetro UserControlOfWakeSettings en IWakeAllowUserControl y el parámetro Enabled en WdfTrue o WdfUseDefault cuando el controlador llama al método IWDFDevice2::AssignSxWakeSettings .