PPM(프로세서 전원 관리) 알림

PEP의 AcceptProcessorNotification 콜백 루틴이 수신하는 각 프로세서 전원 관리(PPM) 알림에는 알림 유형을 나타내는 Notification 매개 변수와 지정된 알림 유형에 대한 정보가 포함된 데이터 구조를 가리키는 Data 매개 변수가 함께 제공됩니다.

이 호출에서 Notification 매개 변수는 알림 유형을 나타내는 PEP_NOTIFY_PPM_XXX 상수 값으로 설정됩니다. 데이터 매개 변수는 이 알림 유형과 연결된 PEP_PPM_XXX 구조체 형식을 가리킵니다.

다음 PPM(프로세서 전원 관리) 알림 ID는 AcceptProcessorNotification 콜백 루틴에서 사용됩니다.

PEP_NOTIFY_PPM_QUERY_CAPABILITIES

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_CAPABILITIES 값입니다.

데이터

PEP_PPM_QUERY_CAPABILITIES 구조체에 대한 포인터입니다.

주의

PEP의 전원 관리 기능에 대해 쿼리되고 있음을 PEP에 알릴 수 있습니다.

PoFx(Windows 전원 관리 프레임워크)는 PEP가 전원 관리 기능을 쿼리할 때 이 알림을 보냅니다. 이 문제는 프로세서 초기화 시 발생하며 시스템의 각 프로세서에 대해 전송됩니다.

x86/AMD64 프로세서가 있는 플랫폼은 프로세서 성능 제어를 위해 ACPI 인터페이스를 사용해야 합니다.

PEP_NOTIFY_PPM_QUERY_CAPABILITIES 알림을 보내기 위해 PoFx는 PEP의 AcceptProcessorNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_NOTIFY_PPM_QUERY_CAPABILITIES 데이터 매개 변수는 PEP_PPM_QUERY_CAPABILITIES 구조를 가리킵니다.

PEP_NOTIFY_PPM_QUERY_CAPABILITIES 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_IDLE_STATES

알림

PEP_NOTIFY_PPM_QUERY_IDLE_STATES 값입니다.

데이터

PEP_PPM_QUERY_IDLE_STATES 구조체에 대한 포인터입니다.

주의

유휴 상태에 대해 PEP에 알릴 수 있습니다.

PEP_NOTIFY_PPM_QUERY_IDLE_STATES 알림을 보내기 위해 PoFx는 PEP의 AcceptProcessorNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_NOTIFY_PPM_QUERY_IDLE_STATES 데이터 매개 변수는 PEP_PPM_QUERY_IDLE_STATES 구조를 가리킵니다.

PEP_NOTIFY_PPM_QUERY_IDLE_STATES 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_IDLE_SELECT

알림

PEP_NOTIFY_PPM_IDLE_SELECT 값입니다.

데이터

PEP_PPM_IDLE_SELECT 구조체에 대한 포인터입니다.

주의

PEP에 유휴 선택을 알릴 수 있습니다.

PEP_NOTIFY_PPM_IDLE_SELECT 알림을 보내기 위해 PoFx는 PEP의 AcceptProcessorNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_NOTIFY_PPM_IDLE_SELECT Data 매개 변수는 PEP_PPM_IDLE_SELECT 구조를 가리킵니다.

PEP_NOTIFY_PPM_IDLE_SELECT 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_IDLE_CANCEL

알림

PEP_NOTIFY_PPM_IDLE_CANCEL 값입니다.

데이터

PEP_PPM_IDLE_CANCEL 구조체에 대한 포인터입니다.

주의

PEP에 취소 작업을 알릴 수 있습니다.

PEP_NOTIFY_PPM_IDLE_CANCEL 알림을 보내기 위해 PoFx는 PEP의 AcceptProcessorNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_NOTIFY_PPM_IDLE_CANCEL Data 매개 변수는 PEP_PPM_IDLE_CANCEL 구조를 가리킵니다.

PEP_NOTIFY_PPM_IDLE_CANCEL 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_IDLE_EXECUTE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_IDLE_EXECUTE 값입니다.

데이터

PEP_PPM_IDLE_EXECUTE 또는 PEP_PPM_IDLE_EXECUTE_V2 구조체에 대한 포인터입니다.

주의

현재 프로세서를 지정된 유휴 상태로 전환하기 위해 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 이 알림을 PEP에 보내 현재 프로세서를 지정된 유휴 상태로 전환합니다.

PEP는 절전 모드 전환의 영향을 받을 수 있는 핵심 시스템 리소스의 OS에 알리는 것을 포함하여 이전에 선택한 유휴 상태로 전환하도록 하드웨어를 준비할 수 있습니다. 그런 다음 중지 명령을 실행하여 프로세서를 유휴 상태로 전환해야 합니다. 유휴 상태에서 돌아오면 PEP는 절전 모드 해제 시 활성화될 수 있는 핵심 시스템 리소스의 OS에 알리는 것을 포함하여 하드웨어 설정을 실행 취소해야 합니다. PEP가 프로세서(및 플랫폼) 유휴 상태를 실행할 수 없는 경우 오류 상태 반환해야 합니다.

조정된 유휴 상태 인터페이스를 사용하는 경우 OS는 유휴 전환에 의해 입력될 조정된 유휴 상태 목록과 함께 CoordinatedStateCount 및 CoordinatedState 필드를 포함하는 PEP_PPM_IDLE_EXECUTE_V2 구조를 사용합니다. PlatformState 필드는 입력 중인 가장 깊은 플랫폼 조정 유휴 상태(있는 경우)를 지정합니다.

조정된 유휴 상태 인터페이스를 사용하지 않는 경우 OS는 PEP_PPM_IDLE_EXECUTE 구조를 사용합니다.

PEP_NOTIFY_PPM_IDLE_EXECUTE 알림의 경우 인터럽트를 사용하지 않도록 설정된 AcceptProcessorNotification 루틴이 호출됩니다.

PEP_NOTIFY_PPM_IDLE_COMPLETE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다.

알림

PEP_NOTIFY_PPM_IDLE_COMPLETE 값입니다.

데이터

PEP_PPM_IDLE_COMPLETE 또는 PEP_PPM_IDLE_COMPLETE_V2 구조체에 대한 포인터입니다.

주의

현재 프로세서가 완료된 유휴 전환에서 해제되고 있음을 PEP에 알릴 수 있습니다.

현재 프로세서가 완료된 유휴 전환에서 해제되면 PoFx(Windows 전원 관리 프레임워크)에서 이 알림을 보냅니다. 플랫폼이 플랫폼 유휴 전환을 실행하는 경우 절전 모드 해제할 첫 번째 프로세서는 종료되는 플랫폼 유휴 상태를 나타냅니다. 플랫폼 유휴 전환에 사용되는 동기화 유형에 따라 플랫폼 유휴 상태에서 절전 모드를 해제하는 첫 번째 프로세서는 플랫폼 유휴 상태로 전환된 프로세서가 아닐 수 있습니다.

프로세서가 깊은 유휴 상태를 실행하는 경우 PEP는 핵심 컨텍스트를 복원하거나 핵심 리소스가 복원되었음을 OS에 알리는 전체 알림을 받을 때까지 기다리지 않아야 합니다. OS는 실행 알림이 완료되면 이러한 리소스가 복원될 것으로 예상합니다. 하이퍼바이저를 사용하도록 설정하면 PEP는 플랫폼 유휴 상태에서 종료될 때만 이 알림을 수신하고 ProcessorState 필드가 PEP_PROCESSOR_IDLE_STATE_UNKNOWN 설정됩니다.

조정된 유휴 상태 인터페이스를 사용하는 경우 OS는 유휴 전환으로 종료될 조정된 유휴 상태 목록과 함께 CoordinatedStateCount 및 CoordinatedState 필드를 포함하는 PEP_PPM_IDLE_COMPLETE_V2 구조를 사용합니다. PlatformState 필드는 종료되는 가장 깊은 플랫폼 조정 유휴 상태(있는 경우)를 지정합니다. 이 프로세서에서 종료된 조정된 유휴 상태 집합은 느슨한 동기화를 사용하는 경우 이 프로세서에서 입력한 조정된 유휴 상태 집합과 다를 수 있습니다.

조정된 유휴 상태 인터페이스를 사용하지 않는 경우 OS는 PEP_PPM_IDLE_COMPLETE 구조를 사용합니다.

PEP_NOTIFY_PPM_IDLE_COMPLETE 알림의 경우 인터럽트를 사용하지 않도록 설정한 상태에서 AcceptProcessorNotification 루틴이 호출되며 항상 대상 프로세서에서 실행됩니다.

PEP_NOTIFY_PPM_IS_PROCESSOR_HALTED

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_IS_PROCESSOR_HALTED 값입니다.

데이터

PEP_PPM_IS_PROCESSOR_HALTED 구조체에 대한 포인터입니다.

주의

지정된 프로세서가 현재 선택한 유휴 상태에서 중지되었는지 확인하기 위해 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 지정된 프로세서가 현재 선택한 유휴 상태에서 중지되었는지 확인하기 위해 이 알림을 PEP에 보냅니다. OS는 이 알림을 사용하여 보조 프로세서가 플랫폼 유휴 상태를 조정하는 경우 유휴 상태로의 전환을 완전히 완료했는지 검사. PEP는 대상 프로세서가 플랫폼 유휴 전환이 안전하게 발생할 수 있는 상태에 도달했음을 보장해야 합니다(예: 하드웨어 레지스터를 확인하여 코어가 중단되었는지 확인). 이 알림이 프로세서가 유휴 상태임을 나타내면 OS가 명시적으로 요청하지 않는 한 해당 프로세서가 절전 모드에서 해제되지 않아야 합니다.

PEP는 IDLE_SELECT 알림과 IDLE_COMPLETE 알림 사이에 언제든지 이 알림을 받을 수 있습니다. 유휴 전환 중에 이 알림을 최대 한 번 수신하도록 보장됩니다.

PEP_NOTIFY_PPM_IS_PROCESSOR_HALTED 알림의 경우 AcceptProcessorNotification 루틴은 IRQL에서 호출되고 모든 IRQL에서 인터럽트를 사용하지 않도록 설정하여 대상 프로세서에서 실행되지 않습니다.

<= HIGH_LEVEL

PEP_NOTIFY_PPM_INITIATE_WAKE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다.

알림

PEP_NOTIFY_PPM_INITIATE_WAKE 값입니다.

데이터

구조체에 대한 포인터입니다.

주의

인터럽트할 수 없는 유휴 상태에서 절전 모드 해제를 시작하기 위해 지정된 프로세서에 대한 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 지정된 프로세서에 대해 PEP에 이 알림을 보내 인터럽트할 수 없는 유휴 상태에서 절전 모드 해제를 시작합니다. PEP는 NeedInterruptForCompletion을 사용하여 대상 프로세서에 대한 절전 모드 해제 상태 반환해야 합니다. 프로세서가 유휴 상태에서 절전 모드 해제를 완료하기 위해 인터럽트를 필요로 하는 경우 TRUE를 반환합니다. 이 경우 PEP는 반환 시 대상 프로세서가 이 알림을 처리하지 못하도록 해야 합니다. 대상 프로세서가 이미 실행 중이거나 소프트웨어에서 생성된 인터럽트를 요구하지 않고 결국 유휴 상태(및 수행 중임)를 종료하는 경우 NeedInterruptForCompletion은 FALSE로 설정되어야 합니다.

참고 PEP는 동일한 프로세서에 대해 동시에 이 알림을 받지 않습니다.

PEP_NOTIFY_PPM_INITIATE_WAKE 알림의 경우 인터럽트를 사용하지 않도록 설정된 모든 IRQL에서 AcceptProcessorNotification 루틴이 호출되며 대상 프로세서에서 실행되지 않습니다.

<= HIGH_LEVEL

PEP_NOTIFY_PPM_QUERY_FEEDBACK_COUNTERS

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_FEEDBACK_COUNTERS 값입니다.

데이터

PEP_PPM_QUERY_FEEDBACK_COUNTERS 구조체에 대한 포인터입니다.

주의

PEP가 지원하는 피드백 카운터 목록을 쿼리하고 있음을 PEP에 알릴 수 있습니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 이 알림을 보내 PEP에서 지원하는 피드백 카운터 목록을 쿼리합니다.

PEP_NOTIFY_PPM_QUERY_FEEDBACK_COUNTERS 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_FEEDBACK_READ

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_FEEDBACK_READ 값입니다.

데이터

PEP_PPM_FEEDBACK_READ 구조체에 대한 포인터입니다.

주의

피드백 카운터의 현재 값에 대해 쿼리 중임을 PEP에 알릴 수 있습니다.

Windows PoFx(전원 관리 프레임워크)는 피드백 카운터의 현재 값을 쿼리하려는 경우 이 알림을 보냅니다.

이 알림은 인터럽트 사용 안 함으로 전송될 수 있습니다. 카운터의 선호도 필드가 설정된 경우 이 알림은 대상 프로세서에서 실행됩니다. 그렇지 않으면 이 알림은 모든 프로세서에서 실행될 수 있습니다.

PEP_NOTIFY_PPM_FEEDBACK_READ 알림의 경우 IRQL = DISPATCH_LEVEL AcceptProcessorNotification 루틴을 호출할 수 있습니다.

PEP_NOTIFY_PPM_QUERY_PERF_CAPABILITIES

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_PERF_CAPABILITIES 값입니다.

데이터

PEP_PPM_QUERY_PERF_CAPABILITIES 구조체에 대한 포인터입니다.

주의

플랫폼에서 지원하는 성능 범위에 대해 쿼리되고 있음을 PEP에 알릴 수 있습니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 이 알림을 전송하여 플랫폼에서 지원하는 성능 범위를 쿼리합니다. PEP_PPM_QUERY_PERF_CAPABILITIES 구조의 DomainId 및 DomainMembers 필드는 성능 상태 도메인을 플랫폼에 표현하는 데 사용됩니다. 각 프로세서는 정확히 하나의 성능 상태 도메인의 멤버입니다. 운영 체제는 성능 도메인의 모든 프로세서가 함께 성능을 변경하도록 합니다.

PEP_NOTIFY_PPM_QUERY_PERF_CAPABILITIES 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_PERF_CONSTRAINTS

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다.

알림

PEP_NOTIFY_PPM_PERF_CONSTRAINTS 값입니다.

데이터

PEP_PPM_PERF_CONSTRAINTS 구조체에 대한 포인터입니다.

주의

프로세서의 현재 작동 제약 조건에 대해 쿼리되고 있음을 PEP에 알릴 수 있습니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서의 현재 작동 제약 조건을 검사하려는 경우 이 알림을 보냅니다. PEP는 제어 코드 GUID_PPM_PERF_CONSTRAINT_CHANGE 사용하여 전원 제어를 실행하여 OS가 프로세서의 성능 제약 조건을 다시 평가하도록 요청합니다. InBuffer 및 OutBuffer는 NULL이어야 합니다.

PEP는 프로세서에 대한 전원 제어 트랜잭션을 발급하기 전에 프로세서에 대한 PEP_DPM_DEVICE_STARTED 알림을 받을 때까지 기다려야 합니다.

PEP_NOTIFY_PPM_PERF_CONSTRAINTS 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_PERF_SET

이 알림은 프로세서의 현재 작동 성능을 변경해야 한다는 것을 PEP에 알릴 수 있습니다.

다음은 AcceptProcessorNotification에 대한 매개 변수를 설명합니다.

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_PERF_SET 값입니다.

데이터

PEP_PPM_PERF_SET 구조체에 대한 포인터입니다.

주의

PoFx(Windows 전원 관리 프레임워크)는 프로세서의 현재 작동 성능을 변경하려는 경우 이 알림을 보냅니다. 이 알림은 모든 프로세서에서 실행하는 동안 전송될 수 있습니다.

PEP_NOTIFY_PPM_PERF_SET 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = DISPATCH_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_PARK_SELECTION

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

값 PEP_NOTIFY_PPM_PARK_SELECTION.

데이터

PEP_PPM_PARK_SELECTION 구조체에 대한 포인터입니다.

주의

OS가 대기할 기본 프로세서 코어 집합을 선택하도록 하려면 PEP에 알릴 수 있습니다.

PoFx(Windows 전원 관리 프레임워크)는 PEP에 대기할 기본 코어 집합을 선택하도록 지시하기 위해 이 알림을 보냅니다.

PEP_NOTIFY_PPM_PARK_SELECTION 두 가지 함수를 수행하기 위해 오버로드되었습니다.

PEP에서 대기해야 하는 프로세서(시스템의 모든 프로세서 집합에서)와 주차 해제해야 하는 프로세서를 선택하도록 합니다. PEP가 인터럽트 수신할 모든 프로세서 집합에서 인터럽트 수신할 프로세서와 인터럽트 수신을 수신하지 않아야 하는 프로세서를 선택하도록 합니다. Windows는 PEP가 OS가 수행하는 두 가지 중 어느 것을 구별할 수 있는 수단을 제공하지 않습니다. 결과적으로 PEP가 지정된 입력 집합(AdditionalUnparkedProcessors 개수 및 PoPreference)을 사용하여 이 알림을 수신하는 경우 일부 외부 이벤트가 PEP 기본 설정을 변경하지 않는 한 일관된 출력(PepPreference)을 제공해야 합니다.

PEP_NOTIFY_PPM_PARK_SELECTION 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = DISPATCH_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_CST_STATES

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_CST_STATES 값입니다.

데이터

PEP_PPM_CST_STATES 구조체에 대한 포인터입니다.

주의

프로세서에서 지원하는 ACPI 정의 C 상태 집합을 나타내기 위해 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 이 알림을 PEP에 보내 프로세서에서 지원하는 ACPI 정의 C 상태 집합을 나타냅니다. 이 알림은 PEP가 프로세서에 대한 PEP_NOTIFY_PPM_QUERY_IDLE_STATES_V2 알림을 처음 수신하기 전에 한 번, 프로세서가 _CST 개체가 변경되었음을 나타내는 Notify(0x81)를 받을 때마다 다시 한 번 전송됩니다.

PEP_NOTIFY_PPM_CST_STATES 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES 값입니다.

데이터

PEP_PPM_QUERY_PLATFORM_STATES 구조체에 대한 포인터입니다.

주의

프로세서 초기화 시 전송되어 PEP에서 지원하는 플랫폼 유휴 상태 수를 쿼리합니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 PEP에 이 알림을 보내 지원하는 플랫폼 유휴 상태 수를 쿼리합니다. 이 알림은 부팅 시 한 번 전송됩니다. 0이 아닌 수의 플랫폼 상태를 반환한 후 PEP는 프로세서 유휴 전환 중에 플랫폼 유휴 상태를 선택할 수 있습니다.

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_LP_SETTINGS

알림

PEP_NOTIFY_PPM_QUERY_LP_SETTINGS 값입니다.

데이터

PEP_PPM_QUERY_LP_SETTINGS 구조체에 대한 포인터입니다.

주의

PEP_NOTIFY_PPM_QUERY_LP_SETTINGS 알림을 보내기 위해 PoFx는 PEP의 AcceptProcessorNotification 콜백 루틴을 호출합니다. 이 호출에서 Notification 매개 변수 값은 PEP_NOTIFY_PPM_QUERY_LP_SETTINGS 데이터 매개 변수는 PEP_PPM_QUERY_LP_SETTINGS 구조를 가리킵니다.

PEP_NOTIFY_PPM_QUERY_LP_SETTINGS 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_IDLE_STATES_V2

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

값 PEP_NOTIFY_PPM_QUERY_IDLE_STATES_V2.

데이터

PEP_PPM_QUERY_IDLE_STATES_V2 구조체에 대한 포인터입니다.

주의

프로세서 초기화 시 PEP에서 지원하는 유휴 상태 목록을 쿼리하는 데 사용됩니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 PEP에 이 알림을 보내 지원되는 유휴 상태 목록을 쿼리합니다.

Count 멤버는 유휴 상태 배열의 크기를 지정합니다. 프로세서 드라이버는 이 알림을 보내기 전에 PEP_NOTIFY_PPM_QUERY_CAPABILITIES 있는 유휴 상태 수를 쿼리합니다.

PEP는 IdleStates 배열에 지원하는 각 유휴 상태에 대한 정보를 채웁니다. 유휴 상태는 전력 소비 감소/전환 비용 증가 순서대로 나열되어야 합니다. PEP는 각 프로세서에 대해 동일한 유휴 상태 목록을 보고할 필요가 없습니다.

PEP_NOTIFY_PPM_QUERY_IDLE_STATES_V2 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

값 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE.

데이터

PEP_PPM_QUERY_PLATFORM_STATE 구조체에 대한 포인터입니다.

주의

단일 플랫폼 유휴 상태의 속성을 쿼리하기 위해 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 이 알림을 보내 단일 플랫폼 유휴 상태의 속성을 쿼리합니다.

PEP_PPM_QUERY_PLATFORM_STATE 구조체의 StateIndex 매개 변수는 쿼리할 플랫폼 유휴 상태의 인덱스를 지정합니다. 프로세서 드라이버는 이 알림을 보내기 전에 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES 지원되는 플랫폼 유휴 상태 수를 쿼리합니다. 그런 다음 프로세서 드라이버는 각 플랫폼 유휴 상태에 대해 하나의 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE 알림을 보냅니다. 프로세서 드라이버는 모든 프로세서가 PEP에 등록될 때까지 이 알림을 보내기 위해 대기합니다.

PEP는 상태 구조를 플랫폼 유휴 상태에 대한 정보로 채웁니다. 플랫폼 유휴 상태는 전력 소비 감소/전환 비용 증가 순서대로 나열되어야 합니다.

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_TEST_IDLE_STATE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_TEST_IDLE_STATE 값입니다.

데이터

PEP_PPM_TEST_IDLE_STATE 구조체에 대한 포인터입니다.

주의

지정된 프로세서 및 플랫폼 유휴 상태를 지정된 프로세서에 입력할 수 있는지 여부를 테스트하는 데 사용됩니다.

PoFx(Windows 전원 관리 프레임워크)는 지정된 프로세서 및 플랫폼 유휴 상태를 지정된 프로세서에 입력할 수 있는지 여부를 테스트하기 위해 이 알림을 보냅니다. 유휴 상태를 입력할 수 있는 경우 PEP는 PEP_IDLE_VETO_NONE 거부 코드를 채우고 유휴 전환을 완료합니다. 어떤 이유로 유휴 전환을 완료할 수 없는 경우 PEP는 0이 아닌 거부 코드를 채웁니다.

0xffffffff 0x80000000 범위의 중요한 거부 코드는 OS 사용을 위해 예약되어 있으며 사용할 수 없습니다.

이 알림이 전송되면 OS는 플랫폼 유휴 전환에 대한 디바이스 및 프로세서 제약 조건을 포함하여 선택한 프로세서 또는 플랫폼 유휴 상태와 연결된 모든 제약 조건이 충족되었는지 이미 확인했습니다.

이 알림은 OS가 항상 입력할 수 있어야 하는 인덱스 0이 있는 프로세서 유휴 상태를 제외하고 프로세서 또는 플랫폼 유휴 상태를 입력하기 전에 전송됩니다. PEP_IDLE_VETO_NONE 이 알림을 완료해도 OS가 표시된 유휴 상태로 전환된다는 보장은 없습니다. 이 알림은 인터럽트 사용 안 함으로 전송됩니다. 이 알림은 항상 대상 프로세서에서 실행됩니다.

PEP_NOTIFY_PPM_TEST_IDLE_STATE 알림의 경우 인터럽트를 사용하지 않도록 설정한 상태에서 AcceptProcessorNotification 루틴이 호출됩니다.

PEP_NOTIFY_PPM_IDLE_PRE_EXECUTE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_IDLE_PRE_EXECUTE 값입니다.

데이터

PEP_PPM_IDLE_EXECUTE 또는 PEP_PPM_IDLE_EXECUTE_V2 구조체에 대한 포인터입니다.

주의

지정된 유휴 상태로 전환할 시스템을 준비하기 위해 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 지정된 유휴 상태로 전환할 시스템을 준비하기 위해 이 알림을 PEP에 보냅니다. 이 알림이 성공적으로 완료되면 OS는 연결된 C 상태를 입력하여 프로세서를 유휴 상태로 전환합니다. PEP가 프로세서(및 플랫폼) 유휴 상태를 입력하도록 시스템을 준비할 수 없는 경우 오류 상태 다시 반환해야 합니다.

하이퍼바이저를 사용하도록 설정하면 PEP는 플랫폼 유휴 상태에 진입할 때만 이 알림을 수신하고 ProcessorState 필드는 PEP_PROCESSOR_IDLE_STATE_UNKNOWN.

조정된 유휴 상태 인터페이스를 사용하는 경우 OS는 유휴 전환에 의해 입력될 조정된 유휴 상태 목록과 함께 CoordinatedStateCount 및 CoordinatedState 필드를 포함하는 PEP_PPM_IDLE_EXECUTE_V2 구조를 사용합니다. PlatformState 필드는 입력 중인 가장 깊은 플랫폼 조정 유휴 상태(있는 경우)를 지정합니다.

조정된 유휴 상태 인터페이스를 사용하지 않는 경우 OS는 PEP_PPM_IDLE_EXECUTE 구조를 사용합니다.

PEP_NOTIFY_PPM_IDLE_PRE_EXECUTE 알림의 경우 인터럽트를 사용하지 않도록 설정한 상태에서 AcceptProcessorNotification 루틴이 호출되고 항상 대상 프로세서에서 실행됩니다.

PEP_NOTIFY_PPM_UPDATE_PLATFORM_STATE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_UPDATE_PLATFORM_STATE 값입니다.

데이터

PEP_PPM_QUERY_PLATFORM_STATE 구조체에 대한 포인터입니다.

주의

프로세서가 플랫폼 유휴 상태의 특성을 업데이트하기 위해 notify(0x81)를 수신했음을 PEP에 알립니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서가 알림(0x81)을 수신하여 플랫폼 유휴 상태의 특성을 업데이트하면 이 알림을 보냅니다. 이 알림은 각 플랫폼 유휴 상태에 대해 한 번 전송됩니다. PEP가 알림을 수락하지 않는 경우(즉, AcceptProcessorNotification 콜백에서 FALSE를 반환함) 가장 최근에 허용된 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE 또는 PEP_NOTIFY_PPM_UPDATE_PLATFORM_STATE 알림에서 플랫폼 유휴 상태의 이전 정의가 유지됩니다.

이 알림은 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE 알림과 동일한 데이터 버퍼를 사용합니다.

PEP_NOTIFY_PPM_UPDATE_PLATFORM_STATE 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE_RESIDENCIES

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE_RESIDENCIES 값입니다.

데이터

PEP_PPM_PLATFORM_STATE_RESIDENCIES 구조체에 대한 포인터입니다.

주의

부팅 이후 각 플랫폼 유휴 상태에서 소요된 실제 누적 시간을 캡처해야 한다고 PEP에 알릴 수 있습니다.

PoFx(Windows 전원 관리 프레임워크)는 부팅 이후 각 플랫폼 유휴 상태에 소요된 실제 누적 시간을 캡처하기 위해 이 알림을 PEP에 보냅니다. 따라서 이 쿼리는 기본 하드웨어가 OS에서 요청한 것과 다른 플랫폼 유휴 상태로 전환하도록 자율적으로 결정할 수 있는 플랫폼에만 적용됩니다. 반환되는 값은 진단 목적으로 사용되며 플랫폼 유휴 상태 상주에 대한 OS의 보기가 플랫폼이 실제로 달성한 것과 크게 다른 경우를 식별합니다.

Count는 상태 배열의 요소 수를 지정합니다. 여기서 요소 인덱스는 플랫폼 유휴 상태 인덱스에 해당합니다. PEP는 각 요소를 일치하는 상태의 실제 상주 및 전환 횟수로 채웁니다.

참고 이 쿼리에서 캡처한 누적 값은 PEP(또는 프로세서 드라이버)가 실제로 플랫폼 유휴 상태 전환을 실행한 기간과만 일치해야 합니다. 이렇게 하면 OS 계산 상주와 실제 상주 간의 비교가 의미가 있습니다.

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE_RESIDENCIES 알림의 경우 모든 IRQL에서 AcceptProcessorNotification 루틴을 호출할 수 있습니다.

PEP_NOTIFY_PPM_QUERY_VETO_REASONS

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_VETO_REASONS 값입니다.

데이터

PEP_PPM_QUERY_VETO_REASONS 구조체에 대한 포인터입니다.

주의

PEP가 ProcessorIdleVeto 및 PlatformIdleVeto 콜백에서 사용하는 고유한 거부권 이유 수를 쿼리하는 데 사용됩니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 이 알림을 보내 PEP가 ProcessorIdleVeto 및 PlatformIdleVeto 콜백에서 사용하는 고유한 거부권 이유 수를 쿼리합니다. 이 알림은 선택 사항이며 PEP에서 무시될 수 있습니다.

허용되는 경우 PEP는 1과 VetoReasonCount 사이의 거부권 사유를 사용하여 프로세서, 플랫폼 또는 조정된 유휴 상태를 거부할 수 있습니다. PEP는 VetoReasonCount보다 큰 거부권을 사용할 수 없습니다. OS는 거부권 추적 구조를 미리 할당하고 PEP_NOTIFY_PPM_ENUMERATE_BOOT_VETOES 함께 사용하면 모든 프로세서, 플랫폼 및 조정된 상태 거부 콜백이 성공하도록 보장합니다.

PEP에서 이 알림을 수락하지 않으면 PEP는 법적 거부권을 가진 ProcessorIdleVeto 및 PlatformIdleVeto 콜백을 사용할 수 있습니다. OS는 할당 오류 또는 기타 문제로 인해 콜백이 실패하지 않도록 보장하지 않습니다.

PEP_NOTIFY_PPM_QUERY_VETO_REASONS 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_VETO_REASON

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_VETO_REASON 값입니다.

데이터

PEP_PPM_QUERY_VETO_REASON 구조체에 대한 포인터입니다.

주의

특정 거부권 이유에 대한 정보를 쿼리하기 위해 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 이 알림을 보내 특정 거부권 이유에 대한 정보를 쿼리합니다. 이 알림은 각 거부 사유에 대해 두 번, 이름에 필요한 할당 크기를 검색하기 위해 NULLName 버퍼와 함께 한 번, 이름 내용을 채우기 위해 NULLName이 아닌 버퍼와 함께 한 번 전송됩니다. 이름은 이 거부 이유가 나타내는 조건을 나타내는 사람이 읽을 수 있는 문자열이어야 합니다. WPA 및 커널 디버거와 같은 디버깅 도구는 유휴 상태가 입력되지 않은 이유를 진단할 때 이름을 표시합니다.

PEP_NOTIFY_PPM_QUERY_VETO_REASON 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_ENUMERATE_BOOT_VETOES

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_ENUMERATE_BOOT_VETOES 값입니다.

데이터

NULL 포인터 값입니다.

주의

OS가 ProcessorIdleVeto 또는 PlatformIdleVeto 호출을 수락할 준비가 되었다는 것을 PEP에 알릴 수 있습니다.

Windows PoFx(전원 관리 프레임워크)는 프로세서 초기화 후와 첫 번째 유휴 항목 전에 이 알림을 보내 OS가 ProcessorIdleVeto 또는 PlatformIdleVeto에 대한 호출을 수락할 준비가 되었음을 나타냅니다. PEP는 이 알림의 컨텍스트에서 모든 부팅 시간 거부권을 열거할 수 있으며 OS는 프로세서, 플랫폼 또는 조정된 유휴 상태를 선택하는 첫 번째 시도 전에 적용되도록 보장합니다. 이 알림에는 연결된 데이터 매개 변수가 없습니다.

PEP_NOTIFY_PPM_ENUMERATE_BOOT_VETOES 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_PARK_MASK

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_PARK_MASK 값입니다.

데이터

PEP_PPM_PARK_MASK 구조체에 대한 포인터입니다.

주의

PEP에 현재 코어 주차 마스크를 알릴 수 있습니다.

Windows PoFx(전원 관리 프레임워크)는 런타임에 이 알림을 보내 PEP에 현재 코어 주차 마스크를 알릴 수 있습니다.

PEP_NOTIFY_PPM_PARK_MASK 알림의 경우 AcceptProcessorNotification 루틴은 IRQL = DISPATCH_LEVEL 호출되며 프로세서에서 실행하는 동안 전송될 수 있습니다.

PEP_NOTIFY_PPM_PARK_SELECTION_V2

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

값 PEP_NOTIFY_PPM_PARK_SELECTION_V2.

데이터

PEP_PPM_PARK_SELECTION_V2 구조체에 대한 포인터입니다.

주의

OS가 중단을 주차하거나 조종할 기본 코어 집합을 선택하도록 PEP에 알릴 수 있습니다. 이 알림이 수락되지 않으면 OS는 PEP_NOTIFY_PPM_PARK_SELECTION 알림 전송으로 대체됩니다.

성능 검사 알고리즘을 실행할 때 OS는 PEP_NOTIFY_PPM_PARK_SELECTION_V2 알림을 여러 번 보낼 수 있습니다. 각 파크 도메인 내의 각 핵심 효율성 클래스에 대해 0회 이상, 인터럽트 조향에 대해 0회 이상입니다. PEP가 성능 검사 대해 OS에 일관된 응답을 제공하도록 지원하기 위해 OS는 알림을 표시하는 성능 검사 평가의 인터럽트 시간 기반 타임스탬프를 제공합니다. 하나의 성능 검사 평가로 인해 발생하는 모든 파크 선택 알림에는 동일한 타임스탬프가 있습니다. 나머지 필드(Count, AdditionalUnparkedProcessors, EvaluationType 및 Processors)는 동일한 성능 검사 평가 중에 전송되는 알림에 따라 다를 수 있으며 PEP는 동일하게 유지된다고 가정할 수 없습니다.

PEP_NOTIFY_PPM_PARK_SELECTION 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = DISPATCH_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_PERF_CHECK_COMPLETE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_PERF_CHECK_COMPLETE 값입니다.

데이터

PEP_PPM_PERF_CHECK_COMPLETE 구조체에 대한 포인터입니다.

주의

정기적인 성능 검사 평가가 완료되었음을 PEP에 알릴 수 있습니다.

Windows PoFx(전원 관리 프레임워크)는 런타임에 이 알림을 보내 PEP에 검사 평가당 주기적 평가가 완료되었음을 알립니다.

PEP_NOTIFY_PPM_PERF_CHECK_COMPLETE 알림의 경우 AcceptProcessorNotification 루틴은 IRQL = DISPATCH_LEVEL 호출되며 프로세서에서 실행하는 동안 전송될 수 있습니다.

PEP_NOTIFY_PPM_QUERY_COORDINATED_DEPENDENCY

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

값 PEP_NOTIFY_PPM_QUERY_COORDINATED_DEPENDENCY.

데이터

PEP_PPM_QUERY_COORDINATED_DEPENDENCY 구조체에 대한 포인터입니다.

주의

PEP로 전송되어 조정된 각 유휴 상태의 종속성을 쿼리합니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 이 알림을 보내 PEP에서 조정된 각 유휴 상태의 종속성을 쿼리합니다. OS는 종속성 배열에 대해 MaximumDependencySize 요소를 할당합니다. PEP는 DependencySizeUsed에 사용된 배열의 요소 수를 채워야 합니다.

표현되는 종속성이 프로세서에 있는 경우 PEP는 대상 프로세서의 POHANDLE로 TargetProcessor 필드를 채웁니다. 그런 다음 ExpectedState 필드는 대상 프로세서의 프로세서 유휴 상태 인덱스를 나타냅니다.

표현되는 종속성이 다른 조정된 유휴 상태에 있는 경우 PEP는 TargetProcessor에 대해 NULL을 채웁니다. 그런 다음 ExpectedState 필드는 조정된 유휴 상태의 인덱스를 나타냅니다.

각 종속성에는 OS가 종속성을 충족하는 데 사용할 수 있는 옵션 메뉴가 나열됩니다. 유휴 상태로 전환할 때 OS는 가장 높은 인덱스에서 가장 낮은 인덱스까지 각각의 조건을 확인하여 종속성을 충족하려고 시도합니다. 종속성에 대한 조건이 충족되면 OS는 종속성이 충족된 것으로 간주합니다. 조건을 충족할 수 없는 경우 종속성이 충족되지 않고 조정된 유휴 상태가 입력되지 않을 수 있습니다.

PEP_NOTIFY_PPM_QUERY_COORDINATED_DEPENDENCY 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_COORDINATED_STATE_NAME

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_COORDINATED_STATE_NAME 값입니다.

데이터

PEP_PPM_QUERY_STATE_NAME 구조체에 대한 포인터입니다.

주의

특정 조정 또는 플랫폼 유휴 상태에 대한 정보를 쿼리하기 위해 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 이 알림을 보내 PEP에 특정 조정 또는 플랫폼 유휴 상태에 대한 정보를 쿼리합니다. 이 알림은 각 상태에 대해 두 번, 이름에 필요한 할당 크기를 검색하기 위해 NULL 이름 버퍼와 함께 한 번, NULL이 아닌 이름 버퍼가 있는 한 번 전송되어 Name의 내용을 채웁니다. 이름은 조정된 유휴 상태의 이름을 나타내는 사람이 읽을 수 있는 문자열이어야 합니다. 조정된 유휴 상태에는 여러 클러스터 시스템의 동일한 상태 이름이 동일할 수 있는 다중 클러스터 시스템을 제외하고 고유한 이름이 있어야 합니다. WPA 및 커널 디버거와 같은 디버깅 도구에는 이 조정/플랫폼 유휴 상태를 참조하는 이름이 진단 표시됩니다.

PEP_NOTIFY_PPM_QUERY_COORDINATED_STATE_NAME 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_COORDINATED_STATES

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

값 PEP_NOTIFY_PPM_QUERY_COORDINATED_STATES.

데이터

PEP_PPM_QUERY_COORDINATED_STATES 구조체에 대한 포인터입니다.

주의

프로세서 초기화 시 모든 조정된 유휴 상태의 속성을 쿼리하는 데 사용됩니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 PEP에 이 알림을 보내 조정된 모든 유휴 상태의 속성을 쿼리합니다. 이 알림은 PEP가 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE 알림을 보내기 직전에 전송됩니다. 허용되는 경우 PEP는 조정된 유휴 상태 인터페이스를 사용하며 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE 알림을 받지 않습니다. 수락되지 않은 경우 PEP는 플랫폼 유휴 상태 인터페이스를 사용하고 OS는 PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE 알림을 사용하여 조정된 유휴 상태를 쿼리하는 것으로 대체됩니다.

OS는 모든 프로세서가 PEP에 등록될 때까지 이 알림을 보내기 위해 대기합니다.

PEP는 상태 구조를 조정된 유휴 상태에 대한 정보로 채웁니다.

조정된 유휴 상태의 순서는 다음 규칙을 따라야 합니다.

가장 가벼운(대부분의 전력 소비/최소 전환 비용)부터 가장 깊은(최소 전력 소비/대부분의 전환 비용)에 이르기까지 동일한 기능 단위에 대해 서로 다른 전원 상태를 나타내는 두 개의 조정된 상태를 나열해야 합니다. 조정된 유휴 상태는 인덱스가 낮은 다른 조정된 유휴 상태에만 의존할 수 있습니다. 두 개의 연결되지 않은 조정 유휴 상태(즉, 비연속 프로세서 집합에 의존하는 두 개의 조정된 유휴 상태) 사이에는 순서가 필요하지 않습니다.

PEP_NOTIFY_PPM_QUERY_COORDINATED_STATES 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_QUERY_PROCESSOR_STATE_NAME

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_PROCESSOR_STATE_NAME 값입니다.

데이터

PEP_PPM_QUERY_STATE_NAME 구조체에 대한 포인터입니다.

주의

특정 프로세서 유휴 상태에 대한 정보를 쿼리하기 위해 PEP로 전송됩니다.

PoFx(Windows 전원 관리 프레임워크)는 프로세서 초기화 시 이 알림을 보내 PEP에서 특정 프로세서 유휴 상태에 대한 정보를 쿼리합니다. 이 알림은 각 상태에 대해 두 번, 이름에 필요한 할당 크기를 검색하기 위해 NULL 이름 버퍼와 함께 한 번, NULL이 아닌 이름 버퍼가 있는 한 번 전송되어 Name의 내용을 채웁니다. 이름은 조정된 유휴 상태의 이름을 나타내는 사람이 읽을 수 있는 문자열이어야 합니다. 조정된 유휴 상태에는 여러 클러스터 시스템의 동일한 상태 이름이 동일할 수 있는 다중 클러스터 시스템을 제외하고 고유한 이름이 있어야 합니다. WPA 및 커널 디버거와 같은 디버깅 도구에는 이 조정/플랫폼 유휴 상태를 참조하는 이름이 진단 표시됩니다.

PEP_NOTIFY_PPM_QUERY_PROCESSOR_STATE_NAME 알림의 경우 AcceptProcessorNotification 루틴은 항상 IRQL = PASSIVE_LEVEL 호출됩니다.

PEP_NOTIFY_PPM_ENTER_SYSTEM_STATE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_ENTER_SYSTEM_STATE 값입니다.

데이터

PEP_PPM_ENTER_SYSTEM_STATE 구조체에 대한 포인터입니다.

주의

PEP_NOTIFY_PPM_ENTER_SYSTEM_STATE 시스템이 시스템 전원 상태를 입력하려고 했음을 PEP에 알리는 선택적 알림입니다. 이 알림은 시스템이 프로세서를 시스템 전원 상태로 전환하는 모든 수동 수준 작업을 완료한 후 모든 프로세서에 동시에 전송됩니다.

이 알림은 디스패치 시 모든 프로세서와 함께 DISPATCH_LEVEL 전송됩니다. 이 알림은 항상 대상 프로세서에서 실행됩니다.

참고 PEP는 이 알림에서 작업을 큐에 대기해서는 안 합니다. 프로세서는 이 알림이 전송된 후 작업 항목, DPC 등을 처리하지 않습니다.

DISPATCH_LEVEL

PEP_NOTIFY_PPM_PERF_SET_STATE

다음은 AcceptProcessorNotification에 대한 매개 변수에 대해 설명합니다.

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

값 PEP_NOTIFY_PPM_PERF_SET_STATE.

데이터

PEP_PPM_PERF_SET_STATE 구조체에 대한 포인터입니다.

주의

런타임에 프로세서의 현재 작동 성능 상태를 설정하는 데 사용됩니다. PEP에 성능 집합 요청 없이 성능을 향상/줄일 수 있는 자율 하드웨어가 있는 경우 최소 성능 상태 및/또는 최대 성능 상태에 따라 자율 하드웨어의 요청을 제한하고 원하는 성능 상태를 대상으로 해야 합니다. 그렇지 않으면 정확히 원하는 성능 상태에서 실행되어야 합니다.

이 알림은 DISPATCH_LEVEL 전송됩니다. 스케줄러 지시 성능 상태가 사용 중인 경우 PEP는 이 알림을 처리할 때 섹션 3.3.6의 제한을 준수해야 합니다. 모든 프로세서에서 실행하는 동안 전송될 수 있습니다.

PEP_NOTIFY_PPM_QUERY_DISCRETE_PERF_STATES

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

값 PEP_NOTIFY_PPM_QUERY_DISCRETE_PERF_STATES.

데이터

PEP_PPM_QUERY_DISCRETE_PERF_STATES 구조체에 대한 포인터입니다. 프로세서 초기화 시 PEP_NOTIFY_PPM_QUERY_CAPABILITIES 알림이 불연속 성능 상태에 대한 지원을 나타내는 경우 PEP에서 지원하는 불연속 성능 상태 목록을 쿼리하는 데 사용됩니다.

성능 상태 목록은 각 성능 상태 매핑이 고유한 성능 값으로 매핑되어 가장 빠른 것에서 가장 느린 것으로 정렬되어야 합니다. 성능 상태 목록에는 PEP_NOTIFY_PPM_QUERY_PERF_CAPABILITIES 알림에 나열된 각 성능 값과 일치하는 항목도 포함되어야 합니다. 이 알림은 PASSIVE_LEVEL 전송됩니다. 모든 프로세서에서 실행하는 동안 전송될 수 있습니다.

PEP_NOTIFY_PPM_QUERY_DOMAIN_INFO

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_QUERY_DOMAIN_INFO 값입니다.

데이터

PEP_PPM_QUERY_DOMAIN_INFO 구조체에 대한 포인터입니다.

주의

성능 도메인에 대한 정보를 쿼리하는 선택적 알림입니다. 이 알림은 PASSIVE_LEVEL 전송됩니다. 모든 프로세서에서 실행하는 동안 전송될 수 있습니다.

PEP_NOTIFY_PPM_RESUME_FROM_SYSTEM_STATE

Handle

대상 프로세서에 대한 PEP의 디바이스 핸들을 포함하는 PEPHANDLE 구조체입니다. 알림이 특정 프로세서를 대상으로 하지 않으면 NULL이 됩니다.

알림

PEP_NOTIFY_PPM_RESUME_FROM_SYSTEM_STATE 값입니다.

데이터

PEP_PPM_RESUME_FROM_SYSTEM_STATE 구조체에 대한 포인터입니다.

주의

시스템이 시스템 전원 상태에서 방금 다시 시작되었음을 PEP에 알리는 선택적 알림입니다. 이 알림은 수동 수준 작업을 다시 시작하기 위해 프로세서가 릴리스되기 직전에 모든 프로세서에 동시에 전송됩니다. 이 알림은 디스패치 시 모든 프로세서와 함께 DISPATCH_LEVEL 전송됩니다. 이 알림은 항상 대상 프로세서에서 실행됩니다.