共用方式為


PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK回呼函式 (wdm.h)

ComponentIdleConditionCallback 回呼例程會通知驅動程式指定的元件已完成從使用中條件轉換為閑置條件的轉換。

語法

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK PoFxComponentIdleConditionCallback;

void PoFxComponentIdleConditionCallback(
  [in] PVOID Context,
  [in] ULONG Component
)
{...}

參數

[in] Context

裝置內容的指標。 設備驅動器會使用此內容來儲存裝置目前電源狀態的相關信息。 設備驅動器會在PO_FX_DEVICE結構的DeviceContext 成員中指定此指標,該PO_FX_DEVICE驅動程式用來向電源管理架構註冊裝置 (PoFx) 。 此內容與PoFx不透明。

[in] Component

識別元件的索引。 此參數是裝置驅動程式用來向PoFx註冊裝置之PO_FX_DEVICE結構中 Components 陣列的索引。 如果 Components 陣列包含 N 個元素,元件索引的範圍從 0 到 N–1。

傳回值

備註

當驅動程式不再需要存取處於使用中條件的元件時,驅動程式應該呼叫 PoFxIdleComponent 例程,將元件切換至閑置條件。 為了回應 PoFxIdleComponent呼叫,PoFx 會起始轉換至閒置條件,然後呼叫 ComponentIdleConditionCallback 例程,以在此轉換完成時通知驅動程式。

驅動程式必須呼叫 PoFxCompleteIdleCondition ,以回應每個 ComponentIdleConditionCallback 回 呼。 PoFxCompleteIdleCondition 呼叫可以在 ComponentIdleConditionCallback 回呼期間或回呼傳回之後發生。 驅動程式應該在呼叫 PoFxCompleteIdleCondition 之前完成任何需要存取硬體元件的工作。 在此呼叫之後,元件可能不會保持 F0 電源狀態。

只有在元件處於使用中條件時,才能安全地存取元件。 請勿依賴元件的 Fx 電源狀態來判斷是否可以存取元件。 如果元件處於 F0 狀態且處於閑置狀態,則元件可能即將切換到另一個 Fx 狀態。

範例

若要定義 ComponentIdleConditionCallback 回 呼例程,您必須先提供函式宣告來識別您要定義的回呼例程類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程式驗證器 (SDV) ,以及其他驗證工具會尋找錯誤,而且這是撰寫 Windows 操作系統驅動程式的需求。

例如,若要定義名為 MyComponentIdleConditionCallbackComponentIdleConditionCallback 回呼例程,請使用 PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK 類型,如下列程式代碼範例所示:

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK MyComponentIdleConditionCallback;

然後,實作回呼例程,如下所示:

_Use_decl_annotations_
VOID
  MyComponentIdleConditionCallback(
    PVOID Context,
    ULONG Component
    )
  {
      // Function body
  }

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK函式類型定義於 Wdm.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 _Use_decl_annotations_ 註釋新增至函式定義。 批 _Use_decl_annotations_ 注可確保使用頭檔中套用至PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK函式類型的批注。 如需函式宣告需求的詳細資訊,請參閱 使用WDM驅動程式的函式角色類型來宣告函式。 如需 的相關信息 _Use_decl_annotations_,請參閱 標註函式行為

規格需求

需求
最低支援的用戶端 從 Windows 8 開始支援。
目標平台 桌面
標頭 wdm.h (包括 Wudfwdm.h)
IRQL 在 IRQL <= DISPATCH_LEVEL呼叫。

另請參閱

PO_FX_DEVICE

PoFxCompleteIdleCondition