PoFxRegisterComponentPerfStates 함수(wdm.h)
PoFxRegisterComponentPerfStates 루틴은 PoFx(전원 관리 프레임워크)에서 성능 상태 관리를 위한 디바이스 구성 요소를 등록합니다.
구문
NTSTATUS PoFxRegisterComponentPerfStates(
[in] POHANDLE Handle,
[in] ULONG Component,
[in] ULONGLONG Flags,
[in] PPO_FX_COMPONENT_PERF_STATE_CALLBACK ComponentPerfStateCallback,
[in] PPO_FX_COMPONENT_PERF_INFO InputStateInfo,
[out] PPO_FX_COMPONENT_PERF_INFO *OutputStateInfo
);
매개 변수
[in] Handle
PoFx를 사용하여 디바이스 등록을 나타내는 핸들입니다. 디바이스 드라이버는 이전에 PoFxRegisterDevice 루틴에서 이 핸들을 받았습니다.
[in] Component
성능 상태를 관리할 구성 요소를 식별하는 인덱스입니다. 이 매개 변수는 디바이스 드라이버가 PoFx에 디바이스를 등록하는 데 사용한 PO_FX_DEVICE 구조의 Components 배열에 대한 인덱스입니다. Components 배열에 N 요소가 포함된 경우 구성 요소 인덱스의 범위는 0에서 N-1까지입니다.
[in] Flags
성능 상태 등록의 동작을 수정하는 플래그입니다. 이 멤버를 0으로 설정하거나 다음 플래그 PO_FX_FLAG_PERF_XXX 비트 중 하나로 설정합니다.
[in] ComponentPerfStateCallback
ComponentPerfStateCallback 루틴에 대한 포인터입니다. 이 루틴은 PoFx가 로깅을 완료하고 PoFxIssueComponentPerfStateChange 또는 PoFxIssueComponentPerfStateChangeMultiple에 대한 드라이버 호출에 의해 시작되는 성능 상태 전환에 대해 PEP에 알릴 때 호출됩니다. 이 콜백은 모든 구성 요소 및 모든 디바이스에 대해 동일할 수 있습니다. PoFx는 각 완료 호출에서 디바이스 핸들 및 구성 요소 인덱스를 제공합니다.
[in] InputStateInfo
드라이버가 성능 상태 정보를 제공하는 경우 이 매개 변수에는 PoFx에 성능 상태 정보를 제공하는 드라이버 할당 PO_FX_COMPONENT_PERF_INFO 구조체에 대한 포인터가 포함됩니다. 드라이버에 PEP의 성능 상태 정보가 필요한 경우 이 매개 변수를 NULL로 설정해야 합니다.
[out] OutputStateInfo
드라이버에 PEP의 성능 상태 정보가 필요한 경우 등록이 성공한 후 이 매개 변수에는 PEP에서 정의한 성능 상태 정보를 제공하는 PO_FX_COMPONENT_PERF_INFO 구조에 대한 포인터가 포함됩니다. 드라이버에서 성능 상태 정보를 제공하는 경우 이 매개 변수를 NULL로 설정해야 합니다.
이 매개 변수에 할당된 메모리는 PoFx에서 관리되며, 디바이스가 제거될 때 드라이버는 이 메모리를 해제하지 않아야 합니다. 이 메모리의 수명은 이러한 성능 상태 집합을 포함하는 PoFx 구성 요소의 수명을 초과하도록 보장됩니다.
반환 값
PoFx가 디바이스의 성능 상태 등록을 수락하면 PoFxRegisterComponentPerfStates는 STATUS_SUCCESS 반환합니다. 필요한 정보가 제공되지 않거나 올바르지 않으면 STATUS_SUCCESS 이외의 반환 코드로 등록이 실패합니다. 가능한 오류 반환 값에는 다음 상태 코드가 포함됩니다.
반환 코드 | 설명 |
---|---|
|
Flags 매개 변수에는 PO_FX_FLAG_PERF_PEP_OPTIONAL 플래그가 포함되지 않으며 PEP는 이 디바이스에 대한 성능 상태 관리를 제공할 수 없습니다. |
|
InputStateInfo와 OutputStateInfo는 모두 NULL이거나 이러한 매개 변수 둘 다 NULL이 아니거나 inputStateInfo 매개 변수에 할당된 PO_FX_COMPONENT_PERF_INFO 구조체에 성능 상태 집합이 없습니다. |
설명
PoFx는 디바이스의 구조를 메모리에 심층 복사합니다.
드라이버 또는 PEP(플랫폼 확장 플러그 인)는 각 구성 요소에서 지원하는 성능 상태에 대한 정보를 제공할 수 있습니다.
- 드라이버가 성능 상태 정보를 제공하는 경우 드라이버는 InputStateInfo 매개 변수를 성능 상태 정보를 포함하는 PO_FX_COMPONENT_PERF_INFO 구조체에 대한 포인터로 설정해야 합니다. 그렇지 않으면 드라이버는 이 매개 변수를 NULL로 설정해야 합니다.
- PEP가 성능 상태 정보를 제공하는 경우 드라이버는 OutputStateInfo 매개 변수를 성능 상태 정보를 수신하는 PO_FX_COMPONENT_PERF_INFO 구조체에 대한 유효한 포인터로 설정해야 합니다. 그렇지 않으면 드라이버는 이 매개 변수를 NULL로 설정해야 합니다.
드라이버가 로깅 목적으로만 성능 상태 지원을 등록하거나 성능 상태 관리에 대한 PEP 지원 여부에 관계없이 드라이버가 올바르게 작동할 수 있는 경우 드라이버는 Flags 매개 변수에서 PO_FX_FLAG_PERF_PEP_OPTIONAL 플래그를 설정해야 합니다. 플래그가 설정되면 PEP가 성능 상태에 대한 지원을 제공하지 않더라도 등록 호출이 성공합니다.
드라이버에서 성능 상태 정보를 제공하기 위해 PEP가 필요한 경우 드라이버는 Flags 매개 변수에서 PO_FX_FLAG_PERF_PEP_OPTIONAL 플래그를 설정할 수 없습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 사용하여 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h |
라이브러리 | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= APC_LEVEL |