Referência de gerenciamento de energia do dispositivo

Os drivers podem dividir o hardware do dispositivo em vários componentes lógicos para habilitar o gerenciamento de energia refinado. Um componente tem um conjunto de estados de energia que podem ser gerenciados independentemente dos estados de energia de outros componentes no mesmo dispositivo. No estado F0, o componente está totalmente ativado. O componente pode dar suporte a estados adicionais de baixa potência F1, F2 e assim por diante.

O proprietário da política de energia de um dispositivo normalmente é o driver de função do dispositivo. Para habilitar o gerenciamento de energia no nível do componente, esse driver registra o dispositivo com a PoFx (estrutura de gerenciamento de energia). Ao registrar o dispositivo, o driver assume a responsabilidade de informar o PoFx quando um componente está sendo usado ativamente e quando o componente está ocioso. O PoFx faz opções de estado ocioso inteligentes para o dispositivo com base nas informações sobre a atividade do componente, a tolerância à latência, as durações ociosas esperadas e os requisitos de ativação. Ao controlar o uso de energia no nível do componente, o PoFx pode reduzir os requisitos de energia, preservando a capacidade de resposta do sistema. Para obter mais informações, consulte Gerenciamento de energia no nível do componente.

Rotinas de gerenciamento de energia do dispositivo

Essas rotinas são implementadas pela PoFx (estrutura de gerenciamento de energia) para habilitar o gerenciamento de energia do dispositivo. Essas rotinas são chamadas pelo driver que é o PPO (proprietário da política de energia) de um dispositivo. Normalmente, o driver de função de um dispositivo é o PPO para este dispositivo.

Tópico Descrição
PoFxActivateComponent A rotina PoFxActivateComponent incrementa a contagem de referência de ativação no componente especificado.
PoFxCompleteDevicePowerNotRequired A rotina PoFxCompleteDevicePowerNotRequired notifica a poFx (estrutura de gerenciamento de energia) de que o driver de chamada concluiu sua resposta a uma chamada para a rotina de retorno de chamada DevicePowerNotRequiredCallback do driver.
PoFxCompleteIdleCondition A rotina PoFxCompleteIdleCondition informa à PoFx (estrutura de gerenciamento de energia) que o componente especificado concluiu uma alteração pendente para a condição ociosa.
PoFxCompleteIdleState A rotina PoFxCompleteIdleState informa à PoFx (estrutura de gerenciamento de energia) que o componente especificado concluiu uma alteração pendente em um estado Fx.
PoFxIdleComponent A rotina PoFxIdleComponent diminui a contagem de referência de ativação no componente especificado.
PoFxIssueComponentPerfStateChange A rotina PoFxIssueComponentPerfStateChange envia uma solicitação para colocar um componente do dispositivo em um estado de desempenho específico.
PoFxIssueComponentPerfStateChangeMultiple A rotina PoFxIssueComponentPerfStateChangeMultiple envia uma solicitação para alterar os estados de desempenho em vários conjuntos de estado de desempenho simultaneamente para um componente do dispositivo.
PoFxNotifySurprisePowerOn A rotina PoFxNotifySurprisePowerOn notifica a PoFx (estrutura de gerenciamento de energia) de que um dispositivo foi ativado como um efeito colateral do fornecimento de energia para algum outro dispositivo.
PoFxPowerControl A rotina PoFxPowerControl envia uma solicitação de controle de energia para a PoFx (estrutura de gerenciamento de energia).
PoFxQueryCurrentComponentPerfState A rotina PoFxQueryCurrentComponentPerfState recupera o estado de desempenho ativo no conjunto de estado de desempenho de um componente.
PoFxRegisterComponentPerfStates A rotina PoFxRegisterComponentPerfStates registra um componente do dispositivo para gerenciamento de estado de desempenho pela PoFx (estrutura de gerenciamento de energia).
PoFxRegisterDevice A rotina PoFxRegisterDevice registra um dispositivo com a PoFx (estrutura de gerenciamento de energia).
PoFxReportDevicePoweredOn A rotina PoFxReportDevicePoweredOn notifica a PoFx (estrutura de gerenciamento de energia) de que o dispositivo concluiu a transição solicitada para o estado de energia D0 (totalmente ativado).
PoFxSetComponentLatency A rotina PoFxSetComponentLatency especifica a latência máxima que pode ser tolerada na transição da condição ociosa para a condição ativa no componente especificado.
PoFxSetComponentResidency A rotina PoFxSetComponentResidency define o tempo estimado para quanto tempo um componente provavelmente permanecerá ocioso depois que o componente entrar na condição ociosa.
PoFxSetComponentWake A rotina PoFxSetComponentWake indica se o driver arma o componente especificado para ativar sempre que o componente entra na condição ociosa.
PoFxSetDeviceIdleTimeout A rotina PoFxSetDeviceIdleTimeout especifica o intervalo de tempo mínimo de quando o último componente do dispositivo entra na condição ociosa para quando a PoFx (estrutura de gerenciamento de energia) chama a rotina de retorno de chamada DevicePowerNotRequiredCallback do driver.
PoFxStartDevicePowerManagement A rotina PoFxStartDevicePowerManagement conclui o registro de um dispositivo com a PoFx (estrutura de gerenciamento de energia) e inicia o gerenciamento de energia do dispositivo.
PoFxUnregisterDevice A rotina PoFxUnregisterDevice remove o registro de um dispositivo da PoFx (estrutura de gerenciamento de energia).

Retornos de chamada do Gerenciamento de Energia do Dispositivo

Essas rotinas de retorno de chamada são exigidas pela PoFx (estrutura de gerenciamento de energia) para habilitar o gerenciamento de energia do dispositivo. O driver que é o proprietário da política de energia para o dispositivo implementa essas rotinas de retorno de chamada. A PoFx chama essas rotinas para consultar e configurar os estados de energia dos componentes no dispositivo.

Tópico Descrição
ComponentActiveConditionCallback A rotina de retorno de chamada ComponentActiveConditionCallback notifica o driver de que o componente especificado concluiu uma transição da condição ociosa para a condição ativa.
ComponentIdleConditionCallback A rotina de retorno de chamada ComponentIdleConditionCallback notifica o driver de que o componente especificado concluiu uma transição da condição ativa para a condição ociosa.
ComponentIdleStateCallback A rotina de retorno de chamada ComponentIdleStateCallback notifica o driver de uma alteração pendente no estado de energia fx do componente especificado.
ComponentPerfStateCallback A rotina de retorno de chamada ComponentPerfStateCallback notifica o driver de que sua solicitação para alterar o estado de desempenho de um componente foi concluída.
DevicePowerNotRequiredCallback A rotina de retorno de chamada DevicePowerNotRequiredCallback notifica o driver do dispositivo de que o dispositivo não precisa permanecer no estado de energia D0.
DevicePowerRequiredCallback A rotina de retorno de chamada DevicePowerRequiredCallback notifica o driver de dispositivo que o dispositivo deve inserir e permanecer no estado de energia D0.
PowerControlCallback A rotina de retorno de chamada PowerControlCallback executa uma operação de controle de energia solicitada pela PoFx (estrutura de gerenciamento de energia).

Estruturas de gerenciamento de energia do dispositivo

A PoFx (estrutura de gerenciamento de energia) define essas estruturas para dar suporte ao gerenciamento de energia do dispositivo.

Tópico Descrição
PO_FX_COMPONENT_V1PO_FX_COMPONENT_V2 A estrutura PO_FX_COMPONENT descreve os atributos de estado de energia de um componente em um dispositivo.
PO_FX_COMPONENT_IDLE_STATE A estrutura PO_FX_COMPONENT_IDLE_STATE especifica os atributos de um estado de energia fx de um componente em um dispositivo.
PO_FX_COMPONENT_PERF_INFO A estrutura PO_FX_COMPONENT_PERF_INFO descreve todos os conjuntos de estados de desempenho para um único componente em um dispositivo.
PO_FX_COMPONENT_PERF_SET A estrutura PO_FX_COMPONENT_PERF_SET representa um conjunto de estados de desempenho para um único componente dentro de um dispositivo.
PO_FX_DEVICE_V3 PO_FX_DEVICE_V1PO_FX_DEVICE_V2 A estrutura PO_FX_DEVICE descreve os atributos de energia de um dispositivo para a PoFx (estrutura de gerenciamento de energia).
PO_FX_PERF_STATE A estrutura PO_FX_PERF_STATE representa um estado de desempenho para um único componente em um dispositivo.
PO_FX_PERF_STATE_CHANGE A estrutura PO_FX_PERF_STATE_CHANGE contém informações sobre uma alteração em um estado de desempenho que está sendo solicitado chamando a rotina PoFxIssueComponentPerfStateChange ou PoFxIssueComponentPerfStateChangeMultiple .

Enumerações de Gerenciamento de Energia do Dispositivo

A PoFx (estrutura de gerenciamento de energia) define essas enumerações para dar suporte ao gerenciamento de energia do dispositivo.

Tópico Descrição
PO_FX_PERF_STATE_TYPE A enumeração PO_FX_PERF_STATE_TYPE contém valores que descrevem o tipo de estados de desempenho em um PO_FX_COMPONENT_PERF_SET.
PO_FX_PERF_STATE_UNIT A enumeração PO_FX_PERF_STATE_UNIT contém valores que descrevem o tipo de unidade controlado pelos estados de desempenho em um PO_FX_COMPONENT_PERF_SET.

Constantes de gerenciamento de energia do dispositivo

PO_FX_FLAG_XXX bits de sinalizador

As constantes PO_FX_FLAG_XXX são bits de sinalizador que indicam se uma solicitação para alterar a condição do componente é executada de forma síncrona ou assíncrona.

#define PO_FX_FLAG_BLOCKING   0x1
#define PO_FX_FLAG_ASYNC_ONLY 0x2

constantes PO_FX_FLAG_XXX

Constante Descrição
PO_FX_FLAG_BLOCKING Torne a alteração da condição síncrona. Se esse sinalizador for definido, a rotina que solicita a alteração da condição não retornará o controle para o driver de chamada até que o hardware do componente conclua a transição para a nova condição. Esse sinalizador só poderá ser usado se o chamador estiver em execução no IRQL < DISPATCH_LEVEL.
PO_FX_FLAG_ASYNC_ONLY Torne a condição totalmente assíncrona. Se esse sinalizador for definido, a rotina de retorno de chamada do driver de chamada será chamada de um thread diferente do thread no qual a rotina que solicita a alteração da condição será chamada. Assim, a rotina que solicita a alteração da condição sempre retorna de forma assíncrona sem esperar que o retorno de chamada seja concluído.

comentários PO_FX_FLAG_XXX

O parâmetro Flags para as seguintes rotinas pode ser definido como uma constante PO_FX_FLAG_XXX :

Os bits de sinalizador PO_FX_FLAG_BLOCKING e PO_FX_FLAG_ASYNC_ONLY são mutuamente exclusivos. O chamador pode definir um ou outro bit de sinalizador no parâmetro Flags, mas não ambos os bits de sinalizador.

Requisitos de PO_FX_FLAG_XXX

Versão parâmetro
Com suporte a partir do Windows 8. Wdm.h

PO_FX_FLAG_PERF_XXX bits de sinalizador

As constantes PO_FX_FLAG_PERF_XXX são bits de sinalizador que definem como a PoFx (estrutura de gerenciamento de energia) gerencia os estados de desempenho de um componente do dispositivo.

#define PO_FX_FLAG_PERF_PEP_OPTIONAL   0x1
#define PO_FX_FLAG_PERF_QUERY_ON_F0 0x2
#define PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 0x4
Constante Valor Descrição
PO_FX_FLAG_PERF_PEP_OPTIONAL 1 (0x1) Indica que o driver pode alterar os estados de desempenho sem assistência do PEP (plug-in de extensão de plataforma) ou que o driver está registrando estados de desempenho com PoFx apenas para fins de registro em log. Se esse sinalizador for definido, a chamada PoFxRegisterComponentPerfStates ainda terá êxito se o PEP não der suporte a estados de desempenho para o componente.
PO_FX_FLAG_PERF_QUERY_ON_F0 2 (0x2) Para alguns dispositivos, o PEP pode precisar colocar um estado de desempenho definido para um componente em um determinado estado de desempenho (conhecido como estado de desempenho nominal) quando ocioso o componente. Os drivers definem esse sinalizador se o componente contiver estados de desempenho nominal; nesse caso, o PoFx consultará o PEP para determinar o estado de desempenho atual quando o componente fizer a transição para F0.
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 4 (0x4) Para alguns dispositivos, o PEP pode precisar colocar um estado de desempenho definido para um componente em um determinado estado de desempenho (conhecido como estado de desempenho nominal) quando ele faz a transição do componente entre estados ociosos. Os drivers definem esse sinalizador se esse componente contiver estados de desempenho nominal; nesse caso, o PoFx consultará o PEP para determinar o estado de desempenho atual quando o componente fizer a transição entre estados ociosos.

comentários PO_FX_FLAG_PERF_XXX

O parâmetro Flags para a rotina PoFxRegisterComponentPerfStates pode ser definido como uma constante PO_FX_FLAG_PERF_XXX .

requisitos de PO_FX_FLAG_PERF_XXX

Requisitos Versão
Com suporte a partir do Windows 10. Wdm.h