共用方式為


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

閑置作業的旗標。 將此成員設定為零,或設定為下列其中一個旗標 ,PO_FX_FLAG_XXX 位:

  • PO_FX_FLAG_BLOCKING
  • PO_FX_FLAG_ASYNC_ONLY
這兩個旗標位互斥。 如需詳細資訊,請參閱<備註>。

傳回值

備註

設備驅動器會呼叫 PoFxIdleComponent ,以釋放裝置中元件的啟用參考。 驅動程式在先前呼叫 PoFxActivateComponent 例程中取得啟用參考。 只有在驅動程式需要存取元件時,驅動程式才應該在元件上保留啟用參考。 若要在未使用的元件上保存啟用參考,可防止元件進入低電源 Fx 狀態。

如果驅動程式沒有其他對元件的啟用參考, PoFxIdleComponent 會起始從使用中條件轉換為閑置條件的轉換。 此轉換完成時,PoFx 會呼叫驅動程式的 ComponentIdleConditionCallback 例程來通知驅動程式。 如果驅動程式在元件上保留一或多個額外的啟用參考,元件會保留在作用中條件中,而且不會呼叫 ComponentIdleConditionCallback 例程。

PoFx 會維護裝置中每個元件的啟用參考計數。 PoFxActivateComponent 例程會遞增此計數,而 PoFxIdleComponent 會遞減它。 當此計數為非零時,元件會保留在作用中條件中。 當驅動程式釋放元件的最後一個啟用參考時,計數會遞減為零,而元件會進入閑置條件。 元件進入閑置條件之後,PoFx 可能會將元件切換為低電源 Fx 狀態。 如需詳細資訊,請參閱 PoFxActivateComponent

如果 Flags = PO_FX_FLAG_BLOCKING則 PoFxIdleComponent 呼叫是同步的。 在此情況下, PoFxIdleComponent 會等候返回,直到元件完成轉換至閑置條件為止。 PoFxIdleComponent 會呼叫驅動程式的 ComponentIdleConditionCallback 回 呼例程,通知驅動程式元件處於閑置狀況。 此回呼發生在與呼叫 PoFxIdleComponent 相同的線程中,而 PoFxIdleComponent 只有在 ComponentIdleConditionCallback 回呼傳回之後才會傳回。

如果 Flags = PO_FX_FLAG_ASYNC_ONLY則 PoFxIdleComponent 呼叫是異步的。 在此情況下, PoFxIdleComponent 會將 ComponentIdleConditionCallback 回 呼排程在另一個線程中發生,然後傳回而不等待回呼發生。 回呼可以在 PoFxIdleComponent 傳回之前或之後發生。 驅動程式應該依賴 ComponentIdleConditionCallback 回 呼來判斷元件何時完成轉換至閑置條件。 在發生此回呼之前,驅動程式應該假設元件可能仍在使用中狀況中。

驅動程式可以設定 Flags = 0,表示它不小心 PoFxIdleComponent 呼叫是同步還是異步。 在此情況下,PoFx 會決定是否要進行同步或異步呼叫。

規格需求

需求
最低支援的用戶端 從 Windows 8 開始提供。
目標平台 Universal
標頭 wdm.h
程式庫 Ntoskrnl.lib
Dll Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

另請參閱

ComponentIdleConditionCallback

PO_FX_DEVICE

PO_FX_FLAG_XXX

PoFxActivateComponent

PoFxRegisterDevice