PEP_QUERY_SOC_SUBSYSTEM 结构 (pep_x.h)

PEP_DPM_QUERY_SOC_SUBSYSTEM通知使用PEP_QUERY_SOC_SUBSYSTEM结构来收集有关芯片 (SoC) 子系统上的特定系统的基本信息。

语法

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

子系统索引,这是操作系统在给定 PlatformIdleStateIndex 的上下文中分配给每个子系统的唯一索引。

内核将此值初始化为零,并针对每个后续子系统静态信息通知递增该值。 值为 0 表示它是给定 PlatformIdleStateIndex 的第一个此类通知。 此字段旨在提供此通知实例之间的 PEP 上下文。 对于给定 PlatformIdleStateIndex ,它是唯一输入值因此通知实例而异的字段,PEP 可能会使用此值来查找子系统。

PEP 可以忽略此值。

[out] SubsystemHandle

PEP 可以选择为其赋值的上下文指针。 它将在此特定子系统的后续通知上接收指针。 在后续通知中,PEP 使用 PlatformIdleStateIndex 以及 SubsystemName 和/或 SubsystemHandle 来查找特定子系统的记帐数据。

默认情况下,如果此成员为零,则为 值。 此值被 OS 忽略,并且仅在通知中使用。

填充此成员不需要 PEP。

[in/out] ParentName

用于保存相应子系统的父名称的缓冲区。 每个子系统都有一个父级, 并且具有相同值 ParentName 的子系统被视为同级。 子系统同级层次结构是可选的。 在没有任何层次结构的情况下,所有子系统都是顶级子系统,并为 ParentName 指定一个通用值。 为了指示层次结构,顶级子系统指定一个通用 的 ParentName, 而每个非顶级子系统指定其父子系统的 SubsystemName for ParentName

在输入之前,内核将:

  • ParentName.Buffer[] 预分配 64 个 WCHAR
  • 零缓冲区
  • ParentName.MaximumLength 设置为缓冲区的大小(以字节为单位),以及
  • 设置 ParentName.Length = 0
在退出之前,PEP 必须将以 null 结尾的字符串复制到 ParentName.Buffer 中,并使用大小为 (WCHAR) 复制的 UNICODE 字符数(不包括终止UNICODE_NULL)的字节计数更新 ParentName.Length

PEP 必须使用 ParentName.Buffer 中的地址指向的已分配内存来提供父名称。 由于此内存是预先分配的,因此无法更改其大小。 如有必要,PEP 负责截断父名称,使其不超过 ParentName.MaximumLength (包括终止 UNICODE_NULL 字符) 中指定的长度。

[in/out] SubsystemName

用于保存此子系统名称的缓冲区。 每个子系统都有一个子系统名称, 并且 SubsystemName 在给定平台空闲状态的上下文中必须是唯一的。 子系统的 SubsystemName 不能与 ParentName 相同。

在输入之前,内核将:

  • SubsystemName.Buffer[] 预分配 64 个 WCHAR
  • 零缓冲区
  • SubsystemName.MaximumLength 设置为缓冲区的大小(以字节为单位),以及
  • 设置 SubsystemName.Length = 0
在退出之前,PEP 必须将以 null 结尾的字符串复制到 SubsystemName.Buffer 中,并使用字节计数(大小为 (WCHAR)更新 SubsystemName.Length) 复制的 UNICODE 字符数,不包括终止UNICODE_NULL

PEP 必须使用 SubsystemName.Buffer 中的地址指向的已分配内存来提供子系统名称。 由于此内存是预先分配的,因此无法更改其大小。 如有必要,PEP 负责截断子系统名称,使其不超过 SubsystemName.MaximumLength (包括终止 UNICODE_NULL 字符) 中指定的长度。

[out] MetadataCount

此 SoC 子系统统计的元数据键/值字符串对的数量。

元数据是可选的。 如果 PEP 不报告此 SoC 子系统的任何元数据,则 PEP 返回零。

Flags

此成员为保留成员,应设置为零。

要求

要求
最低受支持的客户端 从 Windows 10 开始支持。
标头 pep_x.h (包括 Pep_x.h)

另请参阅

PEP_DPM_QUERY_SOC_SUBSYSTEM通知