次の方法で共有


PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK コールバック関数 (wdm.h)

ComponentActiveConditionCallback コールバック ルーチンは、指定されたコンポーネントがアイドル状態からアクティブな条件への移行を完了したことをドライバーに通知します。

構文

PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK PoFxComponentActiveConditionCallback;

void PoFxComponentActiveConditionCallback(
  [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 です。

戻り値

なし

解説

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

アイドル状態にあるコンポーネントにアクセスするには、ドライバーは PoFxActivateComponent ルーチンを呼び出して、コンポーネントをアクティブな条件に切り替えることができます。 PoFxActivateComponent が呼び出されたときに、コンポーネントがまだアクティブな状態にない場合、PoFx はアクティブな条件への移行を開始し、ComponentActiveConditionCallback ルーチンを呼び出して、遷移が完了したときにドライバーに通知します。

ドライバーは、遷移を開始するために PoFxActivateComponent を呼び出したかどうかに関係なく、コンポーネントがアクティブな条件への移行を完了するたびに ComponentActiveConditionCallback コールバックを受け取ります。 たとえば、Windows カーネルは、ドライバーにプラグ アンド プレイ IRP またはシステム セット電源 IRP を送信する前に、ドライバーの代わりにコンポーネントをアクティブ化する場合があります。

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

たとえば、 という名前MyComponentActiveConditionCallbackComponentActiveConditionCallback コールバック ルーチンを定義するには、次のコード例に示すように、PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK型を使用します。

PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK MyComponentActiveConditionCallback;

次に、コールバック ルーチンを次のように実装します。

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

PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK関数の種類は、Wdm.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、必ず注釈を _Use_decl_annotations_ 関数定義に追加してください。 注釈により _Use_decl_annotations_ 、ヘッダー ファイル内のPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「 WDM ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 の詳細 _Use_decl_annotations_については、「 関数の動作に注釈を付ける」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 8 以降でサポートされています。
対象プラットフォーム デスクトップ
Header wdm.h (Wudfwdm.h を含む)
IRQL IRQL <= DISPATCH_LEVELで呼び出されます。

こちらもご覧ください

PO_FX_DEVICE

PoFxActivateComponent