PoFxIdleComponent 함수(wdm.h)

PoFxIdleComponent 루틴은 지정된 구성 요소의 활성화 참조 수를 감소합니다.

구문

void PoFxIdleComponent(
  [in] POHANDLE Handle,
  [in] ULONG    Component,
  [in] ULONG    Flags
);

매개 변수

[in] Handle

PoFx(전원 관리 프레임워크)를 사용하여 디바이스 등록을 나타내는 핸들입니다. 디바이스 드라이버는 이전에 PoFxRegisterDevice 루틴에서 이 핸들을 받았습니다.

[in] Component

구성 요소를 식별하는 인덱스입니다. 이 매개 변수는 디바이스 드라이버가 PoFx에 디바이스를 등록하는 데 사용한 PO_FX_DEVICE 구조의 Components 배열에 대한 인덱스입니다. Components 배열에 N 요소가 포함된 경우 구성 요소 인덱스의 범위는 0에서 N-1까지입니다.

[in] Flags

유휴 작업의 플래그입니다. 이 멤버를 0으로 설정하거나 다음 플래그 PO_FX_FLAG_XXX 비트 중 하나로 설정합니다.

  • PO_FX_FLAG_BLOCKING
  • PO_FX_FLAG_ASYNC_ONLY
이러한 두 플래그 비트는 상호 배타적입니다. 자세한 내용은 설명 부분을 참조하세요.

반환 값

없음

설명

디바이스 드라이버는 PoFxIdleComponent 를 호출하여 디바이스의 구성 요소에 대한 활성화 참조를 해제합니다. 드라이버는 PoFxActivateComponent 루틴에 대한 이전 호출에서 활성화 참조를 얻었습니다. 드라이버는 구성 요소에 액세스해야 하는 동안에만 구성 요소에 대한 활성화 참조를 보유해야 합니다. 사용되지 않는 구성 요소에 대한 활성화 참조를 보유하면 구성 요소가 저전력 Fx 상태로 전환되지 않습니다.

드라이버에 구성 요소에 대한 다른 활성화 참조가 없는 경우 PoFxIdleComponent 는 활성 조건에서 유휴 상태로의 전환을 시작합니다. 이 전환이 완료되면 PoFx는 드라이버의 ComponentIdleConditionCallback 루틴을 호출하여 드라이버에 알립니다. 드라이버가 구성 요소에 대해 하나 이상의 추가 활성화 참조를 유지하는 경우 구성 요소는 활성 상태로 유지되고 ComponentIdleConditionCallback 루틴은 호출되지 않습니다.

PoFx는 디바이스의 각 구성 요소에 대한 활성화 참조 수를 유지 관리합니다. PoFxActivateComponent 루틴은 이 수를 증가시키고 PoFxIdleComponent는 이를 감소합니다. 이 개수는 0이 아닌 동안 구성 요소는 활성 상태로 유지됩니다. 드라이버가 구성 요소에 대한 마지막 활성화 참조를 해제하면 개수가 0으로 감소하고 구성 요소가 유휴 상태로 전환됩니다. 구성 요소가 유휴 상태로 전환되면 PoFx는 잠재적으로 구성 요소를 저전력 Fx 상태로 전환할 수 있습니다. 자세한 내용은 PoFxActivateComponent를 참조하세요.

플래그 = 가 PO_FX_FLAG_BLOCKING 경우 PoFxIdleComponent 호출이 동기적입니다. 이 경우 PoFxIdleComponent 는 구성 요소가 유휴 상태로의 전환을 완료할 때까지 반환될 때까지 기다립니다. PoFxIdleComponent 는 드라이버의 ComponentIdleConditionCallback 콜백 루틴을 호출하여 구성 요소가 유휴 상태임을 드라이버에 알릴 수 있습니다. 이 콜백은 PoFxIdleComponent 호출과 동일한 스레드에서 발생하며 , PoFxIdleComponentComponentIdleConditionCallback 콜백 이 반환된 후에만 반환됩니다.

플래그 = 가 PO_FX_FLAG_ASYNC_ONLY 경우 PoFxIdleComponent 호출은 비동기적입니다. 이 경우 PoFxIdleComponentComponentIdleConditionCallback 콜백 이 다른 스레드에서 발생하도록 예약한 다음 콜백이 발생할 때까지 기다리지 않고 반환합니다. 콜백은 PoFxIdleComponent 가 반환되기 전이나 후에 발생할 수 있습니다. 드라이버는 ComponentIdleConditionCallback 콜백 을 사용하여 구성 요소가 유휴 상태로의 전환을 완료하는 시기를 결정해야 합니다. 이 콜백이 발생할 때까지 드라이버는 구성 요소가 여전히 활성 상태일 수 있다고 가정해야 합니다.

드라이버는 Flags = 0을 설정하여 PoFxIdleComponent 호출이 동기 또는 비동기인지 여부를 상관하지 않음을 나타낼 수 있습니다. 이 경우 PoFx는 호출을 동기 또는 비동기로 할지 여부를 결정합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 사용하여 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h
라이브러리 Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

추가 정보

ComponentIdleConditionCallback

PO_FX_DEVICE

PO_FX_FLAG_XXX

PoFxActivateComponent

PoFxRegisterDevice