PEP_QUERY_SOC_SUBSYSTEM结构(pep_x.h)

PEP_QUERY_SOC_SUBSYSTEM 结构由 PEP_DPM_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

子系统索引,它是 OS 分配给给定 PlatformIdleStateIndex上下文中的每个子系统的唯一索引。

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

PEP 可以忽略此值。

[out] SubsystemHandle

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

如果此成员为零,则默认值为零。 OS 忽略此值,仅在通知中使用。

填充此成员不需要 PEP。

[in/out] ParentName

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

在输入之前,内核将:

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

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,并使用字节计数更新 SubsystemName.Length,该字节计数 sizeof(WCHAR) 复制的 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 通知