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 del 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 devuelto Descripción
STATUS_INFO_LENGTH_MISMATCH
El tamaño de la estructura de 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 de configuración no válido.
 

Este método también podría devolver otros valores NTSTATUS.

Comentarios

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

Antes de llamar a este método, el controlador de cliente primero debe llamar correctamente a WdfDeviceAssignS0IdleSettings y establecer el campo IdleTimeoutType de la estructura de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS en 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 ha llamado a WdfDeviceWdmAssignPowerFrameworkSettings y llamarlo desde una de las siguientes funciones de devolución de llamada: EvtDevicePrepareHardware, EvtDeviceD0Entry, EvtDeviceD0EntryPostInterruptsEnabled o 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 estados de energía funcionales e 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 Value
Cliente mínimo compatible Windows 8
Plataforma de destino Universal
Versión mínima de KMDF 1.11
Versión mínima de UMDF 2,33
Encabezado wdfdevice.h (incluya Wdf.h)
Library 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