IoGetDeviceNumaNode 函数 (wdm.h)

IoGetDeviceNumaNode 例程获取设备的节点数。

语法

NTSTATUS IoGetDeviceNumaNode(
  [in]  PDEVICE_OBJECT Pdo,
  [out] PUSHORT        NodeNumber
);

参数

[in] Pdo

指向物理设备对象的指针(PDO)。 此参数指向表示物理设备的 DEVICE_OBJECT 结构。

[out] NodeNumber

指向例程写入节点号的位置(如果已知节点号)的指针。

返回值

如果调用成功,则 IoGetDeviceNumaNode 返回STATUS_SUCCESS。 可能的错误返回值包括:

返回代码 描述
STATUS_NOT_FOUND
此设备的节点数未知。
STATUS_INVALID_PARAMETER
Pdo 参数 NULL 或未指向有效的设备对象。

言论

在非统一内存访问(NUMA)多处理器体系结构中,节点是一组处理器,可共享对内存区域的快速访问。 内存访问不统一,因为处理器可以比在其他节点中访问内存更快访问其节点中的内存。

连接到特定节点的设备(例如,网络控制器或存储控制器)可以比访问其他节点中的内存更快访问此节点中的内存。 Pdo 参数指向表示设备和节点之间的总线连接的 PDO。

如果 NUMA 多处理器系统包含 n 节点,则节点数从 0 到 n-1。 若要获取最高的节点数,请调用 KeQueryHighestNodeNumber 例程。

初始化系统后,节点计数将保持不变,同时系统继续运行。 此计数可能包括仅限内存的节点,这些节点包含内存,但没有活动的逻辑处理器。 在节点中的第一个处理器开始运行之前,所有逻辑处理器都处于非活动状态的节点实际上是一个仅内存节点。 不要假定设备连接到的节点包含活动处理器。

如果系统没有 NUMA 体系结构,则例程会将零写入 NodeNumber 参数指向的位置。 非 NUMA 体系结构的示例是对称多处理器系统(SMP)。

要求

要求 价值
最低支持的客户端 在 Windows 7 及更高版本的 Windows作系统中可用。
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

DEVICE_OBJECT

KeQueryHighestNodeNumber