다음을 통해 공유


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 매개 변수가 가리키는 위치에 0을 씁니다. 비 NUMA 아키텍처의 예로는 대칭 SMP(다중 프로세서 시스템)가 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

DEVICE_OBJECT

KeQueryHighestNodeNumber