IoGetDeviceNumaNode 函式 (wdm.h)
IoGetDeviceNumaNode 例程會取得裝置的節點編號。
語法
NTSTATUS IoGetDeviceNumaNode(
[in] PDEVICE_OBJECT Pdo,
[out] PUSHORT NodeNumber
);
參數
[in] Pdo
實體裝置物件的指標, (PDO) 。 此參數指向代表實體裝置 的DEVICE_OBJECT 結構。
[out] NodeNumber
如果已知節點編號,則例程寫入節點編號的位置指標。
傳回值
如果呼叫成功,IoGetDeviceNumaNode 會傳回STATUS_SUCCESS。 可能的錯誤傳回值包括下列各項:
傳回碼 | Description |
---|---|
|
此裝置的節點編號未知。 |
|
Pdo 參數為 NULL,或未指向有效的裝置物件。 |
備註
在非統一記憶體存取 (NUMA) 多處理器架構中,節點是可共用記憶體區域快速存取的處理器集合。 記憶體存取是非統一的,因為處理器可以比存取其他節點中的記憶體更快存取其節點中的記憶體。
例如,連線到特定節點的網路控制站或記憶體控制器) (可以比存取其他節點記憶體還要快的網路控制站或記憶體控制器,更快速地存取此節點中的記憶體。 Pdo 參數指向 PDO,代表裝置與節點之間的總線連線。
如果 NUMA 多處理器系統包含 n 個節點,則節點編號是從 0 到 n-1。 若要取得最高的節點編號,請呼叫 KeQueryHighestNodeNumber 例程。
初始化系統之後,當系統繼續執行時,節點計數會維持固定狀態。 此計數可能包含僅限記憶體的節點,也就是包含記憶體但沒有作用中邏輯處理器的節點。 在節點中的第一個處理器開始執行之前,所有邏輯處理器都處於非使用中狀態的節點,實際上是僅限記憶體的節點。 請勿假設裝置所連接的節點包含作用中的處理器。
如果系統沒有 NUMA 架構,例程會將零寫入 NodeNumber 參數指向的位置。 非 NUMA 架構的範例是對稱多處理器系統 (SMP) 。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows 7 和更新版本的 Windows 作業系統中使用。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDDIs (storport) 、 PowerIrpDDis (wdm) |