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 |
---|---|
|
El tamaño de la estructura 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 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