PEP_QUERY_SOC_SUBSYSTEM構造体 (pepfx.h)

PEP_QUERY_SOC_SUBSYSTEM構造は、チップ (SoC) サブシステム上の特定のシステムに関する基本情報を収集するために、PEP_DPM_QUERY_SOC_SUBSYSTEM通知によって使用されます。

構文

typedef struct _PEP_QUERY_SOC_SUBSYSTEM {
  [in]     ULONG          PlatformIdleStateIndex;
  [in]     ULONG          SubsystemIndex;
  [out]    PVOID          SubsystemHandle;
  [in/out] UNICODE_STRING ParentName;
  [in/out] UNICODE_STRING SubsystemName;
  [out]    ULONG          MetadataCount;
           ULONG          Flags;
} PEP_QUERY_SOC_SUBSYSTEM, *PPEP_QUERY_SOC_SUBSYSTEM;

メンバー

[in] PlatformIdleStateIndex

カーネルによって照会されるプラットフォームアイドル状態インデックス。

[in] SubsystemIndex

サブシステム インデックス。これは、OS によって特定の PlatformIdleStateIndex のコンテキスト内の各サブシステムに割り当てられた一意のインデックスです。

カーネルは、この値をゼロに初期化し、後続のサブシステムの静的情報通知ごとにインクリメントします。 値 0 は、指定された PlatformIdleStateIndex に対する最初の通知を意味します。 このフィールドは、この通知のインスタンス間で PEP コンテキストを提供することを目的としています。 これは、特定の PlatformIdleStateIndex に対するこの通知のインスタンス間で入力値が異なる唯一のフィールドであり、PEP はこの値を使用してサブシステムを検索する可能性があります。

PEP はこの値を無視できます。

[out] SubsystemHandle

PEP が必要に応じて値を割り当てることができるコンテキスト ポインター。 この特定のサブシステムの後続の通知に対するポインターを受け取ります。 後続の通知では、PEP は PlatformIdleStateIndexSubsystemNameSubsystemHandle と共に使用して、特定のサブシステムのアカウンティング データを検索します。

既定では、このメンバーが 0 の場合は 値です。 この値は OS では無視され、通知でのみ使用されます。

このメンバーを入力するために PEP は必要ありません。

[in/out] ParentName

対応するサブシステムの親名を保持するためのバッファー。 各サブシステムには親があり、 ParentName の値が同じサブシステムは兄弟と見なされます。 サブシステム兄弟階層は省略可能です。 階層がない場合、すべてのサブシステムは最上位のサブシステムであり、 ParentName に共通の値を指定します。 階層を示すために、最上位サブシステムは共通の ParentName を指定し、各非最上位サブシステムは ParentName に対して親サブシステムの SubsystemName を指定します。

エントリの前に、カーネルは次のコマンドを実行します。

  • ParentName.Buffer[] に 64 個の WCHAR を事前に割り当てる
  • バッファーをゼロにします
  • ParentName.MaximumLength をバッファーのサイズ (バイト単位) に設定します。
  • ParentName.Length = 0 の設定
終了する前に、PEP は null で終わる文字列を ParentName.Buffer にコピーし、 parentName.Lengthsizeof(WCHAR) がコピーされた UNICODE 文字の数 (終端の UNICODE_NULLを含まない) のバイト数で更新する必要があります。

PEP では、 ParentName.Buffer 内のアドレスによって指される割り当てられたメモリを使用して、親名を指定する必要があります。 このメモリは事前に割り当てられるため、サイズを変更できません。 必要に応じて、 PARENTName.MaximumLength (終端の UNICODE_NULL 文字を含む) で指定された長さを超えないように、PEP は親名を切り捨てます。

[in/out] SubsystemName

このサブシステムの名前を保持するためのバッファー。 すべてのサブシステムにはサブシステム名があり、 SubsystemName は、特定のプラットフォームアイドル状態のコンテキスト内のすべてのサブシステム間で一意である必要があります。 サブシステムの SubsystemName を ParentName と同じにすることはできません

エントリの前に、カーネルは次のコマンドを実行します。

  • SubsystemName.Buffer に 64 WCHAR を事前に割り当てる[]
  • バッファーをゼロにします
  • SubsystemName.MaximumLength をバッファーのサイズ (バイト単位) に設定します。
  • SubsystemName.Length = 0 の設定
終了する前に、PEP は null で終わる文字列を SubsystemName.Buffer にコピーし、byte count が sizeof(WCHAR) の UNICODE 文字数 (終端のUNICODE_NULLを含まない) で SubsystemName.Length を更新する必要があります。

PEP では、サブシステム名を指定するには、 SubsystemName.Buffer のアドレスによって指されている割り当てられたメモリを使用する必要があります。 このメモリは事前に割り当てられるため、サイズを変更できません。 PEP は、必要に応じてサブシステム名の切り捨てを行い、 SubsystemName.MaximumLength (終端 のUNICODE_NULL 文字を含む) で指定された長さを超えないようにします。

[out] MetadataCount

この SoC サブシステムによって集計されたメタデータ キーと値の文字列ペアの数。

メタデータは省略可能です。 この SoC サブシステムのメタデータが報告されない場合、PEP は 0 を返します。

Flags

このメンバーは予約済みであり、0 に設定する必要があります。

要件

要件
サポートされている最小のクライアント Windows 10 以降でサポートされています。
Header pepfx.h (Pep_x.h を含む)

こちらもご覧ください

PEP_DPM_QUERY_SOC_SUBSYSTEM通知