PO_FX_COMPONENT_V2 구조체(wdm.h)

PO_FX_COMPONENT 구조는 디바이스에서 구성 요소의 전원 상태 특성을 설명합니다.

구문

typedef struct _PO_FX_COMPONENT_V2 {
  GUID                        Id;
  ULONGLONG                   Flags;
  ULONG                       DeepestWakeableIdleState;
  ULONG                       IdleStateCount;
  PPO_FX_COMPONENT_IDLE_STATE IdleStates;
  ULONG                       ProviderCount;
  PULONG                      Providers;
} PO_FX_COMPONENT_V2, *PPO_FX_COMPONENT_V2;

멤버

Id

디바이스의 다른 구성 요소와 관련하여 이 구성 요소를 고유하게 식별하는 구성 요소 ID입니다. PoFx(전원 관리 프레임워크)에 이 구성 요소를 동일한 디바이스의 유사한 다른 구성 요소와 구분하기 위해 구성 요소 ID가 필요한 경우 드라이버는 이 멤버에 대해 0이 아닌 값을 지정해야 합니다. 이 멤버는 선택 사항입니다. 이 멤버를 사용하지 않는 경우 모든 0으로 설정해야 합니다.

Flags

이 멤버는 플래그 비트인 PO_FX_COMPONENT_FLAG_F0_ON_DX 설정할 수 있습니다. 자세한 내용은 설명 부분을 참조하세요.

DeepestWakeableIdleState

구성 요소가 절전 모드 해제할 수 있는 가장 깊은 Fx 상태의 인덱스입니다. F0의 경우 0, F1의 경우 1을 지정합니다. 이 인덱스가 IdleStateCount보다 작아야 합니다.

IdleStateCount

IdleStates 멤버가 가리키는 배열의 요소 수입니다. 또한 이 멤버는 구성 요소가 지원하는 Fx 전원 상태 수를 지정합니다. 구성 요소는 F0(Fx 상태)를 하나 이상 지원해야 합니다.

IdleStates

PO_FX_COMPONENT_IDLE_STATE 배열에 대한 포인터입니다. 이 배열의 길이는 IdleStateCount 멤버에 의해 지정됩니다. 각 배열 요소는 구성 요소에서 지원하는 Fx 전원 상태의 특성을 지정합니다. 요소 0은 F0, 요소 1은 F1 등을 설명합니다.

ProviderCount

이 구성 요소가 의존하는 구성 요소의 수를 지정하는 값입니다. 자세한 내용은 주의에서 구성 요소 종속성을 참조하세요.

Providers

구성 요소 인덱스의 배열에 대한 포인터는 이 구성 요소가 따라 달라집니다. 자세한 내용은 주의에서 구성 요소 종속성을 참조하세요.

설명

디바이스 드라이버가 PoFx에 디바이스를 등록하면 드라이버는 등록 정보를 포함하는 PO_FX_DEVICE 구조를 제공합니다. 이 구조체에는 PO_FX_COMPONENT 구조체의 배열이 포함되어 있습니다. 이 배열의 요소는 디바이스에 있는 개별 구성 요소의 전원 특성을 설명합니다. PoFx는 이 배열의 정보를 사용하여 이러한 구성 요소의 전원 설정을 관리합니다.

ID 멤버에는 PoFx가 구성 요소를 고유하게 식별하는 데 사용할 수 있는 구성 요소 ID가 포함되어 있습니다. PoFxActivateComponent와 같은 루틴이 등록된 디바이스에서 구성 요소를 식별하는 데 사용하는 구성 요소 인덱스와 구성 요소 ID를 혼동하지 마세요. 구성 요소 인덱스는 디바이스 드라이버가 PoFx에 디바이스를 등록하는 데 사용한 PO_FX_DEVICE 구조의 Components 배열에 대한 인덱스입니다. Components 배열에 N 요소가 포함된 경우 구성 요소 인덱스는 0~N-1 범위의 정수 값입니다. 반면 구성 요소 ID는 GUID 값입니다.

드라이버가 PoFx에 등록하는 동안 PO_FX_VERSION_V2 대한 지원을 지정한 경우 Flags 멤버를 PO_FX_COMPONENT_FLAG_F0_ON_DX 값으로 설정할 수 있습니다(즉, PoFxRegisterDevice 루틴을 호출하는 동안 드라이버가 Device 매개 변수에 전달된 PO_FX_DEVICE 구조의 Version 멤버에 대해 PO_FX_VERSION_V2 값을 지정했습니다). PO_FX_COMPONENT_FLAG_F0_ON_DX 플래그를 지정하면 PoFx는 Dx 전환 중 및 대기/절전 모드 해제 IRP를 위해 구성 요소를 F0 전원 상태로 전환합니다. Dx IRP 또는 대기/절전 모드 해제 IRP를 디바이스 스택에 디스패치하기 전에(어떤 이벤트가 먼저 발생하든) 전원 관리자는 구성 요소를 F0 상태로 전환합니다. 절전 모드 해제/대기 IRP가 취소되거나 완료되거나 Dx IRP가 완료되고 드라이버가 PoFxReportDevicePoweredOn 루틴(마지막으로 발생하는 이벤트)을 호출할 때까지 구성 요소는 F0에 유지됩니다.

구성 요소 종속성

PoFx는 디바이스 내에서 논리 구성 요소 종속성을 지원하지만 다른 디바이스에서는 지원되지 않습니다. 각 구성 요소에 대해 디바이스를 등록하는 동안 드라이버는 이 구성 요소에 따라 달라지는 숫자( ProviderCount 멤버) 및 구성 요소 인덱스 배열( 공급자 멤버)을 제공할 수 있습니다. 이를 공급자라고 합니다. PoFx는 모든 공급자가 활성화될 때까지 구성 요소가 활성화되지 않도록 보장합니다.

구성 요소 종속성은 에지가 종속 구성 요소에서 공급자로 가리키고 종속성을 나타내는 지시된 그래프를 형성합니다. 디바이스 등록 중에 PoFx는 종속성 그래프 유효성을 검사합니다. 주기 및 반복되는 에지는 허용되지 않으며 깊이 우선 검색 순회에 대한 그래프의 깊이는 4를 초과할 수 없습니다. 또한 PoFx는 종속성 그래프 따라 구성 요소의 활성 참조 수를 설정합니다. 즉, 각 공급자의 활성 참조 수는 구성 요소에 의존하는 각 구성 요소에 대해 한 번 증가합니다.

구성 요소를 활성화하는 동안 PoFx는 먼저 모든 공급자를 비동기적으로 활성화합니다. 구성 요소가 활성화되면 PoFx는 모든 종속 구성 요소를 확인하고 필요한 경우 활성화를 계속합니다.

구성 요소가 유휴 상태로 전환되면 PoFx는 먼저 종속 구성 요소를 유휴 상태로 만듭니다. 드라이버가 ComponentIdleConditionCallback을 완료하고 PEP(플랫폼 확장 플러그 인)에 구성 요소가 유휴 상태라는 알림이 표시되면 PoFx는 종속성 그래프 폭 우선 순회로 재귀적으로 통과하고 각 공급자를 비동기적으로 유휴 상태로 전환합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 부터 지원합니다.
머리글 wdm.h(Wudfwdm.h 포함)

추가 정보

구성 요소 수준 전원 관리

PO_FX_COMPONENT_IDLE_STATE

PO_FX_DEVICE