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

アイドル状態の操作のフラグ。 このメンバーを 0 に設定するか、ビットPO_FX_FLAG_XXX次のいずれかのフラグ 設定します。

  • PO_FX_FLAG_BLOCKING
  • PO_FX_FLAG_ASYNC_ONLY
これら 2 つのフラグ ビットは相互に排他的です。 詳細については、「解説」を参照してください。

戻り値

なし

解説

デバイス ドライバーは PoFxIdleComponent を呼び出して、デバイス内のコンポーネントへのアクティブ化参照を解放します。 ドライバーは、 PoFxActivateComponent ルーチンの以前の呼び出しでアクティブ化参照を取得しました。 ドライバーは、ドライバーがコンポーネントにアクセスする必要がある場合にのみ、コンポーネントのアクティブ化参照を保持する必要があります。 使用されていないコンポーネントでアクティブ化参照を保持すると、コンポーネントが低電力 Fx 状態になるのを防ぐことができます。

ドライバーがコンポーネントへの他のアクティブ化参照を保持していない場合、 PoFxIdleComponent はアクティブな状態からアイドル状態への移行を開始します。 この遷移が完了すると、PoFx はドライバーの ComponentIdleConditionCallback ルーチンを呼び出してドライバーに通知します。 ドライバーがコンポーネントに対して 1 つ以上の追加のアクティブ化参照を保持している場合、コンポーネントはアクティブな状態のままであり、 ComponentIdleConditionCallback ルーチンは呼び出されません。

PoFx は、デバイス内の各コンポーネントのアクティブ化参照数を保持します。 PoFxActivateComponent ルーチンは、この数をインクリメントし、PoFxIdleComponent はそれをデクリメントします。 コンポーネントはアクティブな状態のままになりますが、この数は 0 以外です。 ドライバーが最後のアクティブ化参照をコンポーネントに解放すると、カウントは 0 に減り、コンポーネントはアイドル状態になります。 コンポーネントがアイドル状態に入った後、PoFx はコンポーネントを低電力 Fx 状態に切り替える可能性があります。 詳細については、「 PoFxActivateComponent」を参照してください。

Flags = がPO_FX_FLAG_BLOCKING場合、PoFxIdleComponent 呼び出しは同期です。 この場合、 PoFxIdleComponent は 、コンポーネントがアイドル状態への移行を完了するまで、戻るのを待機します。 PoFxIdleComponent は、ドライバーの ComponentIdleConditionCallback コールバック ルーチンを呼び出して、コンポーネントがアイドル状態にあることをドライバーに通知します。 このコールバックは 、PoFxIdleComponent の呼び出しと同じスレッドで発生し、 PoFxIdleComponent はComponentIdleConditionCallback コールバックが返された後にのみを返します。

Flags = がPO_FX_FLAG_ASYNC_ONLY場合、PoFxIdleComponent 呼び出しは非同期です。 この場合、 PoFxIdleComponentComponentIdleConditionCallback コールバックを別のスレッドで実行するようにスケジュールし、コールバックが発生するのを待たずに を返します。 コールバックは、 PoFxIdleComponent から返される前または後に発生する可能性があります。 ドライバーは、コンポーネントがアイドル状態への移行を完了するタイミングを判断するために、 ComponentIdleConditionCallback コールバックに依存する必要があります。 このコールバックが発生するまで、ドライバーは、コンポーネントがまだアクティブな状態にある可能性があると想定する必要があります。

ドライバーは、PoFxIdleComponent 呼び出しが同期か非同期かを気にしないことを示す Flags = 0 を設定できます。 この場合、PoFx は呼び出しを同期または非同期にするかどうかを決定します。

要件

要件
サポートされている最小のクライアント Windows 8以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h
Library Ntoskrnl.lib
[DLL] Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

ComponentIdleConditionCallback

PO_FX_DEVICE

PO_FX_FLAG_XXX

PoFxActivateComponent

PoFxRegisterDevice