GetLogicalProcessorInformationEx 函数 (sysinfoapi.h)

检索有关逻辑处理器和相关硬件关系的信息。

语法

BOOL GetLogicalProcessorInformationEx(
  [in]            LOGICAL_PROCESSOR_RELATIONSHIP           RelationshipType,
  [out, optional] PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Buffer,
  [in, out]       PDWORD                                   ReturnedLength
);

参数

[in] RelationshipType

要检索的关系类型。 此参数可以是以下 LOGICAL_PROCESSOR_RELATIONSHIP 值之一。

含义
RelationProcessorCore
0
检索有关共享单个处理器核心的逻辑处理器的信息。
RelationNumaNode
1
检索属于同一 NUMA 节点的逻辑处理器的相关信息。
RelationCache
2
检索有关共享缓存的逻辑处理器的信息。
RelationProcessorPackage
3
检索有关共享物理包的逻辑处理器的信息。
RelationGroup
4
检索有关共享处理器组的逻辑处理器的信息。
RelationProcessorDie
5
检索有关共享处理器模具的逻辑处理器的信息。
RelationNumaNodeEx
6
检索属于同一 NUMA 节点 (具有完全关联) 的逻辑处理器的信息。
RelationProcessorModule
7
检索有关共享处理器模块的逻辑处理器的信息。
RelationAll
0xffff
检索有关所有关系类型的逻辑处理器的信息, (缓存、NUMA 节点、处理器核心、物理包、处理器组、处理器模具和处理器模块) 。

[out, optional] Buffer

指向接收大小可变SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX结构的序列 的缓冲区的 指针。 如果函数失败,则此缓冲区的内容未定义。

[in, out] ReturnedLength

在输入时,指定 Buffer 指向的 缓冲区的长度(以字节为单位)。 如果缓冲区足够大,足以包含所有数据,则此函数成功,并将 ReturnedLength 设置为返回的字节数。 如果缓冲区不够大,无法包含所有数据,则函数会失败, GetLastError 将返回ERROR_INSUFFICIENT_BUFFER,并将 ReturnedLength 设置为包含所有数据所需的缓冲区长度。 如果函数失败并出现除 ERROR_INSUFFICIENT_BUFFER 以外的错误,则 ReturnedLength 的值未定义。

返回值

如果函数成功,则返回值为 TRUE,并且至少将一个 SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX 结构写入输出缓冲区。

如果函数失败,则返回值为 FALSE。 要获得更多的错误信息,请调用 GetLastError。

注解

如果在 WOW64 下运行的 32 位进程在具有 64 个以上处理器的系统上调用此函数,则函数返回的某些处理器关联掩码可能不正确。 这是因为表示所有 64 个处理器的 64 位 KAFFINITY 结构的高阶 DWORD 被“折叠”到调用方缓冲区中的 32 位 KAFFINITY 结构中。 因此,处理器 32 到 63 的关联掩码被错误地表示为处理器 0 到 31 的掩码的副本。 此外,处理器 32 到 63 的关联掩码错误地表示为处理器 0 到 31 的掩码的副本。 此外,在PROCESSOR_GROUP_INFO结构中报告的所有每组 ActiveProcessorCountMaximumProcessorCount 值的总 可能会排除某些活动逻辑处理器。

当使用关系类型 RelationProcessorCore 调用此函数时,它将为系统每个处理器组中的每个活动处理器核心返回 PROCESSOR_RELATIONSHIP 结构。 这是设计使然,因为未加入的 32 位线程可以在给定组中的任何逻辑处理器上运行,包括处理器 32 到 63。 32 位调用方可以使用 PROCESSOR_RELATIONSHIP 结构的总计数来确定系统上活动处理器核心的实际数量。 但是,不能将 32 位线程的相关性显式设置为任何处理器组的逻辑处理器 32 到 63。

若要编译使用此函数的应用程序,请设置 _WIN32_WINNT >= 0x0601。 有关详细信息,请参阅 使用 Windows 标头

从 Windows Server 2022 (21H2 开始的行为,内部版本 20348)

已修改此函数和其他 NUMA 函数的行为,以便更好地支持节点包含 64 个以上处理器的系统。 有关此更改的详细信息,包括有关启用此 API 的旧行为的信息,请参阅 NUMA 支持

RelationNumaNode 的请求将返回NUMA_NODE_RELATIONSHIP结构,这些结构仅包含其主组中节点的相关性。 GroupCount 值为 1,结构大小是固定的。

RelationNumaNodeExRelationAll 的请求将返回NUMA_NODE_RELATIONSHIP结构,这些结构包含所有组上节点的地缘数组。 GroupCount 报告关联数,结构大小可变。

要求

要求
最低受支持的客户端 Windows 7 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 sysinfoapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX