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 ビットに設定します。

意味
PO_FX_FLAG_PERF_PEP_OPTIONAL
0x1
ドライバーがプラットフォーム拡張機能プラグイン (PEP) のサポートなしでパフォーマンス状態を変更できること、またはドライバーがログ記録のみを目的として PoFx にパフォーマンス状態を登録していることを示します。 このフラグが設定されている場合、PEP がコンポーネントのパフォーマンス状態をサポートしていない場合、 PoFxRegisterComponentPerfStates 呼び出しは引き続き成功します。
PO_FX_FLAG_PERF_QUERY_ON_F0
0x2
一部のデバイスでは、コンポーネントがアイドル状態になったときに、PEP でコンポーネントのパフォーマンス状態を特定のパフォーマンス状態 ( 名目上のパフォーマンス状態と呼ばれます) に配置する必要がある場合があります。 ドライバーは、コンポーネントにわずかなパフォーマンス状態が含まれている場合にこのフラグを設定します。この場合、PoFx は PEP に対してクエリを実行して、コンポーネントが F0 に遷移したときに現在のパフォーマンス状態を判断します。
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES
0x4
一部のデバイスでは、アイドル状態の間でコンポーネントを遷移するときに、コンポーネントのパフォーマンス状態を特定のパフォーマンス状態 ( 名目上のパフォーマンス状態と呼ばれます) に配置する必要がある場合があります。 このコンポーネントにわずかなパフォーマンス状態が含まれている場合、ドライバーはこのフラグを設定します。この場合、PoFx は PEP に対してクエリを実行し、コンポーネントがアイドル状態間で遷移したときに現在のパフォーマンス状態を判断します。

[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以外のリターン コードで失敗します。 考えられるエラーの戻り値には、次の状態コードが含まれます。

リターン コード 説明
STATUS_NOT_IMPLEMENTED
Flags パラメーターには、PO_FX_FLAG_PERF_PEP_OPTIONAL フラグが含まれていません。PEP はこのデバイスのパフォーマンス状態管理を提供できません。
STATUS_INVALID_PARAMETER
InputStateInfoOutputStateInfo の両方が 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 がパフォーマンス状態をサポートしていない場合、ドライバーは、ログ記録のみを目的として PoFx でパフォーマンス状態のサポートに登録できます。

ドライバーがログ記録のみを目的としてパフォーマンス状態のサポートのために登録する場合、またはドライバーがパフォーマンス状態管理に対する 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

こちらもご覧ください

ComponentPerfStateCallback

デバイス パフォーマンスの状態管理

PO_FX_COMPONENT_PERF_INFO

PoFxRegisterDevice