Compartilhar via


Função WdfDeviceWdmAssignPowerFrameworkSettings (wdfdevice.h)

[Aplica-se a KMDF e UMDF]

O método WdfDeviceWdmAssignPowerFrameworkSettings registra as configurações da PoFx (estrutura de gerenciamento de energia) para dispositivos de componente único.

Sintaxe

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

Parâmetros

[in] Device

Um identificador para o objeto de dispositivo de estrutura para o qual as configurações do PoFx estão sendo especificadas.

[in] PowerFrameworkSettings

Um ponteiro para uma estrutura WDF_POWER_FRAMEWORK_SETTINGS que descreve as configurações poFx do driver cliente.

Retornar valor

O método WdfDeviceWdmAssignPowerFrameworkSettings retorna um valor NTSTATUS que indica êxito ou falha da operação.

Código de retorno Descrição
STATUS_INFO_LENGTH_MISMATCH
O tamanho da estrutura de WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS está incorreto.
STATUS_INVALID_DEVICE_REQUEST
O driver de chamada não é o proprietário da política de energia do dispositivo.
STATUS_INVALID_PARAMETER
Um valor de Configurações inválido é detectado.
 

Esse método também pode retornar outros valores NTSTATUS.

Comentários

O método WdfDeviceWdmAssignPowerFrameworkSettings aplica-se somente a dispositivos de componente único.

Antes de chamar esse método, o driver cliente deve primeiro chamar WdfDeviceAssignS0IdleSettings com êxito e definir o campo IdleTimeoutType da estrutura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS como SystemManagedIdleTimeout ou SystemManagedIdleTimeoutWithHint.

Um driver deve chamar WdfDeviceWdmAssignPowerFrameworkSettings antes ou durante a primeira vez que um dispositivo é iniciado. Como um dispositivo pode iniciar mais de uma vez, por exemplo, se ocorrer um rebalanceamento de recursos, um driver pode chamar esse método de dentro de EvtDriverDeviceAdd ou EvtDeviceSelfManagedIoInit. A estrutura chama essas funções apenas uma vez, mesmo que o dispositivo seja iniciado mais de uma vez.

Como alternativa, o driver pode controlar se ele já chamou WdfDeviceWdmAssignPowerFrameworkSettings e chamá-lo de uma das seguintes funções de retorno de chamada: EvtDevicePrepareHardware, EvtDeviceD0Entry, EvtDeviceD0EntryPostInterruptsEnabled ou EvtDeviceSelfManagedIoRestart.

Se o driver chamar WdfDeviceWdmAssignPowerFrameworkSettings mais de uma vez, a estrutura gerará um erro de verificador.

A PoFx (estrutura de gerenciamento de energia) está disponível apenas em Windows 8 e posteriores. Ao executar em um sistema operacional que não dá suporte a PoFx, WdfDeviceWdmAssignPowerFrameworkSettings não executa nenhuma ação e retorna STATUS_SUCCESS.

Para obter mais informações, consulte Suporte a estados de energia funcionais e Visão geral do Power Management Framework.

Exemplos

No exemplo de código a seguir, o driver inicializa uma estrutura WDF_POWER_FRAMEWORK_SETTINGS chamando a função WDF_POWER_FRAMEWORK_SETTINGS_INIT . Em seguida, o driver define manualmente alguns dos membros da estrutura e chama 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 com suporte Windows 8
Plataforma de Destino Universal
Versão mínima do KMDF 1.11
Versão mínima do UMDF 2.33
Cabeçalho wdfdevice.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.)
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI DriverCreate(kmdf)

Confira também

EvtDeviceWdmPostPoFxRegisterDevice

EvtDeviceWdmPrePoFxUnregisterDevice

WDF_POWER_FRAMEWORK_SETTINGS

WDF_POWER_FRAMEWORK_SETTINGS_INIT