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)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

DEVICE_OBJECT

KeQueryHighestNodeNumber