IoGetDeviceNumaNode 函数 (wdm.h)
IoGetDeviceNumaNode 例程获取设备的节点数。
语法
NTSTATUS IoGetDeviceNumaNode(
[in] PDEVICE_OBJECT Pdo,
[out] PUSHORT NodeNumber
);
参数
[in] Pdo
指向物理设备对象的指针(PDO)。 此参数指向表示物理设备的 DEVICE_OBJECT 结构。
[out] NodeNumber
指向例程写入节点号的位置(如果已知节点号)的指针。
返回值
如果调用成功,则 IoGetDeviceNumaNode 返回STATUS_SUCCESS。 可能的错误返回值包括:
返回代码 | 描述 |
---|---|
|
此设备的节点数未知。 |
|
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) |