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

Коды управления питанием, описанные в этом разделе, используются подключаемыми модулями расширения платформы (PEP). Запрос на управление питанием аналогичен запросу на управление вводом-выводом (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) для этого процессора отправляет запрос на управление питанием PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE в PoFx.

Чтобы инициировать этот запрос на управление питанием, PEP сначала вызывает подпрограмму RequestWorker, чтобы сообщить PoFx, что у PEP есть рабочий элемент для отправки. PoFx отвечает на этот вызов, отправляя уведомление PEP_DPM_WORK в PEP. PeP отвечает, отправляя запрос на работу управления питанием для сведений о странице парковки. Этот запрос включает в себя структуру, выделенную PEP PEP_WORK_INFORMATION, в которой член WorkType имеет значение PepWorkRequestPowerControl, а элемент PowerControl указывает на структуру, выделенную PEP_WORK_POWER_CONTROL с помощью PEP. Элемент 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_WORK_POWER_CONTROL с помощью PEP. Элемент PowerControlCode структуры PEP_WORK_POWER_CONTROL имеет значение GUID_PPM_PERF_CONSTRAINT_CHANGE. Элементы InBuffer и OutBuffer этой структуры должны иметь значение NULL. В ответ на этот запрос на управление питанием PoFx отправит уведомление о PEP_NOTIFY_PPM_PERF_CONSTRAINTS в PEP, чтобы получить новые ограничения производительности процессора.