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