Códigos de controle de energia PPM

Os códigos de controle de energia descritos neste tópico são usados por PEPs (plug-ins de extensão de plataforma). Uma solicitação de controle de energia é semelhante a uma IOCTL (solicitação de controle de E/S). Ao contrário de um IOCTL, no entanto, uma solicitação de controle de energia é enviada diretamente para a PoFx (Estrutura de Gerenciamento de Energia de Janela) e não é observada por outros drivers de dispositivo na pilha do dispositivo.

Veja a seguir os códigos de controle de energia ppm:

Código Sintaxe Descrição
PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE

{38BD8901-AB20-4908-ABAA-AC34674BDFF3}

DEFINE_GUID(PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE,

0x38bd8901, 0xab20, 0x4908, 0xab, 0xaa, 0xac, 0x34, 0x67, 0x4b, 0xdf, 0xf3);

O código é usado pelo PEP para consultar a PoFx (estrutura de gerenciamento de energia) do Windows para obter informações sobre a página de estacionamento atribuída a um processador.

Para determinar a página de estacionamento de um processador, o PEP (plug-in de extensão de plataforma) para esse processador envia uma solicitação de controle de energia PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE à PoFx.

Para iniciar essa solicitação de controle de energia, o PEP primeiro chama a rotina RequestWorker para informar à PoFx que o PEP tem um item de trabalho para enviar. O PoFx responde a essa chamada enviando uma notificação de PEP_DPM_WORK para o PEP. O PEP responde enviando uma solicitação de trabalho de controle de energia para as informações da página de estacionamento. Essa solicitação inclui uma estrutura de PEP_WORK_INFORMATION alocada por PEP na qual o membro WorkType é definido como PepWorkRequestPowerControl e o membro do PowerControl aponta para uma estrutura de PEP_WORK_POWER_CONTROL alocada por PEP. O membro do PowerControlCode da estrutura PEP_WORK_POWER_CONTROL está definido como PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE. O membro InBuffer dessa estrutura deve ser NULL e o membro OutBuffer deve apontar para uma estrutura de PEP_PPM_CONTEXT_QUERY_PARKING_PAGE alocada por PEP. Em resposta a essa solicitação de controle de energia, a PoFx grava os endereços virtuais e físicos da página de estacionamento na estrutura PEP_PPM_CONTEXT_QUERY_PARKING_PAGE.

A solicitação de controle de energia PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE é específica do Arm e não tem suporte para processadores x86 e x64. Em um sistema multiprocessador arm, uma página de estacionamento é um bloco de memória de 4 quilobytes que o sistema operacional usa como uma caixa de correio para controlar um processador que está iniciando de um estado ocioso. Um PEP pode usar alguma parte da caixa de correio para armazenar dados de contexto específicos do processador. Para obter mais informações, consulte o documento intitulado "Inicialização multiprocessador para plataformas arm" em https://www.acpica.org/related-documents.

GUID_PPM_PERF_CONSTRAINT_CHANGE

{29181FA1-4BF3-4c2e-B314-A6D226322B00}

DEFINE_GUID(GUID_PPM_PERF_CONSTRAINT_CHANGE,

0x29181fa1, 0x4bf3, 0x4c2e, 0xb3, 0x14, 0xa6, 0xd2, 0x26, 0x32, 0x2b, 0x0);

O código é usado pelo PEP para notificar a PoFx (estrutura de gerenciamento de energia) do Windows de que os limites de desempenho do processador devem ser alterados para acomodar restrições externas (orçamento de energia, restrições térmicas, fonte de energia e assim por diante).

Nenhum buffer de entrada ou saída é usado com esse código de controle.

Para iniciar essa solicitação de controle de energia, o PEP primeiro chama a rotina RequestWorker para informar à PoFx que o PEP tem um item de trabalho para enviar. O PoFx responde a essa chamada enviando uma notificação de PEP_DPM_WORK para o PEP. O PEP responde enviando uma solicitação de trabalho de controle de energia para uma alteração de restrição de desempenho. Essa solicitação inclui uma estrutura de PEP_WORK_INFORMATION alocada por PEP na qual o membro WorkType é definido como PepWorkRequestPowerControl e o membro do PowerControl aponta para uma estrutura de PEP_WORK_POWER_CONTROL alocada por PEP. O membro do PowerControlCode da estrutura PEP_WORK_POWER_CONTROL é definido como GUID_PPM_PERF_CONSTRAINT_CHANGE. Os membros InBuffer e OutBuffer dessa estrutura devem ser NULL. Em resposta a essa solicitação de controle de energia, a PoFx enviará uma notificação PEP_NOTIFY_PPM_PERF_CONSTRAINTS ao PEP para obter os novos limites de desempenho do processador.