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 |
---|---|
|
El tamaño de la estructura de WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS es incorrecto. |
|
El controlador de llamada no es el propietario de la directiva de energía del dispositivo. |
|
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