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


Уведомления об управлении питанием устройств (DPM)

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

В этом вызове параметр уведомления установлен на константное значение PEP_DPM_XXX, указывающее тип уведомления. Параметр Data указывает на тип структуры PEP_XXX, связанный с этим типом уведомления.

Идентификатор уведомления Ценность Связанная структура
PEP_DPM_PREPARE_DEVICE 0x01 PEP_PREPARE_DEVICE
PEP_DPM_ABANDON_DEVICE 0x02 PEP_ABANDON_DEVICE
PEP_DPM_REGISTER_DEVICE 0x03 PEP_REGISTER_DEVICE_V2
PEP_DPM_UNREGISTER_DEVICE 0x04 PEP_UNREGISTER_DEVICE
PEP_DPM_DEVICE_POWER_STATE 0x05 PEP_DEVICE_POWER_STATE
PEP_DPM_COMPONENT_ACTIVE 0x07 PEP_COMPONENT_ACTIVE
PEP_DPM_WORK 0x0D PEP_WORK
PEP_DPM_POWER_CONTROL_REQUEST 0x0E PEP_POWER_CONTROL_REQUEST
PEP_DPM_POWER_CONTROL_COMPLETE 0x0F PEP_POWER_CONTROL_COMPLETE
PEP_DPM_SYSTEM_LATENCY_UPDATE 0x10 PEP_SYSTEM_LATENCY
PEP_DPM_DEVICE_STARTED 0x12 PEP_DEVICE_STARTED
PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE 0x13 PEP_NOTIFY_COMPONENT_IDLE_STATE
PEP_DPM_REGISTER_DEBUGGER 0x15 PEP_REGISTER_DEBUGGER
PEP_DPM_НИЗКОЭНЕРГЕТИЧЕСКАЯ_ЭПОХА 0x18 PEP_LOW_POWER_EPOCH
PEP_DPM_REGISTER_CRASHDUMP_DEVICE 0x19 PEP_REGISTER_CRASHDUMP_DEVICE
PEP_DPM_DEVICE_IDLE_CONSTRAINTS 0x1A PEP_DEVICE_PLATFORM_CONSTRAINTS
PEP_DPM_COMPONENT_IDLE_CONSTRAINTS 0x1B PEP_COMPONENT_PLATFORM_CONSTRAINTS
PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES 0x1C PEP_QUERY_COMPONENT_PERF_CAPABILITIES
PEP_DPM_QUERY_COMPONENT_PERF_SET 0x1D PEP_QUERY_COMPONENT_PERF_SET
PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME 0x1E PEP_QUERY_COMPONENT_PERF_SET_NAME
PEP_DPM_QUERY_COMPONENT_PERF_STATES 0x1F PEP_QUERY_COMPONENT_PERF_STATES
PEP_DPM_REGISTER_COMPONENT_PERF_STATES 0x20 PEP_REGISTER_COMPONENT_PERF_STATES
PEP_DPM_REQUEST_COMPONENT_PERF_STATE 0x21 PEP_REQUEST_COMPONENT_PERF_STATE
PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE 0x22 PEP_QUERY_CURRENT_COMPONENT_PERF_STATE
PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS 0x23 PEP_DEBUGGER_TRANSITION_REQUIREMENTS
PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT 0x24 PEP_QUERY_SOC_SUBSYSTEM_COUNT
PEP_DPM_QUERY_SOC_SUBSYSTEM 0x25 PEP_QUERY_SOC_SUBSYSTEM
PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING 0x26 PEP_RESET_SOC_SUBSYSTEM_ACCOUNTING
PEP_DPM_ЗАПРОС_СОЦ_ПОДСИСТЕМА_ВРЕМЯ_БЛОКИРОВКИ 0x27 PEP_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME
PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA 0x28 PEP_QUERY_SOC_SUBSYSTEM_METADATA

Идентификаторы уведомлений

Следующие идентификаторы уведомлений DPM используются подпрограммой обратного вызова AcceptDeviceNotification.

PEP_DPM_PREPARE_DEVICE

Уведомление (PEP_DPM_PREPARE_DEVICE)

Значение PEP_DPM_PREPARE_DEVICE.

Данные (PEP_DPM_PREPARE_DEVICE)

Указатель на структуру PEP_PREPARE_DEVICE. Сообщает PEP, которому принадлежит указанное устройство, настроить устройство на работу в состоянии D0 (рабочий) режима питания.

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

Чтобы отправить уведомление PEP_DPM_PREPARE_DEVICE, операционная система вызывает функцию обратного вызова AcceptDeviceNotification в PEP. В этом вызове параметр уведомления имеет значение PEP_DPM_PREPARE_DEVICE, а параметр Data указывает на структуру PEP_PREPARE_DEVICE. При входе член DeviceId этой структуры является идентификационной строкой устройства, которая однозначно идентифицирует устройство. Перед возвратом PEP устанавливает для элемента DeviceAccepted этой структуры значение TRUE, чтобы претендовать на владение устройством, или значение FALSE, указывая на отсутствие права собственности на устройство.

PEP, отвечающий за управление питанием устройства, несет ответственность за управление внешними ресурсами питания и тактирования, необходимыми для работы устройства. Этот PEP включает тактовый сигнал и питание устройства в ответ на уведомление PEP_DPM_PREPARE_DEVICE, а также отключает тактовый сигнал и питание устройства в ответ на уведомление PEP_DPM_ABANDON_DEVICE.

В следующей таблице показаны предусловия, которые действуют, когда эта операционная система отправляет уведомление PEP_DPM_PREPARE_DEVICE к PEP, и постусловия, которые должны действовать после того как PEP обработает это уведомление для устройства, которому он владеет.

Предпосылки Постусловия
Устройство может находиться в любом состоянии питания. Если PEP утверждает владение устройством, устройство и все его компоненты должны быть включены, а сигналы синхронизации к устройству должны быть разблокированы.
PEP может получать PEP_DPM_PREPARE_DEVICE уведомления для нескольких устройств, так как диспетчер питания пытается найти владельцев PEP для данных устройств. PEP должен установить для элемента DeviceAccepted структуры PEP_PREPARE_DEVICE значение FALSE для всех устройств, которыми PEP не владеет.

Уведомления PEP_DPM_PREPARE_DEVICE не отправляются для основных устройств.

Для уведомления PEP_DPM_PREPARE_DEVICE подпрограмма AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_ABANDON_DEVICE

Уведомление (PEP_DPM_ABANDON_DEVICE)

Значение PEP_DPM_ABANDON_DEVICE.

Данные (PEP_DPM_ABANDON_DEVICE)

Указатель на структуру PEP_ABANDON_DEVICE. Сообщает PEP, что указанное устройство больше не используется операционной системой.

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

Чтобы отправить уведомление PEP_DPM_ABANDON_DEVICE, операционная система вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification. В данном вызове значение параметра уведомления PEP_DPM_ABANDON_DEVICE, а параметр Data указывает на структуру PEP_ABANDON_DEVICE. На входе член DeviceId этой структуры является строкой идентификации устройства, которая однозначно идентифицирует устройство. Перед возвратом PEP задает элементу DeviceAccepted этой структуры значение TRUE, чтобы заявить свои права на устройство, или значение FALSE, чтобы указать, что устройство не принадлежит.

PEP, отвечающий за управление питанием устройства, отвечает за управление внешними ресурсами питания и часов, необходимыми для работы устройства.

В следующей таблице представлены условия, которые должны быть соблюдены при отправке уведомления PEP_DPM_ABANDON_DEVICE в PEP, и те, которые должны соблюдаться после обработки этого уведомления для устройства, которым управляет PEP.

Предпосылки Постусловия
PEP получил уведомление PEP_DPM_PREPARE_DEVICE для устройства и принял владение устройством.
Если PEP получил уведомление PEP_DPM_REGISTER_DEVICE для устройства и принял регистрацию устройства, он впоследствии получил уведомление PEP_DPM_UNREGISTER_DEVICE для устройства.
Все ресурсы, выделенные в ответ на уведомление PEP_DPM_PREPARE_DEVICE, должны быть освобождены.
Для уведомления PEP_DPM_PREPARE_DEVICE подпрограмма AcceptDeviceNotification всегда вызывается в IRQL = PASSIVE_LEVEL.

PEP_DPM_REGISTER_DEVICE

Уведомление (PEP_DPM_REGISTER_DEVICE)

Значение PEP_DPM_REGISTER_DEVICE.

Данные (PEP_DPM_REGISTER_DEVICE)

Указатель на структуру PEP_REGISTER_DEVICE_V2.

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

PoFx отправляет это уведомление, когда стек драйверов устройства вызывает подпрограмму PoFxRegisterDevice для регистрации устройства. Это уведомление позволяет PEP скопировать сведения о регистрации устройства в внутреннее хранилище PEP для последующей ссылки.

Чтобы отправить уведомление PEP_DPM_REGISTER_DEVICE, операционная система вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification. В этом вызове значение параметра уведомления — PEP_DPM_REGISTER_DEVICE, а параметр Data указывает на структуру PEP_REGISTER_DEVICE_V2, которая содержит дескриптор ядра устройства и другие данные о регистрации. При входе элемент DeviceId этой структуры является строкой идентификации устройства, которая однозначно его определяет. Перед возвратом PEP устанавливает для элемента DeviceAccepted этой структуры значение TRUE, чтобы заявить о владении устройством, или значение FALSE, чтобы указать, что устройство не принадлежит. Сведения о других членах этой структуры см. в PEP_REGISTER_DEVICE_V2.

В следующей таблице показаны предусловия, которые действуют, когда эта операционная система отправляет уведомление PEP_DPM_REGISTER_DEVICE в PEP, и последующие условия, которые должны быть выполнены после того, как PEP обработает это уведомление для принадлежащего ему устройства.

Предпосылки Постусловия
PEP получил уведомление PEP_DPM_PREPARE_DEVICE для устройства, которому он владеет. PEP готов получать другие уведомления об управлении питанием устройств (DPM), связанных с этим устройством.

Для уведомления PEP_DPM_REGISTER_DEVICE подпрограмма AcceptDeviceNotification вызывается всегда на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_UNREGISTER_DEVICE

Уведомление (PEP_DPM_UNREGISTER_DEVICE)

Значение PEP_DPM_UNREGISTER_DEVICE.

Данные (PEP_DPM_UNREGISTER_DEVICE)

Указатель на структуру для PEP_UNREGISTER_DEVICE.

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

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

Чтобы отправить уведомление PEP_DPM_UNREGISTER_DEVICE, операционная система вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification. В этом вызове значение параметра Notification равно PEP_DPM_UNREGISTER_DEVICE, а параметр Data указывает на структуру PEP_UNREGISTER_DEVICE. Эта структура содержит дескриптор, который PEP создал в ответ на предыдущее уведомление PEP_DPM_REGISTER_DEVICE для устройства.

В следующей таблице показаны предварительные условия, действующие при отправке уведомления PEP_DPM_UNREGISTER_DEVICE в PEP, и после обработки этого уведомления для устройства, которое принадлежит ему.

Предпосылки Постусловия
Если PEP получил уведомление PEP_DPM_REGISTER_DEVICE для устройства и принял регистрацию устройства.
PEP может получать любые уведомления об управлении питанием устройств (DPM), связанных с этим устройством.
PEP может сообщать о работе, связанной с этим устройством.
PEP больше не может получать уведомления об управлении питанием устройств (DPM), связанных с этим устройством, за исключением PEP_DPM_ABANDON_DEVICE.
PEP не может сообщать о "работе", связанной с этим устройством.

Для уведомления PEP_DPM_UNREGISTER_DEVICE процедура AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_DEVICE_POWER_STATE

Уведомление (PEP_DPM_DEVICE_POWER_STATE)

Значение PEP_DPM_DEVICE_POWER_STATE.

Данные (PEP_DPM_DEVICE_POWER_STATE)

Указатель на структуру PEP_DEVICE_POWER_STATE.

Отправляется в PEP каждый раз, когда стек драйверов устройства запрашивает изменение на новое состояние питания Dx или завершение ранее запрошенного перехода к состоянию питания Dx.

Когда PEP вызывает процедуру RequestWorker, чтобы запросить рабочий элемент, PoFx отвечает, отправив PEP уведомление PEP_DPM_DEVICE_POWER_STATE. Однако это уведомление не отправляется, пока не будут доступны ресурсы (то есть рабочий поток), необходимые для обработки рабочего элемента. Таким образом, PoFx гарантирует, что запрос на выполнение, который PEP передает в PoFx во время уведомления, никогда не может завершиться ошибкой из-за нехватки ресурсов.

Чтобы отправить уведомление PEP_DPM_DEVICE_POWER_STATE, операционная система вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification. В этом вызове параметр Notification имеет значение PEP_DPM_DEVICE_POWER_STATE, а параметр Data указывает на структуру PEP_DEVICE_POWER_STATE. При входе PEP должен предположить, что содержимое этой структуры неинициализировано. Чтобы обработать это уведомление, PEP должен задать элемент WorkInformation, чтобы он указывал на выделенную PEP структуру PEP_WORK_INFORMATION, которая описывает запрашиваемую работу. Кроме того, PEP должен задать переменной NeedWork структуры PEP_WORK значение TRUE, чтобы убедиться в том, что PEP обработал уведомление PEP_DEVICE_POWER_STATE и что член WorkInformation указывает на действительную структуру PEP_WORK_INFORMATION. Если PEP не удалось обработать уведомление или выделить структуру PEP_WORK_INFORMATION, PEP должен установить для члена WorkInformation значение NULL и установить для члена NeedWork значение FALSE.

Для уведомления PEP_DPM_DEVICE_POWER_STATE функция AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_COMPONENT_ACTIVE

Уведомление (PEP_DPM_COMPONENT_ACTIVE)

Значение PEP_DPM_COMPONENT_ACTIVE.

Данные (PEP_DPM_COMPONENT_ACTIVE)

Указатель на структуру PEP_COMPONENT_ACTIVE , которая идентифицирует компонент и указывает, выполняет ли этот компонент переход к активному условию или к условию простоя.

Сообщает PEP о необходимости выполнения перехода компонентом из режима простоя в режим активности или наоборот.

Платформа управления питанием Windows (PoFx) отправляет это уведомление при ожидании перехода к состоянию активности или состоянию простоя.

Чтобы отправить уведомление PEP_DPM_COMPONENT_ACTIVE, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification. В этом вызове значение параметра уведомления является PEP_DPM_COMPONENT_ACTIVE, а параметр Data указывает на структуру PEP_COMPONENT_ACTIVE.

Компонент, доступный, находится в активном состоянии. Компонент, который недоступен, находится в состоянии простоя. Компонент, который находится в активном состоянии, всегда находится в состоянии питания компонента F0. Компонент не может покинуть F0, пока не перейдет в состояние простоя. Компонент, который находится в состоянии простоя, может находиться в F0 или в состоянии низкой мощности Fx. Условие активного или простоя компонента является единственным надежным средством для драйвера, чтобы определить, доступен ли компонент. Компонент, находящийся в состоянии F0 и также в состоянии простоя, возможно, скоро перейдёт в низкоэнергетическое состояние Fx.

Когда активный компонент готов ввести условие простоя, переход происходит немедленно. Во время обработки уведомления PEP_DPM_COMPONENT_ACTIVE, PEP может, например, запросить переход от состояния F0 к состоянию Fx с более низким энергопотреблением для компонента.

Если компонент находится в состоянии низкой мощности Fx, когда уведомление PEP_DPM_COMPONENT_ACTIVE запрашивает переход от режима простоя к активному режиму, PEP должен сначала переключить компонент на F0, прежде чем компонент сможет войти в активный режим. PEP может потребоваться закончить подготовку компонента для перехода в активное состояние асинхронно после возврата из обратного вызова AcceptDeviceNotification для уведомления PEP_DPM_COMPONENT_ACTIVE. После того как компонент полностью настроен для работы в активном состоянии, PEP должен вызвать подпрограмму RequestWorker, а затем обработать полученное уведомление PEP_DPM_WORK путем задания WorkType = PepWorkActiveComplete в структуре PEP_WORK_INFORMATION.

Если PEP получает уведомление PEP_DPM_COMPONENT_ACTIVE для компонента, который находится в F0 и уже полностью настроен для работы в активном состоянии, PEP может завершить обработку этого уведомления синхронно. Если поддерживается "быстрый путь" обработки уведомления, член WorkInformation структуры PEP_COMPONENT_ACTIVE для этого уведомления содержит указатель на структуру PEP_WORK_INFORMATION, а PEP может задать для элемента WorkType этой структуры значение PepWorkActiveComplete для завершения перехода. Однако, если WorkInformation = NULL, "быстрый путь" недоступен, а PEP должен завершить переход асинхронно путем вызова RequestWorker, как описано в предыдущем абзаце.

Дополнительные сведения об активных и неактивных состояниях см. в разделеComponent-Level Power Management.

Для уведомления PEP_DPM_COMPONENT_ACTIVE функция AcceptDeviceNotification вызывается на уровне IRQL <= DISPATCH_LEVEL.

PEP_DPM_WORK

Уведомление (PEP_DPM_WORK)

Значение PEP_DPM_WORK.

Данные (PEP_DPM_WORK)

Указатель на PEP_WORK структуру.

Отправляется в PEP однократно каждый раз, когда PEP вызывает подпрограмму RequestWorker, чтобы запросить элемент работы из системы управления питанием Windows (PoFx).

Когда PEP вызывает подпрограмму RequestWorker, чтобы запросить рабочий элемент, PoFx отвечает, отправив PEP уведомление PEP_DPM_WORK. Однако это уведомление не отправляется, пока не будут доступны ресурсы (то есть рабочий поток), необходимые для обработки рабочего элемента. Таким образом, PoFx гарантирует, что запрос на выполнение, который PEP передает в PoFx во время уведомления, никогда не может завершиться ошибкой из-за нехватки ресурсов.

Чтобы отправить уведомление PEP_DPM_WORK, операционная система запускает процедуру обратного вызова PEP AcceptDeviceNotification. В этом вызове значение параметра уведомления PEP_DPM_WORK, а параметр Data указывает на структуру PEP_WORK. При входе PEP должен предположить, что содержимое этой структуры неинициализировано. Чтобы обработать это уведомление, PEP должен задать элемент WorkInformation, чтобы он указывал на выделенную PEP структуру PEP_WORK_INFORMATION, которая описывает запрашиваемую работу. Кроме того, PEP должен задать для члена NeedWork структуры PEP_WORK значение TRUE, чтобы убедиться, что PEP обработал уведомление PEP_DPM_WORK и что член WorkInformation указывает на допустимую структуру PEP_WORK_INFORMATION. Если PEP не удается обработать уведомление или не удается выделить структуру PEP_WORK_INFORMATION, PEP должен установить значение NULL для члена WorkInformation и установить значение FALSE для члена NeedWork.

Для уведомления PEP_DPM_WORK функция AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_POWER_CONTROL_REQUEST

Уведомление (PEP_DPM_POWER_CONTROL_REQUEST)

Значение PEP_DPM_POWER_CONTROL_REQUEST.

Данные (PEP_DPM_POWER_CONTROL_REQUEST)

Указатель на структуру PEP_POWER_CONTROL_REQUEST.

Сообщает PEP, что драйвер вызвал API PoFxPowerControl для отправки управляющего кода непосредственно в PEP.

Платформа управления питанием Windows (PoFx) отправляет это уведомление в PEP, когда драйвер вызывает API PoFxPowerControl для отправки кода элемента управления непосредственно в PEP. Указатель данных уведомления в этом случае указывает на структуру PEP_POWER_CONTROL_REQUEST

Запросы управления питанием и их семантика определяются между автором PEP и владельцем класса устройства. Обычно такой интерфейс предназначен для конкретного класса устройства, для которого не обеспечивается поддержка в универсальной системе управления питанием. Например, контроллер UART может передавать сведения о скорости baud в PEP, чтобы изменить некоторые рельсы часов платформы или разделители, и такое взаимодействие, скорее всего, будет использовать запрос на управление питанием.

![ПРИМЕЧАНИЕ] PEP может запрашивать только отправку управляющего кода на устройство после получения уведомления PEP_DPM_DEVICE_STARTED или уведомления PEP_DPM_POWER_CONTROL_REQUEST.

Для уведомления PEP_DPM_POWER_CONTROL_REQUEST функция AcceptDeviceNotification вызывается на уровне IRQL <= DISPATCH_LEVEL.

PEP_DPM_POWER_CONTROL_COMPLETE

Уведомление (PEP_DPM_POWER_CONTROL_COMPLETE)

Значение PEP_DPM_POWER_CONTROL_COMPLETE.

Данные (PEP_DPM_POWER_CONTROL_COMPLETE)

Указатель на структуру PEP_POWER_CONTROL_COMPLETE.

Сообщает PEP, что драйвер завершил запрос на управление питанием, который ранее был выдан PEP

Платформа управления питанием Windows (PoFx) отправляет это уведомление в PEP, когда драйвер завершает запрос на управление питанием, выданный ранее PEP.

! [ПРИМЕЧАНИЕ] PEP может игнорировать это уведомление, если он не выдает никаких запросов управления питанием.

Для уведомления PEP_DPM_POWER_CONTROL_COMPLETE функция AcceptDeviceNotification вызывается на IRQL <= DISPATCH_LEVEL.

PEP_DPM_ОБНОВЛЕНИЕ_ЗАДЕРЖКИ_СИСТЕМЫ

Уведомление (PEP_DPM_SYSTEM_LATENCY_UPDATE)

Значение PEP_DPM_SYSTEM_LATENCY_UPDATE.

Данные (PEP_DPM_SYSTEM_LATENCY_UPDATE)

Указатель на структуру PEP_SYSTEM_LATENCY.

Уведомляет PEP о том, что ОС обновила общий уровень устойчивости к времени задержки системы.

Платформа управления питанием Windows (PoFx) отправляет это уведомление, когда ОС обновляет пределы допустимой задержки системы.

В более ранних версиях PoFx это уведомление использовалось PEP для выбора состояния простоя процессора и платформы. С помощью последних интерфейсов PEP процесс выбора полностью обрабатывается ОС, и такое уведомление больше не полезно. Он включен здесь для полноты, и PEP должен игнорировать его.

Чтобы отправить уведомление PEP_DPM_SYSTEM_LATENCY_UPDATE, PoFx вызывает процедуру обратного вызова PEP под названием AcceptDeviceNotification. Для этого уведомления рутинная процедура AcceptDeviceNotification вызывается на уровне IRQL <= DISPATCH_LEVEL.

PEP_DPM_DEVICE_STARTED

Уведомление (PEP_DPM_DEVICE_STARTED)

Значение PEP_DPM_DEVICE_STARTED.

Данные (PEP_DPM_DEVICE_STARTED)

Указатель на структуру PEP_DEVICE_STARTED.

Сообщает PEP, что устройство запущено, чтобы оно могло принимать транзакции управления питанием.

Стеки устройств регистрируются в ОС для управления питанием среды выполнения в двухэтапном процессе. Драйвер сначала вызывает PoFxRegisterDevice, чтобы предоставить сведения о количестве компонентов, их состояния простоя и соответствующих атрибутах. В ответ на этот вызов PEP получает уведомление о регистрации устройства PEP_DPM_REGISTER_DEVICE.

После успешной регистрации драйвер имеет возможность инициализировать свои компоненты (т. е. активировать, обновить требования к задержке, обновить ожидаемую продолжительность простоя и т. д.). После завершения любых задач инициализации драйвер уведомляет диспетчер питания путем вызова PoFxStartDevicePowerManagement. В ответ на это PEP будет получать уведомление PEP_DPM_DEVICE_STARTED. На этом этапе устройство считается полностью включенным для управления питанием среды выполнения.

В результате PEP не может выдавать какие-либо запросы на управление питанием драйверу, если только он не получил уведомление PEP_DPM_DEVICE_STARTED или уведомление PEP_DPM_POWER_CONTROL_REQUEST.

Замечание

PEP может игнорировать это уведомление, если он не выдает никаких запросов управления питанием.

Для уведомления PEP_DPM_DEVICE_STARTED функция AcceptDeviceNotification вызывается на IRQL <= DISPATCH_LEVEL.

PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE

Уведомление (PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE)

Значение PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE.

Данные (PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE)

Указатель на структуру PEP_NOTIFY_COMPONENT_IDLE_STATE.

Отправляется в PEP, когда ОС выдает переход в состояние простоя для этого компонента.

Платформа управления питанием Windows (PoFx) отправляет это уведомление, когда ОС выдает переход состояния простоя для данного компонента.

Это важно

PEP должен обрабатывать это уведомление.

Для каждого перехода в состояние простоя PEP уведомляется до и после уведомления драйвера. PEP различает предварительные и последующие уведомления, изучая элемент DriverNotified структуры PEP_NOTIFY_COMPONENT_IDLE_STATE. Для отправки уведомления элемент DriverNotified будет TRUE.

Предварительные уведомления обычно используются при переходе на F0. В этом случае PEP может потребоваться повторно активировать тактовые сигналы или ресурсы питания таким образом, чтобы когда драйвер обрабатывает уведомление F0, оборудование было доступно. Соответственно, уведомления, отправляемые после события, обычно используются при переходе из состояния F0 в более глубокое состояние простоя. После того как драйвер обработал уведомление о состоянии простоя, PEP может безопасно отключить часы и ресурсы питания.

При обработке перехода состояния простоя для данного компонента может потребоваться асинхронная обработка, если операция занимает значительное время или IRQL слишком высока, чтобы завершить переход синхронно. В результате PEP может выполнять это уведомление синхронно или асинхронно, установив для элемента Completed значение TRUE или FALSE соответственно.

Если уведомление должно быть завершено асинхронно, PEP уведомляет ОС о завершении, запрашивая рабочий процесс (см. RequestWorker) и заполняя указанную структуру рабочей информации в уведомлении PEP_DPM_WORK с типом работы PepWorkCompleteIdleState.

Чтобы отправить уведомление PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE, PoFx вызывает обратную функцию PEP под названием AcceptDeviceNotification. Эта подпрограмма вызывается в IRQL <= DISPATCH_LEVEL.

PEP_DPM_REGISTER_DEBUGGER

Уведомление (PEP_DPM_REGISTER_DEBUGGER)

Значение PEP_DPM_REGISTER_DEBUGGER.

Данные (PEP_DPM_REGISTER_DEBUGGER)

Указатель на структуру PEP_REGISTER_DEBUGGER .

Уведомляет PEP, что зарегистрированное устройство может использоваться как порт отладки.

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

Для уведомления PEP_DPM_REGISTER_DEBUGGER процедура AcceptDeviceNotification вызывается на уровне IRQL <= DISPATCH_LEVEL.

PEP_DPM_LOW_POWER_EPOCH

Уведомление (PEP_DPM_LOW_POWER_EPOCH)

Значение PEP_DPM_LOW_POWER_EPOCH.

Данные (PEP_DPM_LOW_POWER_EPOCH)

Указатель на структуру PEP_LOW_POWER_EPOCH.

Это уведомление устарело.

PEP_DPM_REGISTER_CRASHDUMP_DEVICE

Уведомление (PEP_DPM_REGISTER_CRASHDUMP_DEVICE)

Значение PEP_DPM_REGISTER_CRASHDUMP_DEVICE.

Данные (PEP_DPM_REGISTER_CRASHDUMP_DEVICE)

Указатель на PEP_REGISTER_CRASHDUMP_DEVICE структуру.

Платформа управления питанием Windows (PoFx) отправляет это уведомление, когда устройство регистрируется в качестве обработчика дампов памяти при сбое.

Возможность создания дампа памяти (crashdump) при возникновении фатальной ошибки является бесценной для определения причины сбоя. Windows по умолчанию создаёт дамп памяти при возникновении проверки на ошибки в системе. В этом контексте система функционирует в условиях очень ограниченной операционной среды с отключенными прерываниями и системным уровнем IRQL на HIGH_LEVEL.

Так как устройства, участвующие в записи аварийной дампа на диск (т. е. контроллер хранилища, контроллер PCI и т. д.), могут быть отключены во время сбоя, ОС должна вызвать PEP для включения устройства. Таким образом, ОС запрашивает обратный вызов (PowerOnDumpDeviceCallback) от PEP для каждого устройства в стеке аварийного дампа и вызывает его при создании файла дампа.

Учитывая ограниченную среду во время сбоя, обратный вызов, предоставляемый PEP, не должен получать доступ к коду страниц, блокировать любые события или вызывать любой код, который может сделать то же самое. Кроме того, процесс питания всех необходимых ресурсов не может полагаться на прерывания. В результате PEP, возможно, придется вернуться к опросу, если потребуется ожидать, чтобы различные ресурсы были доступны. Если PEP не может работать на устройстве под этими ограничениями, он не должен обрабатывать уведомление или не предоставлять подпрограмму обратного вызова.

Чтобы отправить уведомление PEP_DPM_REGISTER_CRASHDUMP_DEVICE, PoFx вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification. Для этого уведомления подпрограмма AcceptDeviceNotification вызывается на уровне IRQL <= HIGH_LEVEL.

PEP_DPM_DEVICE_IDLE_CONSTRAINTS

Уведомление (PEP_DPM_DEVICE_IDLE_CONSTRAINTS)

Значение PEP_DPM_DEVICE_IDLE_CONSTRAINTS.

Данные (PEP_DPM_DEVICE_IDLE_CONSTRAINTS)

Указатель на структуру PEP_DEVICE_PLATFORM_CONSTRAINTS. Отправляется в PEP запрос зависимостей между состояниями D-устройства и состояниями бездействия платформы.

Платформа управления питанием Windows (PoFx) отправляет это уведомление в PEP для запроса зависимостей между состояниями D-устройств и состояниями простоя платформы. PEP использует это уведомление для получения самого лёгкого D-состояния, в котором устройство всё ещё может находиться, и для входа в каждое состояние простоя платформы. Операционная система гарантирует, что устройство находится в минимальном D-состоянии перед вводом в состояние простоя связанной платформы. Если состояние простоя платформы не зависит от того, в каком D-состоянии находится это устройство, PEP должен указать минимальное D-состояние: PowerDeviceD0. Если ни одно из состояний простоя платформы не зависит от этого устройства, находящегося в определенном D-состоянии, это уведомление можно игнорировать.

Это уведомление отправляется на каждое устройство после того, как PEP получил уведомление PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES.

Чтобы отправить уведомление PEP_DPM_DEVICE_IDLE_CONSTRAINTS, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification. В этом вызове значение параметра уведомления — PEP_DPM_DEVICE_IDLE_CONSTRAINTS, и параметр данных указывает на структуру PEP_DEVICE_PLATFORM_CONSTRAINTS.

Для уведомления PEP_DPM_DEVICE_IDLE_CONSTRAINTS процедура AcceptDeviceNotification всегда вызывается на уровне IRQL = DISPATCH_LEVEL.

PEP_DPM_COMPONENT_IDLE_CONSTRAINTS

Уведомление (PEP_DPM_COMPONENT_IDLE_CONSTRAINTS)

Значение PEP_DPM_COMPONENT_IDLE_CONSTRAINTS.

Данные (PEP_DPM_COMPONENT_IDLE_CONSTRAINTS)

Указатель на PEP_COMPONENT_PLATFORM_CONSTRAINTS структуру.

Отправляется в PEP запрос для получения зависимостей между состояниями F компонентов и состояниями простоя платформы.

Платформа управления питанием Windows (PoFx) отправляет это уведомление в PEP для запроса зависимостей между состояниями F-компонентов и состояниями простоя платформы. PEP использует это уведомление, чтобы вернуть самое легкое состояние F, в котором компонент все еще может находиться, и войти в каждое состояние простоя платформы. ОС гарантирует, что компонент находится в минимальном состоянии F перед переходом связанной платформы в режим ожидания. Если состояние простоя платформы не зависит от этого компонента в любом состоянии F, то PEP должен указать минимальное состояние F-0. Если состояние простоя платформы не зависит от этого компонента в определенном состоянии F, это уведомление можно игнорировать.

Ограничения простоя устройства в состоянии, более глубоком, чем D0, более строгие, чем состояния простоя компонентов на этом устройстве. Для заданного индекса состояния простоя платформы, если устройство указало ограничение простоя устройства, соответствующее ограничение простоя компонента для всех компонентов, связанных с устройством, игнорируются.

Это уведомление отправляется каждому компоненту на каждом устройстве после того, как PEP получает уведомление PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES.

Чтобы отправить уведомление PEP_DPM_COMPONENT_IDLE_CONSTRAINTS, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification. Процедура AcceptDeviceNotification всегда вызывается на уровне IRQL = DISPATCH_LEVEL.

PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES

Уведомление (PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES)

Значение PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES.

Данные (PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES)

Указатель на структуру PEP_QUERY_COMPONENT_PERF_CAPABILITIES.

Запрашивается у PEP информация о числе наборов состояний производительности (P-state), определенных для компонента.

Чтобы отправить уведомление PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES, PoFx вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification. В этом вызове параметр уведомления принимает значение PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES, а параметр Data ссылается на структуру PEP_QUERY_COMPONENT_PERF_CAPABILITIES.

Для PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES уведомления функция AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_QUERY_COMPONENT_PERF_SET

Уведомление (PEP_DPM_QUERY_COMPONENT_PERF_SET)

Значение PEP_DPM_QUERY_COMPONENT_PERF_SET.

Данные (PEP_DPM_QUERY_COMPONENT_PERF_SET)

Указатель на структуру PEP_QUERY_COMPONENT_PERF_SET.

Сообщает PEP, что запрашивается информация о наборе значений состояния производительности (набор состояний P) для компонента.

Чтобы отправить уведомление PEP_DPM_QUERY_COMPONENT_PERF_SET, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification. В этом вызове значение параметра уведомления PEP_DPM_QUERY_COMPONENT_PERF_SET, а параметр Data указывает на структуру PEP_QUERY_COMPONENT_PERF_SET.

Для уведомления PEP_DPM_QUERY_COMPONENT_PERF_SET функция AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME

Уведомление (OPEP_DPM_QUERY_COMPONENT_PERF_SET_NAME)

Значение PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME.

Данные (OPEP_DPM_QUERY_COMPONENT_PERF_SET_NAME)

Указатель на структуру PEP_QUERY_COMPONENT_PERF_SET_NAME.

Сообщает PEP, что запрашивается информация о наборе значений состояния производительности (набор состояний P) для компонента.

Чтобы отправить уведомление PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME, PoFx вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification. В этом вызове значение параметра уведомления PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME, а параметр Data указывает на структуру PEP_QUERY_COMPONENT_PERF_SET_NAME.

Подпрограмма AcceptDeviceNotification для уведомления PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_QUERY_COMPONENT_PERF_STATES

Уведомление (PEP_DPM_QUERY_COMPONENT_PERF_STATES)

Значение PEP_DPM_QUERY_COMPONENT_PERF_STATES.

Данные (PEP_DPM_QUERY_COMPONENT_PERF_STATES)

Указатель на структуру PEP_QUERY_COMPONENT_PERF_STATES .

Сообщает PEP, что его запросили предоставить список дискретных значений состояния производительности (P-state) для указанного набора P-state.

Для отправки уведомления PEP_DPM_QUERY_COMPONENT_PERF_STATES PoFx вызывает обратный вызов AcceptDeviceNotification из PEP. В этом вызове значение параметра уведомления PEP_DPM_QUERY_COMPONENT_PERF_STATES, а параметр Data указывает на структуру PEP_QUERY_COMPONENT_PERF_STATES.

Для уведомлений PEP_DPM_QUERY_COMPONENT_PERF_STATES функция AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_REGISTER_COMPONENT_PERF_STATES

Уведомление (PEP_DPM_REGISTER_COMPONENT_PERF_STATES)

Значение PEP_DPM_REGISTER_COMPONENT_PERF_STATES.

Данные (PEP_DPM_REGISTER_COMPONENT_PERF_STATES)

Указатель на структуру PEP_REGISTER_COMPONENT_PERF_STATES.

Сообщает PEP о состояниях производительности (состояния P) указанного компонента.

Чтобы отправить уведомление PEP_DPM_REGISTER_COMPONENT_PERF_STATES, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification. В этом вызове параметр уведомления имеет значение PEP_DPM_REGISTER_COMPONENT_PERF_STATES, а параметр Data указывает на структуру PEP_REGISTER_COMPONENT_PERF_STATES.

Для уведомления PEP_DPM_REGISTER_COMPONENT_PERF_STATES рутина AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

ПЕР_ДПМ_ЗАПРОС_КОМПОНЕНТНЫЙ_ПЕРФОРМАНС_СОСТОЯНИЕ

Уведомление (PEP_DPM_REQUEST_COMPONENT_PERF_STATE)

Значение PEP_DPM_REQUEST_COMPONENT_PERF_STATE.

Данные (PEP_DPM_REQUEST_COMPONENT_PERF_STATE)

Указатель на структуру PEP_REQUEST_COMPONENT_PERF_STATE.

Уведомляет PEP о том, что платформа управления питанием Windows (PoFx) запрашивает одно или несколько изменений состояния производительности (P-state).

Чтобы отправить уведомление PEP_DPM_REQUEST_COMPONENT_PERF_STATE, PoFx вызывает подпрограмму обратного вызова AcceptDeviceNotification в PEP. В этом вызове значение параметра уведомления PEP_DPM_REQUEST_COMPONENT_PERF_STATE, а параметр Data указывает на структуру PEP_REQUEST_COMPONENT_PERF_STATE.

Для уведомления PEP_DPM_REQUEST_COMPONENT_PERF_STATE функция AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE

Уведомление (PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE)

Значение PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE.

Данные (PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE)

Указатель на структуру PEP_QUERY_CURRENT_COMPONENT_PERF_STATE.

Сообщает PEP, что запрашивается информация о текущем состоянии P в указанном наборе состояний P.

Чтобы отправить уведомление PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE, PoFx вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification. В этом вызове значение параметра Notification равно PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE, а параметр Data указывает на структуру PEP_QUERY_CURRENT_COMPONENT_PERF_STATE.

Для уведомления PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE рутинная процедура AcceptDeviceNotification всегда вызывается на уровне IRQL = PASSIVE_LEVEL.

PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS

Уведомление (PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS)

Значение PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS.

Данные (PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS)

Указатель на структуру PEP_DEBUGGER_TRANSITION_REQUIREMENTS.

Отправляется в PEP для запроса набора координированных или платформенных состояний, требующих выключения отладчика.

Платформа управления питанием Windows (PoFx) отправляет это уведомление в PEP, чтобы запросить набор координированных или платформенных состояний, для которых требуется отключить отладчик. Если это уведомление принято, ОС выполнит все переходы управления питанием отладчика для PEP, а PEP может не использовать TransitionCriticalResource для управления отладчиком.

Это уведомление отправляется на каждое устройство отладчика после того, как PEP принял уведомление PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE или PEP_NOTIFY_PPM_QUERY_COORDINATED_STATES.

Чтобы отправить уведомление PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification. Для данного уведомления процедура AcceptDeviceNotification всегда вызывается на уровне IRQL = DISPATCH_LEVEL.

PEP_DPM_QUERY_SOC_SUBSYSTEM

Уведомление (PEP_DPM_QUERY_SOC_SUBSYSTEM)

Значение PEP_DPM_QUERY_SOC_SUBSYSTEM.

Данные (PEP_DPM_QUERY_SOC_SUBSYSTEM)

Указатель на структуру типа PEP_QUERY_SOC_SUBSYSTEM.

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

Платформа управления питанием Windows (PoFx) отправляет это уведомление в PEP после инициализации состояния простоя платформы для сбора основных сведений о конкретной подсистеме SoC. PEP, который не реализует учет подсистемы SoC или не реализует его для указанного состояния простоя платформы, возвращает значение FALSE. Это позволяет ОС прекратить отправку диагностических уведомлений в PEP для состояния простоя этой платформы.

Количество подсистем системы и количество метаданных подсистемы могут изменяться с помощью обновлений PEP/BSP. Индекс подсистемы может изменяться каждый раз при загрузке ОС.

Это важно

PEP не может игнорировать это уведомление. PEP получает это уведомление, так как PEP ответило на уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT для PlatformIdleStateIndex с ненулевым значением SubsystemCount.

Чтобы отправить уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification на уровне IRQL < DISPATCH_LEVEL.

PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME

Уведомление (PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME)

Значение PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME.

Данные (PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME)

Указатель на структуру PEP_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME.

Отправляется в PEP, когда ОС хочет получить данные о времени, в течение которого подсистема системы на микросхеме (SoC) блокировала доступ к определенному состоянию простоя платформы без ведома ОС.

Обычно ОС вызывает это уведомление в конце расширенного резервного сеанса, в котором ОС попыталась ввести указанное состояние простоя платформы. PEP_QUERY_SOC_SUBSYSTEM_COUNT.SubsystemCount, значение которого заполняется PEP во время инициализации подкомпонентов, указывает, сколько уведомлений PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME отправляется в PEP одновременно. PEP может получать несколько PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME уведомлений для данной подсистемы. Эти уведомления могут или не могут перемежаться с уведомлениями типа PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING.

Это важно

PEP не может игнорировать это уведомление. PEP получает это уведомление, так как ответил на уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT для данного PlatformIdleStateIndex с ненулевым количеством подсистем.

Чтобы отправить уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME, PoFx вызывает подпрограмму обратного вызова PEP AcceptDeviceNotification в IRQL < DISPATCH_LEVEL.

PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT

Уведомление (PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT)

Значение PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT.

Данные (PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT)

Указатель на структуру PEP_QUERY_SOC_SUBSYSTEM_COUNT.

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

Это первое уведомление о диагностике подсистемы SoC, отправленное в PEP. PEP, который не реализует учет подсистемы SoC или не реализует его для указанного состояния простоя платформы, возвращает false, в этом случае ОС больше не будет отправлять уведомления о диагностике подсистемы PEP для этого состояния простоя платформы.

Замечание

PEP может игнорировать это уведомление, если в нем не реализованы диагностические уведомления SoC для состояния простоя указанной платформы.

Чтобы отправить уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT, PoFx вызывает обратный вызов подпрограммы PEP AcceptDeviceNotification на уровне IRQL < DISPATCH_LEVEL.

PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA

Уведомление (PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA)

Значение PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA.

Данные (PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA)

Указатель на структуру PEP_QUERY_SOC_SUBSYSTEM_METADATA.

Отправляется в PEP для сбора необязательных метаданных о подсистеме, время блокировки которой только что было запрошено.

Обычно это уведомление отправляется в PEP сразу после уведомления PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME. Одно уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA собирает все пары метаданных "ключ-значение", описывающие подсистему.

Это важно

PEP не может игнорировать это уведомление. PEP получает это уведомление, так как он ответил на уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT для этого PlatformIdleStateIndex с ненулевым количеством подсистем.

Чтобы отправить уведомление PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification. Для этого уведомления подпрограмма AcceptDeviceNotification вызывается на уровне IRQL < DISPATCH_LEVEL.

PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING

Уведомление (PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING)

Значение PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING.

Данные (PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING)

Указатель на структуру PEP_RESET_SOC_SUBSYSTEM_ACCOUNTING. структура.

Отправляется в PEP, чтобы очистить все время блокировки подсистемы и учет метаданных, выполнить любые дополнительные инициализации и перезапустить учет.

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

Чтобы отправить уведомление PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING, PoFx вызывает функцию обратного вызова PEP AcceptDeviceNotification на уровне IRQL < DISPATCH_LEVEL.