Коды управления питанием 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, чтобы получить новые ограничения производительности процессора. |