PoFxRegisterComponentPerfStates 関数 (wdm.h)
PoFxRegisterComponentPerfStates ルーチンは、電源管理フレームワーク (PoFx) によるパフォーマンス状態管理用のデバイス コンポーネントを登録します。
構文
NTSTATUS PoFxRegisterComponentPerfStates(
[in] POHANDLE Handle,
[in] ULONG Component,
[in] ULONGLONG Flags,
[in] PPO_FX_COMPONENT_PERF_STATE_CALLBACK ComponentPerfStateCallback,
[in] PPO_FX_COMPONENT_PERF_INFO InputStateInfo,
[out] PPO_FX_COMPONENT_PERF_INFO *OutputStateInfo
);
パラメーター
[in] Handle
PoFx を使用したデバイスの登録を表すハンドル。 デバイス ドライバーは、以前に PoFxRegisterDevice ルーチンからこのハンドルを受信しました。
[in] Component
パフォーマンス状態が管理されるコンポーネントを識別するインデックス。 このパラメーターは、デバイス ドライバーが PoFx にデバイスを登録するために使用したPO_FX_DEVICE構造体の Components 配列へのインデックスです。 Components 配列に N 個の要素が含まれている場合、コンポーネント インデックスの範囲は 0 から N ~ 1 です。
[in] Flags
パフォーマンス状態の登録の動作を変更するフラグ。 このメンバーを 0 に設定するか、次のいずれかのフラグ PO_FX_FLAG_PERF_XXX ビットに設定します。
[in] ComponentPerfStateCallback
ComponentPerfStateCallback ルーチンへのポインター。 このルーチンは、PoFx がログ記録を完了し、 PoFxIssueComponentPerfStateChange または PoFxIssueComponentPerfStateChangeMultiple へのドライバーの呼び出しによって開始されるパフォーマンス状態遷移について PEP に通知するときに呼び出されます。 このコールバックは、すべてのコンポーネントとすべてのデバイスで同じ場合があります。PoFx は、各完了呼び出しでデバイス ハンドルとコンポーネント インデックスを提供します。
[in] InputStateInfo
ドライバーがパフォーマンス状態情報を提供する場合、このパラメーターには、PoFx にパフォーマンス状態情報を提供する PO_FX_COMPONENT_PERF_INFO 構造体に割り当てられたドライバーへのポインターが含まれます。 ドライバーで PEP のパフォーマンス状態情報が必要な場合は、このパラメーターを NULL に設定する必要があります。
[out] OutputStateInfo
ドライバーが PEP のパフォーマンス状態情報を必要とする場合、登録が成功した後、このパラメーターには、PEP によって定義されたパフォーマンス状態情報を提供する PO_FX_COMPONENT_PERF_INFO 構造体へのポインターが含まれます。 ドライバーがパフォーマンス状態情報を提供する場合は、このパラメーターを NULL に設定する必要があります。
このパラメーターに割り当てられたメモリは PoFx によって管理され、デバイスが削除されたときにドライバーはこのメモリを解放しないでください。 このメモリの有効期間は、これらのパフォーマンス状態セットを含む PoFx コンポーネントの有効期間を超えると保証されます。
戻り値
PoFxRegisterComponentPerfStates は、PoFx がデバイスのパフォーマンス状態の登録を受け入れた場合、 STATUS_SUCCESS を返します。 必要な情報のいずれかが指定されていない場合、または正しくない場合、登録は STATUS_SUCCESS以外のリターン コードで失敗します。 考えられるエラーの戻り値には、次の状態コードが含まれます。
リターン コード | 説明 |
---|---|
|
Flags パラメーターには、PO_FX_FLAG_PERF_PEP_OPTIONAL フラグが含まれていません。PEP はこのデバイスのパフォーマンス状態管理を提供できません。 |
|
InputStateInfo と OutputStateInfo の両方が NULL であるか、これらのパラメーターの両方が NULL ではないか、InputStateInfo パラメーターに割り当てられたPO_FX_COMPONENT_PERF_INFO構造体にパフォーマンス状態セットがありません。 |
注釈
PoFx は、デバイスの構造体のメモリへのディープ コピーを実行することに注意してください。
ドライバーまたはプラットフォーム拡張機能プラグイン (PEP) は、各コンポーネントでサポートされているパフォーマンス状態に関する情報を提供できます。
- ドライバーがパフォーマンス状態情報を提供する場合、ドライバーは InputStateInfo パラメーターを、パフォーマンス状態情報を含む PO_FX_COMPONENT_PERF_INFO 構造体へのポインターに設定する必要があります。 それ以外の場合、ドライバーはこのパラメーターを NULL に設定する必要があります。
- PEP がパフォーマンス状態情報を提供する場合、ドライバーは OutputStateInfo パラメーターを、パフォーマンス状態情報を受け取る PO_FX_COMPONENT_PERF_INFO 構造体への有効なポインターに設定する必要があります。 それ以外の場合、ドライバーはこのパラメーターを NULL に設定する必要があります。
ドライバーがログ記録のみを目的としてパフォーマンス状態のサポートのために登録する場合、またはドライバーがパフォーマンス状態管理に対する PEP サポートの有無に関係なく正しく機能する場合、ドライバーは Flags パラメーターに PO_FX_FLAG_PERF_PEP_OPTIONAL フラグを設定する必要があります。 フラグが設定されている場合、PEP がパフォーマンス状態のサポートを提供しない場合でも、登録呼び出しは成功します。
ドライバーでパフォーマンス状態情報を提供するために PEP が必要な場合、ドライバーは Flags パラメーターでPO_FX_FLAG_PERF_PEP_OPTIONAL フラグを設定できません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h |
Library | Ntoskrnl.lib |
[DLL] | Ntoskrnl.exe |
IRQL | <= APC_LEVEL |