次の方法で共有


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

デバイス コンテキストへのポインター。 デバイス ドライバーは、このコンテキストを使用して、デバイスの現在の電源状態に関する情報を格納します。 デバイス ドライバーは、デバイスを電源管理フレームワーク (PoFx) に登録するために使用した PO_FX_DEVICE 構造体の DeviceContext メンバーにこのポインターを指定しました。 このコンテキストは PoFx に対して不透明です。

[in] Component

コンポーネントを識別するインデックス。 このパラメーターは、デバイス ドライバーが PoFx にデバイスを登録するために使用した PO_FX_DEVICE 構造体の Components 配列へのインデックスです。 Components 配列に N 個の要素が含まれている場合、コンポーネントインデックスの範囲は 0 から N ~ 1 です。

戻り値

何一つ

備考

ドライバーがアクティブな状態にあるコンポーネントにアクセスする必要がなくなった場合、ドライバーは、PoFxIdleComponent ルーチンを呼び出して、コンポーネントをアイドル状態に切り替える必要があります。 PoFxIdleComponent 呼び出しに応答して、PoFx はアイドル状態への遷移を開始し、ComponentIdleConditionCallback ルーチンを呼び出して、この遷移が完了したときにドライバーに通知します。

ドライバーは、すべての ComponentIdleConditionCallback コールバックに応答して、PoFxCompleteIdleCondition 呼び出す必要があります。 PoFxCompleteIdleCondition 呼び出しは、ComponentIdleConditionCallback コールバック中、またはコールバックが返された後に発生する可能性があります。 ドライバーは、PoFxCompleteIdleCondition への呼び出しの前に、ハードウェア コンポーネントへのアクセスを必要とする作業完了する必要があります。 この呼び出しの後、コンポーネントが F0 電源状態のままにならない可能性があります。

コンポーネントに安全にアクセスできるのは、コンポーネントがアクティブな状態にある場合のみです。 コンポーネントにアクセスできるかどうかを判断するために、コンポーネントの Fx 電源状態に依存しないでください。 コンポーネントが F0 状態でアイドル状態の場合、コンポーネントが別の Fx 状態に切り替わる可能性があります。

ComponentIdleConditionCallback コールバック ルーチンを定義するには、まず、定義するコールバック ルーチンの種類を識別する関数宣言を指定する必要があります。 Windows には、ドライバーのコールバック関数の種類のセットが用意されています。 コールバック関数の種類を使用して関数を宣言すると、ドライバー のコード分析、静的ドライバー検証ツール (SDV)、およびその他の検証ツールをすると、エラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。

たとえば、MyComponentIdleConditionCallbackという名前の ComponentIdleConditionCallback コールバック ルーチンを定義するには、次のコード例に示すように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