다음을 통해 공유


디바이스 전원 관리 참조

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

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

디바이스 전원 관리 루틴

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

Topic Description
PoFxActivateComponent The PoFxActivateComponent routine increments the activation reference count on the specified component.
PoFxCompleteDevicePowerNotRequired The PoFxCompleteDevicePowerNotRequired routine notifies the power management framework (PoFx) that the calling driver has completed its response to a call to the driver's DevicePowerNotRequiredCallback callback routine.
PoFxCompleteIdleCondition The PoFxCompleteIdleCondition routine informs the power management framework (PoFx) that the specified component has completed a pending change to the idle condition.
PoFxCompleteIdleState PoFxCompleteIdleState 루틴은 지정된 구성 요소가 Fx 상태에 대한 보류 중인 변경을 완료했음을 PoFx(전원 관리 프레임워크)에 알릴 수 있습니다.
PoFxIdleComponent The PoFxIdleComponent routine decrements the activation reference count on the specified component.
PoFxIssueComponentPerfStateChange The PoFxIssueComponentPerfStateChange routine submits a request to place a device component in a particular performance state.
PoFxIssueComponentPerfStateChangeMultiple The PoFxIssueComponentPerfStateChangeMultiple routine submits a request to change the performance states in multiple performance state sets simultaneously for a device component.
PoFxNotifySurprisePowerOn The PoFxNotifySurprisePowerOn routine notifies the power management framework (PoFx) that a device was turned on as a side effect of supplying power to some other device.
PoFxPowerControl The PoFxPowerControl routine sends a power control request to the power management framework (PoFx).
PoFxQueryCurrentComponentPerfState The PoFxQueryCurrentComponentPerfState routine retrieves the active performance state in a component's performance state set.
PoFxRegisterComponentPerfStates The PoFxRegisterComponentPerfStates routine registers a device component for performance state management by the power management framework (PoFx).
PoFxRegisterDevice The PoFxRegisterDevice routine registers a device with the power management framework (PoFx).
PoFxReportDevicePoweredOn The PoFxReportDevicePoweredOn routine notifies the power management framework (PoFx) that the device completed the requested transition to the D0 (fully on) power state.
PoFxSetComponentLatency The PoFxSetComponentLatency routine specifies the maximum latency that can be tolerated in the transition from the idle condition to the active condition in the specified component.
PoFxSetComponentResidency The PoFxSetComponentResidency routine sets the estimated time for how long a component is likely to remain idle after the component enters the idle condition.
PoFxSetComponentWake The PoFxSetComponentWake routine indicates whether the driver arms the specified component to wake whenever the component enters the idle condition.
PoFxSetDeviceIdleTimeout The PoFxSetDeviceIdleTimeout routine specifies the minimum time interval from when the last component of the device enters the idle condition to when the power management framework (PoFx) calls the driver's DevicePowerNotRequiredCallback callback routine.
PoFxStartDevicePowerManagement The PoFxStartDevicePowerManagement routine completes the registration of a device with the power management framework (PoFx) and starts device power management.
PoFxUnregisterDevice The PoFxUnregisterDevice routine removes the registration of a device from the power management framework (PoFx).

디바이스 전원 관리 콜백

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

Topic Description
ComponentActiveConditionCallback The ComponentActiveConditionCallback callback routine notifies the driver that the specified component completed a transition from the idle condition to the active condition.
ComponentIdleConditionCallback The ComponentIdleConditionCallback callback routine notifies the driver that the specified component completed a transition from the active condition to the idle condition.
ComponentIdleStateCallback The ComponentIdleStateCallback callback routine notifies the driver of a pending change to the Fx power state of the specified component.
ComponentPerfStateCallback The ComponentPerfStateCallback callback routine notifies the driver that its request to change the performance state of a component is complete.
DevicePowerNotRequiredCallback The DevicePowerNotRequiredCallback callback routine notifies the device driver that the device is not required to stay in the D0 power state.
DevicePowerRequiredCallback The DevicePowerRequiredCallback callback routine notifies the device driver that the device must enter and remain in the D0 power state.
PowerControlCallback The PowerControlCallback callback routine performs a power control operation that is requested by the power management framework (PoFx).

디바이스 전원 관리 구조

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

Topic Description
PO_FX_COMPONENT_V1PO_FX_COMPONENT_V2 The PO_FX_COMPONENT structure describes the power state attributes of a component in a device.
PO_FX_COMPONENT_IDLE_STATE The PO_FX_COMPONENT_IDLE_STATE structure specifies the attributes of an Fx power state of a component in a device.
PO_FX_COMPONENT_PERF_INFO The PO_FX_COMPONENT_PERF_INFO structure describes all the sets of performance states for a single component within a device.
PO_FX_COMPONENT_PERF_SET The PO_FX_COMPONENT_PERF_SET structure represents a set of performance states for a single component within a device.
PO_FX_DEVICE_V1PO_FX_DEVICE_V2PO_FX_DEVICE_V3 The PO_FX_DEVICE structure describes the power attributes of a device to the power management framework (PoFx).
PO_FX_PERF_STATE The PO_FX_PERF_STATE structure represents a performance state for a single component within a device.
PO_FX_PERF_STATE_CHANGE The PO_FX_PERF_STATE_CHANGE structure contains information about a change to a performance state that is being requested by calling the PoFxIssueComponentPerfStateChange or PoFxIssueComponentPerfStateChangeMultiple routine.

디바이스 전원 관리 열거형

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

Topic Description
PO_FX_PERF_STATE_TYPE The PO_FX_PERF_STATE_TYPE enumeration contains values that describe the type of performance states in a PO_FX_COMPONENT_PERF_SET.
PO_FX_PERF_STATE_UNIT The PO_FX_PERF_STATE_UNIT enumeration contains values that describe the type of unit that is controlled by the performance states in a PO_FX_COMPONENT_PERF_SET.

디바이스 전원 관리 상수

플래그 비트 PO_FX_FLAG_XXX

The PO_FX_FLAG_XXX constants are flag bits that indicate whether a request to change the condition of component is performed synchronously or asynchronously.

#define PO_FX_FLAG_BLOCKING   0x1
#define PO_FX_FLAG_ASYNC_ONLY 0x2

PO_FX_FLAG_XXX constants

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

PO_FX_FLAG_XXX remarks

The Flags parameter to the following routines can be set to a PO_FX_FLAG_XXX constant:

The PO_FX_FLAG_BLOCKING and PO_FX_FLAG_ASYNC_ONLY flag bits are mutually exclusive. 호출자는 Flags 매개 변수에서 하나 또는 다른 플래그 비트를 설정할 수 있지만 두 플래그 비트는 설정할 수 없습니다.

PO_FX_FLAG_XXX Requirements

Version Header
Windows 8부터 지원됩니다. Wdm.h

플래그 비트 PO_FX_FLAG_PERF_XXX

The PO_FX_FLAG_PERF_XXX constants are flag bits that define how the power management framework (PoFx) manages performance states for a device component.

#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
Constant Value Description
PO_FX_FLAG_PERF_PEP_OPTIONAL 1 (0x1) 드라이버가 PEP(플랫폼 확장 플러그 인)의 도움 없이 성능 상태를 변경할 수 있거나 드라이버가 로깅 목적으로만 PoFx에 성능 상태를 등록하고 있음을 나타냅니다. If this flag is set, the PoFxRegisterComponentPerfStates call will still succeeded if the PEP does not support performance states for the component.
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 remarks

The Flags parameter to the PoFxRegisterComponentPerfStates routine can be set to a PO_FX_FLAG_PERF_XXX constant.

PO_FX_FLAG_PERF_XXX requirements

Requirements Version
Windows 10부터 지원됩니다. Wdm.h