PO_FX_DEVICE_POWER_REQUIRED_CALLBACK コールバック関数 (wdm.h)
DevicePowerRequiredCallback コールバック ルーチンは、デバイスが D0 電源状態に入り、維持する必要があることをデバイス ドライバーに通知します。
構文
PO_FX_DEVICE_POWER_REQUIRED_CALLBACK PoFxDevicePowerRequiredCallback;
void PoFxDevicePowerRequiredCallback(
[in] PVOID Context
)
{...}
パラメーター
[in] Context
デバイス コンテキストへのポインター。 デバイス ドライバーは、このコンテキストを使用して、デバイスの現在の電源状態に関する情報を格納します。 デバイス ドライバーは、デバイスを電源管理フレームワーク (PoFx) に登録するためにドライバーが使用したPO_FX_DEVICE構造体の DeviceContext メンバーにこのポインターを指定しました。 このコンテキストは PoFx に対して不透明です。
戻り値
なし
解説
PoFx がドライバーの DevicePowerRequiredCallback ルーチンを呼び出した後、デバイスがまだ D0 状態でない場合は、D0 IRP ( IRP_MN_SET_POWER 要求) をデバイス スタックに送信して、D0 状態への移行を開始する必要があります。 ドライバーがこの要求の処理を完了 (および下位のすべてのドライバーが完了) した後、ドライバーは PoFxReportDevicePoweredOn ルーチンを呼び出す必要があります。 PoFxReportDevicePoweredOn 呼び出しは、デバイスが DevicePowerRequiredCallback 呼び出しへの応答を完了したことを PoFx に通知します。 ドライバーは、DevicePowerRequiredCallback 呼び出し中または呼び出し後に PoFxReportDevicePoweredOn を呼び出すことができます。
DevicePowerRequiredCallback ルーチンが呼び出されるたびに、ドライバーは PoFxReportDevicePoweredOn を呼び出して応答する必要があります。 PoFxReportDevicePoweredOn 呼び出しは、DevicePowerRequiredCallback 呼び出し中または呼び出し後に発生する可能性があります。 ドライバーは、D0 IRP が必要ない、D0 IRP 要求が失敗する、またはディスパッチされた D0 IRP が成功または失敗するかどうかに関係なく、 PoFxReportDevicePoweredOn を呼び出す必要があります。
PoFx は、以前にドライバー の DevicePowerNotRequiredCallback ルーチンを呼び出して、デバイスが D0 状態を維持する必要がないことをドライバーに通知する場合にのみ、 DevicePowerRequiredCallback ルーチンを呼び出します。
DevicePowerRequiredCallback ルーチンの呼び出しは、ドライバーが PoFxCompleteDevicePowerNotRequired を呼び出して DevicePowerNotRequiredCallback コールバックを完了した後、いつでも行うことができます。 DevicePowerRequiredCallback 呼び出しは、コンポーネントがアクティブな条件に変更されることを要求するなど、ドライバーによって実行されたアクションの結果として必ずしも発生するとは限りません。
例
DevicePowerRequiredCallback コールバック ルーチンを定義するには、まず、定義するコールバック ルーチンの種類を識別する関数宣言を指定する必要があります。 Windows には、ドライバーのコールバック関数型のセットが用意されています。 コールバック関数の種類を使用して関数を宣言すると、 ドライバーのコード分析、 静的ドライバー検証ツール (SDV)、およびその他の検証ツールでエラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。
たとえば、 という名前MyDevicePowerRequiredCallback
の DevicePowerRequiredCallback コールバック ルーチンを定義するには、次のコード例に示すように、PO_FX_DEVICE_POWER_REQUIRED_CALLBACK型を使用します。
PO_FX_DEVICE_POWER_REQUIRED_CALLBACK MyDevicePowerRequiredCallback;
次に、コールバック ルーチンを次のように実装します。
_Use_decl_annotations_
VOID
MyDevicePowerRequiredCallback(
PVOID Context
)
{
// Function body
}
PO_FX_DEVICE_POWER_REQUIRED_CALLBACK関数の種類は、Wdm.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、必ず注釈を _Use_decl_annotations_
関数定義に追加してください。 注釈により _Use_decl_annotations_
、ヘッダー ファイル内のPO_FX_DEVICE_POWER_REQUIRED_CALLBACK関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「 WDM ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 の詳細 _Use_decl_annotations_
については、「 関数の動作に注釈を付ける」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 以降でサポートされています。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wudfwdm.h を含む) |
IRQL | IRQL <= DISPATCH_LEVELで呼び出されます。 |
こちらもご覧ください
DevicePowerNotRequiredCallback