Propiedad de la directiva de energía en UMDF
Advertencia
UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los nuevos controladores UMDF deben escribirse mediante 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 a UMDF.
Para cada dispositivo, uno (y solo uno) de los controladores del dispositivo debe ser el propietario de la directiva de energía del dispositivo. El propietario de la directiva de energía determina el estado de energía del dispositivo adecuado para un dispositivo y envía solicitudes a la pila de controladores del dispositivo cada vez que el estado de energía del dispositivo debe cambiar.
Los controladores basados en marcos no contienen código que solicita cambios en el estado de energía de un dispositivo, ya que el marco proporciona ese código. De forma predeterminada, cada vez que el sistema entra en estado de suspensión del sistema, el marco pide al controlador que el bus del dispositivo reduzca el estado de alimentación del dispositivo a D3. (El controlador puede cambiar el comportamiento predeterminado para que el marco establezca el estado de suspensión del dispositivo en D1 o D2, si el dispositivo proporciona funcionalidades de reactivación). Cuando la alimentación del sistema vuelve a su estado de funcionamiento (S0), el marco solicita al controlador de bus que restaure el dispositivo a su estado de trabajo (D0).
El propietario de la directiva de energía también es responsable de habilitar y deshabilitar las siguientes características del dispositivo:
La capacidad del dispositivo para entrar en un estado de baja potencia (en suspensión) cuando está inactivo y el sistema permanece en su estado de trabajo (S0)
La capacidad del dispositivo para reactivarse desde un estado de suspensión cuando detecta un evento externo
La capacidad del dispositivo para reactivar todo el sistema desde un estado de suspensión del sistema cuando detecta un evento externo
Si el dispositivo admite estas funcionalidades de apagado inactivo y reactivación del sistema, el propietario de la directiva de energía también puede admitir las interfaces IPowerPolicyCallbackWakeFromS0 e IPowerPolicyCallbackWakeFromSx , que definen un conjunto de funciones de devolución de llamada de eventos de directiva de energía.
De forma predeterminada, los controladores basados en UMDF no son propietarios de directivas de energía. El controlador de funciones en modo kernel del dispositivo es el propietario predeterminado de la directiva de energía. (Si no hay ningún controlador de función en modo kernel y se ha llamado al controlador de busWdfPdoInitAssignRawDevice, el controlador de bus es el propietario de la directiva de energía). Si desea que el controlador basado en UMDF sea el propietario de la directiva de energía para una pila de controladores, el controlador debe llamar a IWDFDeviceInitialize::SetPowerPolicyOwnership y el propietario de la directiva de energía predeterminada en modo kernel debe llamar a WdfDeviceInitSetPowerPolicyOwnership para deshabilitar la propiedad.
Además, si proporciona un controlador basado en UMDF para un dispositivo USB y, si desea que el controlador sea el propietario de la directiva de energía, el archivo INF del controlador debe contener una directiva AddReg inf que establezca el valor WinUsbPowerPolicyOwnershipDisabled en el Registro. Si este valor de tamaño REG_DWORD se establece en cualquier número distinto de cero, deshabilita la capacidad del controlador WinUSB de ser el propietario de la directiva de energía del dispositivo. La directiva AddReg debe estar en una sección INF DDInstall.HW, como se muestra en el ejemplo siguiente.
[MyDriver_Install.NT.hw]
AddReg=MyDriver_AddReg
[MyDriver_AddReg]
HKR,,"WinUsbPowerPolicyOwnershipDisabled",0x00010001,1
El marco realiza el siguiente trabajo para el propietario de la directiva de energía:
Controla toda la comunicación de directiva de energía entre el controlador y el resto de la pila de controladores. Por ejemplo, el controlador no tiene que solicitar al controlador del bus que cambie el estado de alimentación del dispositivo, ya que el marco realiza la solicitud.
Si el controlador registra funciones de devolución de llamada de eventos de directiva de energía, el marco los llama cuando es el momento de habilitar o deshabilitar la capacidad del dispositivo para reactivarse a sí mismo desde un estado de bajo consumo.
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 obtener más información sobre las responsabilidades del propietario de la directiva de energía, consulte los temas siguientes: