次の方法で共有


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

DevicePowerNotRequiredCallback コールバック ルーチンは、デバイスが D0 電源状態を維持するために必要ないことをデバイス ドライバーに通知します。

構文

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK PoFxDevicePowerNotRequiredCallback;

void PoFxDevicePowerNotRequiredCallback(
  [in] PVOID Context
)
{...}

パラメーター

[in] Context

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

戻り値

なし

解説

PoFx がドライバーの DevicePowerNotRequiredCallback ルーチンを呼び出すとき、ドライバーはまず、低電力 Dx 状態への移行を開始するか ( IRP_MN_SET_POWER 要求をデバイス スタックに送信して) D0 状態のままにするかを決定する必要があります。 次に、Dx 遷移の完了を待たずに、ドライバーは PoFxCompleteDevicePowerNotRequired ルーチンを呼び出して、ドライバーが DevicePowerNotRequiredCallback コールバックへの応答を完了したことを PoFx に通知する必要があります。 ドライバーは、DevicePowerNotRequiredCallback ルーチンが返す前または後に PoFxCompleteDevicePowerNotRequired を呼び出すことができます。

デバイスが D0 状態で、デバイス内のコンポーネントの Fx 状態またはアクティブ/アイドル状態が変わると、PoFx は、デバイスが低電力 Dx 状態に入ることができるか、D0 状態のままにしておく必要があるかを評価します。 デバイスが低電力 Dx 状態になる場合、PoFx はドライバーの DevicePowerNotRequiredCallback ルーチンを 呼び出します。

デバイスが DevicePowerNotRequiredCallback コールバックに応答して低電力 Dx 状態になるが、PoFx が後でデバイスが D0 状態に入る必要があると判断した場合、PoFx はドライバーの DevicePowerRequiredCallback ルーチンを呼び出します。 この呼び出しに応答して、デバイスは D0 状態に入る必要があります。

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

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

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK MyDevicePowerNotRequiredCallback;

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

_Use_decl_annotations_
VOID
  MyDevicePowerNotRequiredCallback(
    PVOID Context
    )
  {
      // Function body
  }

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

要件

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

こちらもご覧ください

DevicePowerRequiredCallback

IRP_MN_SET_POWER

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice