Compartir a través de


Función WdfDeviceWdmAssignPowerFrameworkSettings (wdfdevice.h)

[Se aplica a KMDF y UMDF]

El método WdfDeviceWdmAssignPowerFrameworkSettings registra la configuración del marco de administración de energía (PoFx) para dispositivos de un solo componente.

Sintaxis

NTSTATUS WdfDeviceWdmAssignPowerFrameworkSettings(
  [in] WDFDEVICE                     Device,
  [in] PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
);

Parámetros

[in] Device

Identificador del objeto de dispositivo de marco para el que se especifica la configuración de PoFx.

[in] PowerFrameworkSettings

Puntero a una estructura de WDF_POWER_FRAMEWORK_SETTINGS que describe la configuración de PoFx del controlador cliente.

Valor devuelto

El método WdfDeviceWdmAssignPowerFrameworkSettings devuelve un valor NTSTATUS que indica que la operación se ha realizado correctamente o no.

Código de retorno Descripción
STATUS_INFO_LENGTH_MISMATCH
El tamaño de la estructura WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS es incorrecto.
STATUS_INVALID_DEVICE_REQUEST
El controlador de llamada no es el propietario de la directiva de energía del dispositivo.
STATUS_INVALID_PARAMETER
Se detecta un valor configuración no válido.
 

Este método también puede devolver otros valores de NTSTATUS.

Observaciones

El método WdfDeviceWdmAssignPowerFrameworkSettings solo se aplica a dispositivos de un solo componente.

Antes de llamar a este método, el controlador cliente primero debe llamar correctamente a WdfDeviceAssignS0IdleSettings y establecer el IdleTimeoutType campo de la estructura de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS para SystemManagedIdleTimeout o SystemManagedIdleTimeoutWithHint.

Un controlador debe llamar a WdfDeviceWdmAssignPowerFrameworkSettings antes o durante la primera vez que se inicia un dispositivo. Dado que un dispositivo puede iniciarse más de una vez, por ejemplo, si se produce el reequilibrio de recursos, un controlador podría llamar a este método desde EvtDriverDeviceAdd o EvtDeviceSelfManagedIoInit. El marco llama a estas funciones solo una vez, incluso si el dispositivo se inicia más de una vez.

Como alternativa, El controlador podría realizar un seguimiento de si ya se ha llamado a WdfDeviceWdmAssignPowerFrameworkSettingsy llamarlo desde una de las siguientes funciones de devolución de llamada: EvtDevicePrepareHardware, EvtDeviceD0Entry, EvtDeviceD0EntryPostInterruptsEnabledo EvtDeviceSelfManagedIoRestart.

Si el controlador llama a WdfDeviceWdmAssignPowerFrameworkSettings más de una vez, el marco genera un error de comprobador.

El marco de administración de energía (PoFx) solo está disponible en Windows 8 y versiones posteriores. Cuando se ejecuta en un sistema operativo que no admite PoFx, WdfDeviceWdmAssignPowerFrameworkSettings no realiza ninguna acción y devuelve STATUS_SUCCESS.

Para obtener más información, consulte compatibilidad con los estados de energía funcionales y Información general de Power Management Framework.

Ejemplos

En el ejemplo de código siguiente, el controlador inicializa una estructura de WDF_POWER_FRAMEWORK_SETTINGS llamando a la función WDF_POWER_FRAMEWORK_SETTINGS_INIT. A continuación, el controlador establece manualmente algunos de los miembros de la estructura y, a continuación, llama a WdfDeviceWdmAssignPowerFrameworkSettings.

NTSTATUS status;
WDF_POWER_FRAMEWORK_SETTINGS poFxSettings;

WDF_POWER_FRAMEWORK_SETTINGS_INIT(&poFxSettings);

poFxSettings.EvtDeviceWdmPostPoFxRegisterDevice = 
                        SingleCompWdmEvtDeviceWdmPostPoFxRegisterDevice;
poFxSettings.EvtDeviceWdmPrePoFxUnregisterDevice =
                        SingleCompWdmEvtDeviceWdmPrePoFxUnregisterDevice;

poFxSettings.Component = &component;
poFxSettings.ComponentIdleStateCallback = 
                        SingleCompWdmIdleStateCallback;
poFxSettings.PoFxDeviceContext = (PVOID) Device;
    
status = WdfDeviceWdmAssignPowerFrameworkSettings(Device, &poFxSettings);

Requisitos

Requisito Valor
cliente mínimo admitido Windows 8
de la plataforma de destino de Universal
versión mínima de KMDF 1.11
versión mínima de UMDF 2.33
encabezado wdfdevice.h (incluya Wdf.h)
Biblioteca Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
irQL PASSIVE_LEVEL
reglas de cumplimiento de DDI DriverCreate(kmdf)

Consulte también

EvtDeviceWdmPostPoFxRegisterDevice

EvtDeviceWdmPrePoFxUnregisterDevice

WDF_POWER_FRAMEWORK_SETTINGS

WDF_POWER_FRAMEWORK_SETTINGS_INIT