다음을 통해 공유


디바이스 전원 관리 참조

드라이버는 디바이스 하드웨어를 여러 논리 구성 요소로 분할하여 세분화된 전원 관리를 가능하게 할 수 있습니다. 구성 요소에는 동일한 디바이스에 있는 다른 구성 요소의 전원 상태와 독립적으로 관리할 수 있는 전원 상태 집합이 있습니다. F0 상태에서 구성 요소가 완전히 켜져 있습니다. 구성 요소는 추가적인 저전력 상태 F1, F2 등을 지원할 수 있습니다.

디바이스의 전원 정책 소유자는 일반적으로 디바이스의 함수 드라이버입니다. 구성 요소 수준 전원 관리를 사용하도록 설정하기 위해 이 드라이버는 PoFx(전원 관리 프레임워크)에 디바이스를 등록합니다. 디바이스를 등록하면 드라이버는 구성 요소가 현재 사용 중일 때와 구성 요소가 유휴 상태일 때 PoFx에 알리는 책임을 집니다. PoFx는 구성 요소 활동, 대기 시간 허용 시간, 예상 유휴 기간 및 절전 모드 해제 요구 사항에 대한 정보를 기반으로 디바이스에 대한 지능형 유휴 상태를 선택합니다. PoFx는 구성 요소 수준에서 전원 사용량을 제어하여 시스템 응답성을 유지하면서 전력 요구 사항을 줄일 수 있습니다. 자세한 내용은 구성 요소 수준 전원 관리를 참조하세요.

디바이스 전원 관리 루틴

이러한 루틴은 디바이스 전원 관리를 사용하도록 설정하기 위해 PoFx(전원 관리 프레임워크)에 의해 구현됩니다. 이러한 루틴은 디바이스에 대한 PPO(전원 정책 소유자)인 드라이버에서 호출됩니다. 일반적으로 디바이스의 함수 드라이버는 이 디바이스의 PPO입니다.

항목 설명
PoFxActivateComponent PoFxActivateComponent 루틴은 지정된 구성 요소의 활성화 참조 수를 증분합니다.
PoFxCompleteDevicePowerNotRequired PoFxCompleteDevicePowerNotRequired 루틴은 호출 드라이버가 드라이버의 DevicePowerNotRequiredCallback 콜백 루틴에 대한 호출에 대한 응답을 완료했음을 PoFx(전원 관리 프레임워크)에 알릴 수 있습니다.
PoFxCompleteIdleCondition PoFxCompleteIdleCondition 루틴은 지정된 구성 요소가 유휴 상태의 보류 중인 변경을 완료했음을 PoFx(전원 관리 프레임워크)에 알려줍니다.
PoFxCompleteIdleState PoFxCompleteIdleState 루틴은 지정된 구성 요소가 Fx 상태에 대한 보류 중인 변경을 완료했음을 PoFx(전원 관리 프레임워크)에 알릴 수 있습니다.
PoFxIdleComponent PoFxIdleComponent 루틴은 지정된 구성 요소의 활성화 참조 수를 감소합니다.
PoFxIssueComponentPerfStateChange PoFxIssueComponentPerfStateChange 루틴은 특정 성능 상태에 디바이스 구성 요소를 배치하는 요청을 제출합니다.
PoFxIssueComponentPerfStateChangeMultiple PoFxIssueComponentPerfStateChangeMultiple 루틴은 디바이스 구성 요소에 대해 여러 성능 상태 집합의 성능 상태를 동시에 변경하는 요청을 제출합니다.
PoFxNotifySurprisePowerOn PoFxNotifySurprisePowerOn 루틴은 다른 디바이스에 전원을 공급하는 부작용으로 디바이스가 켜져 있음을 PoFx(전원 관리 프레임워크)에 알릴 수 있습니다.
PoFxPowerControl PoFxPowerControl 루틴은 전원 제어 요청을 PoFx(전원 관리 프레임워크)로 보냅니다.
PoFxQueryCurrentComponentPerfState PoFxQueryCurrentComponentPerfState 루틴은 구성 요소의 성능 상태 집합에서 활성 성능 상태를 검색합니다.
PoFxRegisterComponentPerfStates PoFxRegisterComponentPerfStates 루틴은 PoFx(전원 관리 프레임워크)에 의한 성능 상태 관리를 위한 디바이스 구성 요소를 등록합니다.
PoFxRegisterDevice PoFxRegisterDevice 루틴은 디바이스를 PoFx(전원 관리 프레임워크)에 등록합니다.
PoFxReportDevicePoweredOn PoFxReportDevicePoweredOn 루틴은 디바이스가 요청된 D0(완전 켜기) 전원 상태로의 전환을 완료했음을 PoFx(전원 관리 프레임워크)에 알깁니다.
PoFxSetComponentLatency PoFxSetComponentLatency 루틴은 유휴 상태에서 지정된 구성 요소의 활성 상태로 전환할 때 허용할 수 있는 최대 대기 시간을 지정합니다.
PoFxSetComponentResidency PoFxSetComponentResidency 루틴은 구성 요소가 유휴 상태로 전환된 후 구성 요소가 다시 기본 유휴 상태일 가능성이 있는 기간의 예상 시간을 설정합니다.
PoFxSetComponentWake PoFxSetComponentWake 루틴은 구성 요소가 유휴 상태로 전환될 때마다 드라이버가 지정된 구성 요소를 절전 모드 해제할지 여부를 나타냅니다.
PoFxSetDeviceIdleTimeout PoFxSetDeviceIdleTimeout 루틴은 디바이스의 마지막 구성 요소가 유휴 상태로 전환될 때부터 PoFx(전원 관리 프레임워크)가 드라이버의 DevicePowerNotRequiredCallback 콜백 루틴을 호출할 때까지의 최소 시간 간격을 지정합니다.
PoFxStartDevicePowerManagement PoFxStartDevicePowerManagement 루틴은 PoFx(전원 관리 프레임워크)를 사용하여 디바이스 등록을 완료하고 디바이스 전원 관리를 시작합니다.
PoFxUnregisterDevice PoFxUnregisterDevice 루틴은 PoFx(전원 관리 프레임워크)에서 디바이스 등록을 제거합니다.

디바이스 전원 관리 콜백

이러한 콜백 루틴은 디바이스 전원 관리를 사용하도록 설정하기 위해 PoFx(전원 관리 프레임워크)에 필요합니다. 디바이스의 전원 정책 소유자인 드라이버는 이러한 콜백 루틴을 구현합니다. PoFx는 이러한 루틴을 호출하여 디바이스에서 구성 요소의 전원 상태를 쿼리하고 구성합니다.

항목 설명
ComponentActiveConditionCallback ComponentActiveConditionCallback 콜백 루틴은 지정된 구성 요소가 유휴 상태에서 활성 상태로의 전환을 완료했음을 드라이버에 알릴 수 있습니다.
ComponentIdleConditionCallback ComponentIdleConditionCallback 콜백 루틴은 지정된 구성 요소가 활성 조건에서 유휴 상태로의 전환을 완료했음을 드라이버에 알릴 수 있습니다.
ComponentIdleStateCallback ComponentIdleStateCallback 콜백 루틴은 지정된 구성 요소의 Fx 전원 상태에 대한 보류 중인 변경 사항을 드라이버에 알릴 수 있습니다.
ComponentPerfStateCallback ComponentPerfStateCallback 콜백 루틴은 구성 요소의 성능 상태를 변경하기 위한 요청이 완료되었다는 것을 드라이버에 알깁니다.
DevicePowerNotRequiredCallback DevicePowerNotRequiredCallback 콜백 루틴은 디바이스가 D0 전원 상태를 유지할 필요가 없음을 디바이스 드라이버에 알릴 수 있습니다.
DevicePowerRequiredCallback DevicePowerRequiredCallback 콜백 루틴은 디바이스가 D0 전원 상태에서 입력하고 다시 기본 디바이스 드라이버에 알릴 수 있습니다.
PowerControlCallback PowerControlCallback 콜백 루틴은 PoFx(전원 관리 프레임워크)에서 요청하는 전원 제어 작업을 수행합니다.

디바이스 전원 관리 구조

PoFx(전원 관리 프레임워크)는 디바이스 전원 관리를 지원하기 위해 이러한 구조를 정의합니다.

항목 설명
PO_FX_COMPONENT_V1 PO_FX_COMPONENT_V2 PO_FX_COMPONENT 구조는 디바이스에 있는 구성 요소의 전원 상태 특성을 설명합니다.
PO_FX_COMPONENT_IDLE_STATE PO_FX_COMPONENT_IDLE_STATE 구조체는 디바이스에 있는 구성 요소의 Fx 전원 상태 특성을 지정합니다.
PO_FX_COMPONENT_PERF_INFO PO_FX_COMPONENT_PERF_INFO 구조는 디바이스 내의 단일 구성 요소에 대한 모든 성능 상태 집합을 설명합니다.
PO_FX_COMPONENT_PERF_SET PO_FX_COMPONENT_PERF_SET 구조체는 디바이스 내의 단일 구성 요소에 대한 성능 상태 집합을 나타냅니다.
PO_FX_DEVICE_V1 PO_FX_DEVICE_V2PO_FX_DEVICE_V3 PO_FX_DEVICE 구조는 PoFx(전원 관리 프레임워크)에 대한 디바이스의 전원 특성을 설명합니다.
PO_FX_PERF_STATE PO_FX_PERF_STATE 구조체는 디바이스 내의 단일 구성 요소에 대한 성능 상태를 나타냅니다.
PO_FX_PERF_STATE_CHANGE PO_FX_PERF_STATE_CHANGE 구조에는 PoFxIssueComponentPerfStateChange 또는 PoFxIssueComponentPerfStateChangeMultiple 루틴을 호출하여 요청되는 성능 상태 변경에 대한 정보가 포함되어 있습니다.

디바이스 전원 관리 열거형

PoFx(전원 관리 프레임워크)는 디바이스 전원 관리를 지원하기 위해 이러한 열거형을 정의합니다.

항목 설명
PO_FX_PERF_STATE_TYPE PO_FX_PERF_STATE_TYPE 열거형에는 PO_FX_COMPONENT_PERF_SET 성능 상태 유형을 설명하는 값이 포함되어 있습니다.
PO_FX_PERF_STATE_UNIT PO_FX_PERF_STATE_UNIT 열거형에는 PO_FX_COMPONENT_PERF_SET 성능 상태에 의해 제어되는 단위의 형식을 설명하는 값이 포함되어 있습니다.

디바이스 전원 관리 상수

플래그 비트 PO_FX_FLAG_XXX

PO_FX_FLAG_XXX 상수는 구성 요소의 조건 변경 요청이 동기적으로 또는 비동기적으로 수행되는지 여부를 나타내는 플래그 비트입니다.

#define PO_FX_FLAG_BLOCKING   0x1
#define PO_FX_FLAG_ASYNC_ONLY 0x2

상수 PO_FX_FLAG_XXX

상수 설명
PO_FX_FLAG_BLOCKING 조건을 동기식으로 변경합니다. 이 플래그가 설정되면 구성 요소 하드웨어가 새 조건으로의 전환을 완료할 때까지 조건 변경을 요청하는 루틴이 호출 드라이버에 제어를 반환하지 않습니다. 이 플래그는 호출자가 IRQL < DISPATCH_LEVEL 실행되는 경우에만 사용할 수 있습니다.
PO_FX_FLAG_ASYNC_ONLY 조건을 완전히 비동기식으로 변경합니다. 이 플래그를 설정하면 조건 변경을 요청하는 루틴이 호출되는 스레드가 아닌 스레드에서 호출 드라이버의 콜백 루틴이 호출됩니다. 따라서 조건 변경을 요청하는 루틴은 콜백이 완료되는 것을 기다리지 않고 항상 비동기적으로 반환됩니다.

PO_FX_FLAG_XXX 설명

다음 루틴에 대한 Flags 매개 변수는 PO_FX_FLAG_XXX 상수로 설정할 수 있습니다.

PO_FX_FLAG_BLOCKINGPO_FX_FLAG_ASYNC_ONLY 플래그 비트는 함께 사용할 수 없습니다. 호출자는 Flags 매개 변수에서 하나 또는 다른 플래그 비트를 설정할 수 있지만 두 플래그 비트는 설정할 수 없습니다.

PO_FX_FLAG_XXX 요구 사항

버전 헤더
Windows 8부터 지원됩니다. Wdm.h

플래그 비트 PO_FX_FLAG_PERF_XXX

PO_FX_FLAG_PERF_XXX 상수는 PoFx(전원 관리 프레임워크)가 디바이스 구성 요소의 성능 상태를 관리하는 방법을 정의하는 플래그 비트입니다.

#define PO_FX_FLAG_PERF_PEP_OPTIONAL   0x1
#define PO_FX_FLAG_PERF_QUERY_ON_F0 0x2
#define PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 0x4
상수 설명
PO_FX_FLAG_PERF_PEP_OPTIONAL 1(0x1) 드라이버가 PEP(플랫폼 확장 플러그 인)의 도움 없이 성능 상태를 변경할 수 있거나 드라이버가 로깅 목적으로만 PoFx에 성능 상태를 등록하고 있음을 나타냅니다. 이 플래그를 설정하면 PEP가 구성 요소에 대한 성능 상태를 지원하지 않는 경우에도 PoFxRegisterComponentPerfStates 호출이 성공합니다.
PO_FX_FLAG_PERF_QUERY_ON_F0 2(0x2) 일부 디바이스의 경우 PEP는 구성 요소를 유휴 상태일 때 구성 요소에 대한 성능 상태 집합을 특정 성능 상태(명목 성능 상태라고 함)로 설정해야 할 수 있습니다. 드라이버가 구성 요소에 명목 성능 상태가 포함된 경우 이 플래그를 설정합니다. 이 경우 PoFx는 구성 요소가 F0으로 전환될 때 PEP를 쿼리하여 현재 성능 상태를 확인합니다.
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 4(0x4) 일부 디바이스의 경우 PEP는 구성 요소를 유휴 상태 간에 전환할 때 특정 성능 상태(명목 성능 상태라고 함 )로 구성 요소에 대한 성능 상태를 설정해야 할 수 있습니다. 이 구성 요소에 명목 성능 상태가 포함된 경우 드라이버가 이 플래그를 설정합니다. 이 경우 PoFx는 PEP를 쿼리하여 구성 요소가 유휴 상태 간에 전환될 때 현재 성능 상태를 확인합니다.

PO_FX_FLAG_PERF_XXX 설명

PoFxRegisterComponentPerfStates 루틴에 대한 Flags 매개 변수 PO_FX_FLAG_PERF_XXX 상수로 설정할 수 있습니다.

PO_FX_FLAG_PERF_XXX 요구 사항

요구 사항 버전
Windows 10부터 지원됩니다. Wdm.h