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 以降でサポートされています。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wudfwdm.h を含む) |
IRQL | IRQL <= DISPATCH_LEVELで呼び出されます。 |