Поделиться через


Коды управления питанием PPM

Коды управления питанием, описанные в этом разделе, используются плагинами расширения платформы (PEPs). Запрос управления питанием аналогичен запросу на управление ввода-вывода (IOCTL). В отличие от IOCTL, запрос на управление питанием отправляется непосредственно в диспетчер управления питанием Windows (PoFx) и не наблюдается другими драйверами устройств в стеке устройств.

Ниже приведены коды управления питанием PPM:

Код Синтаксис Описание
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);

Код используется PEP, чтобы запросить платформу управления питанием Windows (PoFx) для получения сведений о странице парковки, назначенной процессору.

Чтобы определить страницу остановки для процессора, подключаемый модуль расширения платформы (PEP) для данного процессора отправляет в PoFx запрос управления питанием с идентификатором PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE.

Чтобы инициировать этот запрос управления питанием, PEP сначала вызывает подпрограмму RequestWorker, чтобы уведомить PoFx, что у PEP есть рабочий элемент для обработки. PoFx отвечает на этот вызов, отправив уведомление PEP_DPM_WORK для PEP. PEP отвечает на это, отправляя запрос управления мощностью для информации о странице парковки. Этот запрос включает в себя структуру, выделенную PEP PEP_WORK_INFORMATION, в которой для элемента WorkType задано значение PepWorkRequestPowerControl, а элемент PowerControl указывает на структуру, выделенную PEP PEP_WORK_POWER_CONTROL. Элемент PowerControlCode структуры PEP_WORK_POWER_CONTROL имеет значение PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE. Элемент InBuffer этой структуры должен иметь значение NULL, а элемент OutBuffer должен указывать на структуру, выделенную PEP PEP_PPM_CONTEXT_QUERY_PARKING_PAGE. В ответ на этот запрос управления питанием PoFx записывает виртуальные и физические адреса страницы парковки в структуру PEP_PPM_CONTEXT_QUERY_PARKING_PAGE.

Запрос управления энергопотреблением PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE является специфичным для Arm и не поддерживается процессорами x86 и x64. В многопроцессорной системе Arm страница парковки — это блок памяти с 4 килобайтами, который операционная система использует в качестве почтового ящика для управления процессором, начинающимся с состояния простоя. PEP может использовать некоторую часть почтового ящика для хранения данных контекста, относящихся к процессору. Дополнительные сведения см. в документе с названием "Многопроцессорный запуск для платформ Arm".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);

Код используется PEP для уведомления платформы управления питанием Windows (PoFx), что ограничения производительности процессора должны изменяться для удовлетворения внешних ограничений (бюджет питания, тепловых ограничений, источников питания и т. д.).

Входной или выходной буфер не используется с этим кодом элемента управления.

Чтобы инициировать запрос на управление питанием, PEP сначала вызывает подпрограмму RequestWorker, чтобы уведомить PoFx о наличии у PEP элемента работы для отправки. PoFx отвечает на этот вызов, отправляя уведомление PEP_DPM_WORK в PEP. PEP отвечает путем отправки запроса на работу управления питанием для изменения ограничения производительности. Этот запрос включает в себя структуру, выделенную peP PEP_WORK_INFORMATION, в которой для элемента WorkType задано значение PepWorkRequestPowerControl, а элемент PowerControl указывает на структуру, выделенную peP PEP_WORK_POWER_CONTROL. Элемент структуры PEP_WORK_POWER_CONTROL под названием PowerControlCode установлен в значение GUID_PPM_PERF_CONSTRAINT_CHANGE. Элементы InBuffer и OutBuffer этой структуры должны иметь значение NULL. В ответ на этот запрос управления питанием PoFx отправит уведомление PEP_NOTIFY_PPM_PERF_CONSTRAINTS в PEP, чтобы получить новые пределы производительности процессора.