DPM(디바이스 전원 관리) 알림
PEP의 AcceptDeviceNotification 콜백 루틴이 수신하는 각 디바이스 전원 관리(DPM) 알림에는 알림 유형을 나타내는 Notification 매개 변수와 지정된 알림 유형에 대한 정보가 포함된 데이터 구조를 가리키는 Data 매개 변수가 함께 제공됩니다.
이 호출에서 Notification 매개 변수는 알림 유형을 나타내는 PEP_DPM_XXX 상수 값으로 설정됩니다. Data 매개 변수는 이 알림 유형과 연결된 PEP_XXX 구조체 형식을 가리킵니다.
알림 ID
다음 DPM 알림 ID는 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 알림을 보내기 위해 운영 체제는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_PREPARE_DEVICE Data 매개 변수는 PEP_PREPARE_DEVICE 구조를 가리킵니다. 항목에서 이 구조체의 DeviceId 멤버는 디바이스를 고유하게 식별하는 디바이스 식별 문자열입니다. 반환하기 전에 PEP는 이 구조체의 DeviceAccepted 멤버를 TRUE로 설정하여 디바이스 소유권을 클레임하거나 FALSE로 설정하여 디바이스를 소유하지 않음을 나타냅니다.
디바이스에 대한 전원 관리를 소유하는 PEP는 디바이스 외부에 있고 디바이스를 작동하는 데 필요한 전원 및 클록 리소스를 관리해야 합니다. 이 PEP는 PEP_DPM_PREPARE_DEVICE 알림에 대한 응답으로 디바이스에 클록 신호와 전원을 공급하고 PEP_DPM_ABANDON_DEVICE 알림에 대한 응답으로 디바이스에서 클록 신호 및 전원을 제거합니다.
다음 표에서는 이 운영 체제가 PEP에 PEP_DPM_PREPARE_DEVICE 알림을 보낼 때 적용되는 사전 조건과 PEP가 소유한 디바이스에 대해 이 알림을 처리한 후 적용되어야 하는 사후 조건을 보여 줍니다.
Preconditions | 사후 조건 |
---|---|
디바이스는 전원 상태일 수 있습니다. | PEP가 디바이스의 소유권을 주장하는 경우 디바이스 및 모든 구성 요소를 켜야 하며 디바이스에 대한 클록은 해제되어야 합니다. 전원 관리자가 이러한 디바이스에 대한 PEP 소유자를 찾으려고 할 때 PEP는 여러 디바이스에 대한 PEP_DPM_PREPARE_DEVICE 알림을 받을 수 있습니다. PEP는 PEP가 소유하지 않은 모든 디바이스에 대해 PEP_PREPARE_DEVICE 구조의 DeviceAccepted 멤버를 FALSE로 설정해야 합니다. |
핵심 디바이스에 대한 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 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_ABANDON_DEVICE Data 매개 변수는 PEP_ABANDON_DEVICE 구조를 가리킵니다. 항목에서 이 구조체의 DeviceId 멤버는 디바이스를 고유하게 식별하는 디바이스 식별 문자열입니다. 반환하기 전에 PEP는 이 구조체의 DeviceAccepted 멤버를 TRUE로 설정하여 디바이스 소유권을 클레임하거나 FALSE로 설정하여 디바이스를 소유하지 않음을 나타냅니다.
디바이스에 대한 전원 관리를 소유하는 PEP는 디바이스 외부에 있고 디바이스를 작동하는 데 필요한 전원 및 클록 리소스를 관리해야 합니다.
다음 표에서는 이 운영 체제가 PEP에 PEP_DPM_ABANDON_DEVICE 알림을 보낼 때 적용되는 사전 조건과 PEP가 소유한 디바이스에 대해 이 알림을 처리한 후 적용되어야 하는 사후 조건을 보여 줍니다.
Preconditions | 사후 조건 |
---|---|
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 구조체에 대한 포인터입니다.
지정된 디바이스의 드라이버 스택이 Windows PoFx(전원 관리 프레임워크)에 등록되었음을 PEP에 알릴 수 있습니다.
PoFx는 디바이스의 드라이버 스택이 PoFxRegisterDevice 루틴을 호출하여 디바이스를 등록할 때 이 알림을 보냅니다. 이 알림을 통해 PEP는 나중에 참조할 수 있도록 디바이스의 등록 정보를 PEP의 내부 스토리지에 복사할 수 있습니다.
PEP_DPM_REGISTER_DEVICE 알림을 보내기 위해 운영 체제는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_REGISTER_DEVICE 데이터 매개 변수는 디바이스의 커널 핸들 및 기타 등록 정보를 포함하는 PEP_REGISTER_DEVICE_V2 구조를 가리킵니다. 항목에서 이 구조체의 DeviceId 멤버는 디바이스를 고유하게 식별하는 디바이스 식별 문자열입니다. 반환하기 전에 PEP는 이 구조체의 DeviceAccepted 멤버를 TRUE로 설정하여 디바이스 소유권을 클레임하거나 FALSE로 설정하여 디바이스를 소유하지 않음을 나타냅니다. 이 구조체의 다른 멤버에 대한 자세한 내용은 PEP_REGISTER_DEVICE_V2 참조하세요.
다음 표에서는 이 운영 체제가 PEP에 PEP_DPM_REGISTER_DEVICE 알림을 보낼 때 적용되는 사전 조건과 PEP가 소유한 디바이스에 대해 이 알림을 처리한 후 적용되어야 하는 사후 조건을 보여 줍니다.
Preconditions | 사후 조건 |
---|---|
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 구조체에 대한 포인터입니다.
디바이스의 드라이버 스택이 Windows PoFx(전원 관리 프레임워크)에서 등록을 철회했음을 지정된 디바이스를 소유하는 PEP에 알립니다.
PoFx는 이전 PEP_DPM_REGISTER_DEVICE 알림 중에 PEP가 디바이스에 저장한 등록 정보가 더 이상 유효하지 않음을 PEP에 알리기 위해 이 알림을 보냅니다. 이에 대한 응답으로 PEP는 이 디바이스의 전원 관리에 사용되는 내부 상태를 클린 수 있습니다.
PEP_DPM_UNREGISTER_DEVICE 알림을 보내기 위해 운영 체제는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_UNREGISTER_DEVICE 데이터 매개 변수는 PEP_UNREGISTER_DEVICE 구조를 가리킵니다. 이 구조에는 디바이스에 대한 이전 PEP_DPM_REGISTER_DEVICE 알림에 대한 응답으로 PEP가 만든 핸들이 포함됩니다.
다음 표에서는 이 운영 체제가 PEP에 PEP_DPM_UNREGISTER_DEVICE 알림을 보낼 때 적용되는 사전 조건과 PEP가 소유한 디바이스에 대해 이 알림을 처리한 후 적용되어야 하는 사후 조건을 보여 줍니다.
Preconditions | 사후 조건 |
---|---|
PEP가 디바이스에 대한 PEP_DPM_REGISTER_DEVICE 알림을 받고 디바이스 등록 을 수락한 경우PEP는 이 디바이스와 연결된 모든 DPM(디바이스 전원 관리) 알림을 받을 수 있습니다. PEP는 이 디바이스와 연결된 "작업"을 보고할 수 있습니다. |
PEP는 PEP_DPM_ABANDON_DEVICE 제외하고 이 디바이스와 연결된 DPM(디바이스 전원 관리) 알림을 더 이상 받을 수 없습니다. 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 구조체에 대한 포인터입니다.
디바이스의 드라이버 스택이 새 Dx 전원 상태 변경을 요청하거나 이전에 요청된 Dx 전원 상태로의 전환이 완료 될 때마다 PEP로 전송됩니다.
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 데이터 매개 변수는 PEP_DEVICE_POWER_STATE 구조를 가리킵니다. 항목에서 PEP는 이 구조체의 내용이 초기화되지 않은 것으로 가정해야 합니다. 이 알림을 처리하려면 PEP에서 요청 중인 작업을 설명하는 PEP 할당 PEP_WORK_INFORMATION 구조를 가리키도록 WorkInformation 멤버를 설정해야 합니다. 또한 PEP는 PEP_WORK 구조체의 NeedWork 멤버를 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 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_COMPONENT_ACTIVE 데이터 매개 변수는 PEP_COMPONENT_ACTIVE 구조를 가리킵니다.
액세스할 수 있는 구성 요소가 활성 상태입니다. 액세스할 수 없는 구성 요소는 유휴 상태입니다. 활성 상태에 있는 구성 요소는 항상 F0 구성 요소 전원 상태입니다. 구성 요소는 유휴 상태가 될 때까지 F0을 떠날 수 없습니다. 유휴 상태인 구성 요소는 F0 또는 저전력 Fx 상태일 수 있습니다. 구성 요소의 활성/유휴 상태는 드라이버가 구성 요소에 액세스할 수 있는지 여부를 확인하는 유일한 신뢰할 수 있는 수단입니다. F0에 있지만 유휴 상태인 구성 요소는 저전력 Fx 상태로 전환하려고 할 수 있습니다.
활성 구성 요소가 유휴 상태로 전환할 준비가 되면 전환이 즉시 발생합니다. PEP_DPM_COMPONENT_ACTIVE 알림을 처리하는 동안 PEP는 예를 들어 구성 요소에 대해 F0에서 저전력 Fx 상태로의 전환을 요청할 수 있습니다.
PEP_DPM_COMPONENT_ACTIVE 알림이 유휴 상태에서 활성 상태로의 전환을 요청할 때 구성 요소가 저전력 Fx 상태인 경우 PEP는 먼저 구성 요소를 F0으로 전환해야 구성 요소가 활성 조건에 들어갈 수 있습니다. PEP는 PEP_DPM_COMPONENT_ACTIVE 알림에 대한 AcceptDeviceNotification 콜백에서 반환한 후 비동기적으로 활성 상태로 전환하기 위한 구성 요소 준비를 완료해야 할 수 있습니다. 구성 요소가 활성 상태에서 작동하도록 완전히 구성된 후에 PEP는 RequestWorker 루틴을 호출한 다음 PEP_WORK_INFORMATION 구조에서 WorkType = PepWorkActiveComplete를 설정하여 결과 PEP_DPM_WORK 알림을 처리해야 합니다.
PEP가 F0에 있는 구성 요소에 대한 PEP_DPM_COMPONENT_ACTIVE 알림을 수신하고 이미 활성 상태에서 작동하도록 완전히 구성된 경우 PEP는 이 알림 처리를 동기적으로 완료할 수 있습니다. 알림의 "빠른 경로" 처리가 지원되는 경우 이 알림에 대한 PEP_COMPONENT_ACTIVE 구조체의 WorkInformation 멤버는 PEP_WORK_INFORMATION 구조에 대한 포인터를 포함하고 PEP는 이 구조체의 WorkType 멤버를 PepWorkActiveComplete로 설정하여 전환을 완료할 수 있습니다. 그러나 WorkInformation = NULL이면 "빠른 경로"를 사용할 수 없으며 PEP는 이전 단락에 설명된 대로 RequestWorker를 호출하여 비동기적으로 전환을 완료해야 합니다.
활성 및 유휴 상태에 대한 자세한 내용은 구성 요소 수준 전원 관리를 참조하세요.
PEP_DPM_COMPONENT_ACTIVE 알림의 경우 AcceptDeviceNotification 루틴은 IRQL <= DISPATCH_LEVEL 호출됩니다.
PEP_DPM_WORK
알림(PEP_DPM_WORK)
PEP_DPM_WORK 값입니다.
데이터(PEP_DPM_WORK)
PEP_WORK 구조체에 대한 포인터입니다.
PEP가 RequestWorker 루틴을 호출할 때마다 PEP로 전송되어 Windows PoFx(전원 관리 프레임워크)에서 작업 항목을 요청합니다.
PEP가 RequestWorker 루틴을 호출하여 작업 항목을 요청하면 PoFx는 PEP에 PEP_DPM_WORK 알림을 전송하여 응답합니다. 그러나 이 알림은 작업 항목을 처리하는 데 필요한 리소스(즉, 작업자 스레드)를 사용할 수 있게 될 때까지 전송되지 않습니다. 이러한 방식으로 PoFx는 알림 중에 PEP가 PoFx에 전달하는 작업 요청이 리소스 부족으로 인해 실패할 수 없도록 보장합니다.
PEP_DPM_WORK 알림을 보내기 위해 운영 체제는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_WORK Data 매개 변수는 PEP_WORK 구조를 가리킵니다. 항목에서 PEP는 이 구조체의 내용이 초기화되지 않은 것으로 가정해야 합니다. 이 알림을 처리하려면 PEP에서 요청 중인 작업을 설명하는 PEP 할당 PEP_WORK_INFORMATION 구조를 가리키도록 WorkInformation 멤버를 설정해야 합니다. 또한 PEP는 PEP_WORK 구조체의 NeedWork 멤버를 TRUE로 설정하여 PEP가 PEP_DPM_WORK 알림을 처리했으며 WorkInformation 멤버가 유효한 PEP_WORK_INFORMATION 구조를 가리키는지 확인해야 합니다. PEP가 알림을 처리하지 못하거나 PEP_WORK_INFORMATION 구조를 할당할 수 없는 경우 PEP는 WorkInformation 멤버를 NULL로 설정하고 NeedWork 멤버를 FALSE로 설정해야 합니다.
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 구조체에 대한 포인터입니다.
드라이버가 PoFxPowerControl API를 호출하여 제어 코드를 PEP에 직접 전송했음을 PEP에 알립니다.
PoFx(Windows 전원 관리 프레임워크)는 드라이버가 PoFxPowerControl API를 호출하여 제어 코드를 PEP에 직접 보낼 때 이 알림을 PEP에 보냅니다. 이 경우 알림 데이터 포인터는 PEP_POWER_CONTROL_REQUEST 구조를 가리킵니다.
전원 제어 요청 및 해당 의미 체계는 PEP 기록기와 디바이스 클래스 소유자 간에 정의됩니다. 일반적으로 이러한 인터페이스는 일반화된 전원 관리 프레임워크에서 캡처되지 않는 디바이스 클래스별 통신을 위한 것입니다. 예를 들어 UART 컨트롤러는 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에 알릴 수 있습니다.
PoFx(Windows 전원 관리 프레임워크)는 드라이버가 이전에 PEP에서 발급한 전원 제어 요청을 완료할 때 이 알림을 PEP에 보냅니다.
! [참고] PEP는 전원 제어 요청을 실행하지 않는 경우 이 알림을 무시할 수 있습니다.
PEP_DPM_POWER_CONTROL_COMPLETE 알림의 경우 AcceptDeviceNotification 루틴은 IRQL <= DISPATCH_LEVEL 호출됩니다.
PEP_DPM_SYSTEM_LATENCY_UPDATE
알림(PEP_DPM_SYSTEM_LATENCY_UPDATE)
PEP_DPM_SYSTEM_LATENCY_UPDATE 값입니다.
데이터(PEP_DPM_SYSTEM_LATENCY_UPDATE)
PEP_SYSTEM_LATENCY 구조체에 대한 포인터입니다.
OS가 전체 시스템 대기 시간 허용 오차를 업데이트했음을 PEP에 알립니다.
Windows PoFx(전원 관리 프레임워크)는 OS가 전체 시스템 대기 시간 허용 오차를 업데이트할 때 이 알림을 보냅니다.
이전 버전의 PoFx에서 이 알림은 PEP에서 프로세서 및 플랫폼 유휴 상태 선택에 사용되었습니다. 최신 PEP 인터페이스를 사용하면 선택 프로세스가 OS에서 완전히 처리되므로 이 알림은 더 이상 유용하지 않습니다. 완전성을 위해 여기에 포함되어 있으며 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에 알릴 수 있습니다.
디바이스 스택은 2단계 프로세스에서 런타임 전원 관리를 위해 OS에 등록됩니다. 드라이버는 먼저 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 구조체에 대한 포인터입니다.
OS가 지정된 구성 요소에 대해 유휴 상태 전환을 발급할 때 PEP로 전송됩니다.
Windows PoFx(전원 관리 프레임워크)는 OS가 지정된 구성 요소에 대해 유휴 상태 전환을 발급할 때 이 알림을 보냅니다.
중요
PEP는 이 알림을 처리해야 합니다.
각 유휴 상태 전환에 대해 PEP는 드라이버에 알림이 표시되기 전과 후에 알림을 받습니다. PEP는 PEP_NOTIFY_COMPONENT_IDLE_STATE 구조의 DriverNotified 멤버를 검사하여 사전 알림과 사후 알림을 구분합니다. 사후 알림의 경우 DriverNotified 멤버는 TRUE가 됩니다.
사전 알림은 일반적으로 F0으로 전환할 때 사용됩니다. 이 경우 PEP는 드라이버가 F0 알림을 처리할 때 하드웨어를 사용할 수 있도록 클록 또는 전원 리소스를 다시 사용하도록 설정해야 할 수 있습니다. 따라서 사후 알림은 일반적으로 F0에서 더 깊은 유휴 상태로 전환할 때 사용됩니다. 드라이버가 유휴 상태 알림을 처리한 후 PEP는 클록 및 전원 리소스를 안전하게 끌 수 있습니다.
지정된 구성 요소에 대한 유휴 상태 전환을 처리하려면 작업이 상당한 시간이 걸리거나 IRQL이 너무 높아서 전환을 동기적으로 완료하는 경우 비동기 처리가 필요할 수 있습니다. 결과적으로 PEP는 Completed 멤버를 각각 TRUE 또는 FALSE로 설정하여 동기적으로 또는 비동기적으로 이 알림을 완료할 수 있습니다.
알림을 비동기적으로 완료하는 경우 PEP는 작업자를 요청하고(RequestWorker 참조) PepWorkCompleteIdleState의 작업 유형을 사용하여 결과 PEP_DPM_WORK 알림에서 제공된 작업 정보 구조를 작성하여 완료 시 OS에 알릴 수 있습니다.
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에 알릴 수 있습니다.
PoFx(Windows 전원 관리 프레임워크)는 등록된 디바이스를 디버그 포트로 사용할 수 있음을 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 구조체에 대한 포인터입니다.
PoFx(Windows 전원 관리 프레임워크)는 디바이스가 크래시덤프 처리기로 등록될 때 이 알림을 보냅니다.
시스템에서 치명적인 오류가 발생할 때 메모리 덤프(crashdump)를 생성하는 기능은 크래시 원인을 확인하는 데 매우 중요합니다. 기본적으로 Windows는 시스템에서 버그 검사를 발견하면 크래시덤프를 생성합니다. 이 컨텍스트에서 시스템은 인터럽트 사용 안 함 및 시스템 IRQL이 HIGH_LEVEL 매우 제한된 운영 환경에 있습니다.
크래시덤프를 디스크에 쓰는 데 관련된 디바이스(예: 스토리지 컨트롤러, PCI 컨트롤러 등)는 충돌 시 전원이 다운될 수 있으므로 OS는 PEP를 호출하여 디바이스에서 전원을 공급해야 합니다. 따라서 OS는 크래시덤프 스택의 모든 디바이스에 대해 PEP에서 콜백(PowerOnDumpDeviceCallback)을 요청하고 덤프 파일을 생성할 때 콜백을 호출합니다.
충돌 시 제한된 환경을 감안할 때 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 상태와 플랫폼 유휴 상태 간의 종속성을 쿼리합니다.
PoFx(Windows 전원 관리 프레임워크)는 이 알림을 PEP에 보내 디바이스 D 상태와 플랫폼 유휴 상태 간의 종속성을 쿼리합니다. PEP는 이 알림을 사용하여 디바이스가 여전히 있을 수 있는 가장 가벼운 D 상태를 반환하고 각 플랫폼 유휴 상태를 입력합니다. OS는 연결된 플랫폼 유휴 상태를 입력하기 전에 디바이스가 최소 D 상태임을 보장합니다. 플랫폼 유휴 상태가 이 디바이스가 D 상태에 있지 않은 경우 PEP는 PowerDeviceD0의 최소 D 상태를 지정해야 합니다. 특정 D 상태에 있는 이 디바이스에 따라 플랫폼 유휴 상태가 없는 경우 이 알림을 무시할 수 있습니다.
이 알림은 PEP가 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES 알림을 받은 후 각 디바이스로 전송됩니다.
PEP_DPM_DEVICE_IDLE_CONSTRAINTS 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 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 구조체에 대한 포인터입니다.
구성 요소 F 상태와 플랫폼 유휴 상태 간의 종속성을 쿼리하기 위해 PEP로 전송됩니다.
PoFx(Windows 전원 관리 프레임워크)는 구성 요소 F 상태와 플랫폼 유휴 상태 간의 종속성을 쿼리하기 위해 PEP에 이 알림을 보냅니다. PEP는 이 알림을 사용하여 구성 요소가 여전히 있을 수 있는 가장 가벼운 F 상태를 반환하고 각 플랫폼 유휴 상태를 입력합니다. OS는 연결된 플랫폼 유휴 상태를 입력하기 전에 구성 요소가 최소 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 구조체에 대한 포인터입니다.
구성 요소에 대해 정의된 성능 상태(P 상태) 집합 수에 대해 쿼리 중임을 PEP에 알릴 수 있습니다.
PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES 데이터 매개 변수는 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 구조체에 대한 포인터입니다.
구성 요소에 대한 성능 상태 값 집합(P 상태 집합)에 대한 정보를 쿼리하고 있음을 PEP에 알릴 수 있습니다.
PEP_DPM_QUERY_COMPONENT_PERF_SET 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_QUERY_COMPONENT_PERF_SET 데이터 매개 변수는 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 구조체에 대한 포인터입니다.
구성 요소에 대한 성능 상태 값 집합(P 상태 집합)에 대한 정보를 쿼리하고 있음을 PEP에 알릴 수 있습니다.
PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME 데이터 매개 변수는 PEP_QUERY_COMPONENT_PERF_SET_NAME 구조를 가리킵니다.
PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME 알림의 경우 AcceptDeviceNotification 루틴은 항상 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 구조체에 대한 포인터입니다.
지정된 P 상태 집합에 대한 불연속 성능 상태(P 상태) 값 목록을 쿼리 중임을 PEP에 알릴 수 있습니다.
PEP_DPM_QUERY_COMPONENT_PERF_STATES 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_QUERY_COMPONENT_PERF_STATES 데이터 매개 변수는 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 구조체에 대한 포인터입니다.
지정된 구성 요소의 성능 상태(P 상태)에 대해 PEP에 알릴 수 있습니다.
PEP_DPM_REGISTER_COMPONENT_PERF_STATES 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_REGISTER_COMPONENT_PERF_STATES 데이터 매개 변수는 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_DPM_REQUEST_COMPONENT_PERF_STATE)
PEP_REQUEST_COMPONENT_PERF_STATE 구조체에 대한 포인터입니다.
PoFx(Windows 전원 관리 프레임워크)에서 하나 이상의 성능 상태(P 상태) 변경이 요청됨을 PEP에 알릴 수 있습니다.
PEP_DPM_REQUEST_COMPONENT_PERF_STATE 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_REQUEST_COMPONENT_PERF_STATE 데이터 매개 변수는 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 구조체에 대한 포인터입니다.
지정된 P 상태 집합의 현재 P 상태에 대한 정보를 쿼리 중임을 PEP에 알릴 수 있습니다.
PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE 데이터 매개 변수는 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로 전송됩니다.
PoFx(Windows 전원 관리 프레임워크)는 이 알림을 PEP에 보내 디버거의 전원을 꺼야 하는 조정된 또는 플랫폼 상태 집합을 쿼리합니다. 이 알림이 수락되면 OS는 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 구조체에 대한 포인터입니다.
칩(SoC) 하위 시스템의 특정 시스템에 대한 기본 정보를 수집하기 위해 PEP로 전송됩니다.
PoFx(Windows 전원 관리 프레임워크)는 특정 SoC 하위 시스템에 대한 기본 정보를 수집하기 위해 플랫폼 유휴 상태가 초기화된 후 PEP에 이 알림을 보냅니다. SoC 하위 시스템 회계를 구현하지 않거나 지정된 플랫폼 유휴 상태에 대해 구현하지 않는 PEP는 FALSE를 반환합니다. 이렇게 하면 OS가 이 플랫폼 유휴 상태의 PEP에 진단 알림 전송을 중지하도록 지시합니다.
시스템의 SubsystemCount 및 하위 시스템의 MetadataCount는 PEP/BSP 업데이트로 변경할 수 있습니다. SubsystemIndex는 OS가 부팅할 때마다 변경할 수 있습니다.
중요
PEP는 이 알림을 무시할 수 없습니다. PEP는 0이 아닌 SubsystemCount를 사용하여 이 PlatformIdleStateIndex에 대한 PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT 알림에 응답했기 때문에 이 알림을 수신합니다.
PEP_DPM_QUERY_SOC_SUBSYSTEM 알림을 보내기 위해 PoFx는 IRQL < DISPATCH_LEVEL PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다.
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 구조체에 대한 포인터입니다.
OS가 칩(SoC) 하위 시스템의 특정 시스템이 OS의 지식 없이 특정 플랫폼 유휴 상태로의 진입을 차단한 시간의 집계를 수집하려고 할 때 PEP로 전송됩니다.
일반적으로 OS는 OS가 지정된 플랫폼 유휴 상태를 입력하려고 시도한 확장된 연결된 대기 세션이 끝날 때 이 알림을 호출합니다. The PEP_QUERY_SOC_SUBSYSTEM_COUNT. 하위 구성 요소 초기화 중에 PEP가 이전에 입력한 SubsystemCount 값은 한 번에 PEP로 전송되는 PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME 알림 수를 지정합니다. PEP는 지정된 하위 시스템에 대한 여러 PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME 알림을 받을 수 있습니다. 이러한 알림은 PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING 알림과 인터리빙되거나 인터리브되지 않을 수 있습니다.
중요
PEP는 이 알림을 무시할 수 없습니다. PEP는 0이 아닌 SubsystemCount를 사용하여 이 PlatformIdleStateIndex에 대한 PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT 알림에 응답했기 때문에 이 알림을 수신합니다.
PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME 알림을 보내기 위해 PoFx는 IRQL < DISPATCH_LEVEL PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다.
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가 지정된 플랫폼 유휴 상태를 차지하는 칩(SoC) 하위 시스템의 시스템을 지원하는지 여부를 OS에 알리기 위해 PEP로 전송됩니다.
PEP에 전송된 첫 번째 SoC 하위 시스템 진단 알림입니다. SoC 하위 시스템 계정을 구현하지 않거나 지정된 플랫폼 유휴 상태에 대해 구현하지 않는 PEP는 FALSE를 반환합니다. 이 경우 OS는 이 플랫폼 유휴 상태에 대해 PEP를 더 이상 SoC 하위 시스템 진단 알림을 보내지 않습니다.
참고
PEP는 지정된 플랫폼 유휴 상태에 대한 SoC 진단 알림을 구현하지 않는 경우 이 알림을 무시할 수 있습니다.
PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT 알림을 보내기 위해 PoFx는 IRQL < DISPATCH_LEVEL PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다.
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_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME 알림 바로 다음에 PEP로 전송됩니다. 하나의 PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA 알림은 하위 시스템을 설명하는 모든 키-값 메타데이터 쌍을 수집합니다.
중요
PEP는 이 알림을 무시할 수 없습니다. PEP는 0이 아닌 SubsystemCount를 사용하여 이 PlatformIdleStateIndex에 대한 PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT 알림에 응답했기 때문에 이 알림을 수신합니다.
PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA 알림을 보내기 위해 PoFx는 PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다. 이 알림의 경우 IRQL < DISPATCH_LEVEL AcceptDeviceNotification 루틴이 호출됩니다.
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 구조체에 대한 A 포인터에 대한 포인터입니다. 구조.
모든 하위 시스템 차단 시간 및 메타데이터 회계를 지우고, 필요한 추가 초기화를 수행하고, 회계를 다시 시작하기 위해 PEP로 전송됩니다.
PoFx(Windows 전원 관리 프레임워크)는 OS를 사용하여 모든 하위 시스템을 초기화한 후 언제든지 PEP에 이 알림을 보냅니다. 일반적으로 이 알림은 OS가 지정된 플랫폼 유휴 상태(연결된 대기 상태로 전환 시 DRIPS를 대상으로 함)에서 시스템을 칩(SoC)에 유지하는 것에 대한 새로운 분석 기간을 시작할 때 호출됩니다. OS는 PEP가 하나 이상의 SoC 하위 시스템을 초기화한 플랫폼 유휴 상태에 대해서만 이 알림을 보냅니다.
PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING 알림을 보내기 위해 PoFx는 IRQL < DISPATCH_LEVEL PEP의 AcceptDeviceNotification 콜백 루틴을 호출합니다.