Функция 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