KeQueryActiveProcessors 함수(wdm.h)
KeQueryActiveProcessors 루틴은 현재 활성 프로세서의 비트 마스크를 반환합니다.
통사론
KAFFINITY KeQueryActiveProcessors();
반환 값
KeQueryActiveProcessors 현재 활성 프로세서 집합을 나타내는 KAFFINITY 값을 반환합니다.
발언
호출자는 KeQueryActiveProcessors 프로세서를 비트에 연속적으로 매핑하거나 루틴이 호출될 때마다 동일한 매핑을 일관되게 사용한다고 가정할 수 없습니다. 반환 값에 유효한 유일한 용도는 설정된 비트 수를 계산하여 활성 프로세서 수를 결정하는 것입니다.
또한 호출자는 KeQueryActiveProcessors 반환된 값이 핫 추가 CPU 기능을 지원하는 Windows 버전에서 런타임 중에 변경될 수 있다는 점에 유의해야 합니다.
Windows 7 이상 버전의 Windows는 프로세서 그룹을 지원합니다. 프로세서 그룹에 대한 정보를 처리하도록 설계된 드라이버는 KeQueryActiveProcessors대신 프로세서 그룹을 지정하는 KeQueryGroupAffinity 루틴을 사용해야 합니다. 그러나 Windows 7 이상 버전의 Windows에서 KeQueryActiveProcessors 구현은 프로세서 그룹을 지원하지 않는 이전 버전의 Windows용으로 작성된 드라이버에 대한 호환성을 제공합니다. 이 구현에서 KeQueryActiveProcessors 그룹 0의 활성 논리 프로세서 집합을 지정하는 선호도 마스크를 반환합니다.
Windows Vista 이상 버전의 Windows에서는 모든 IRQL에서 이 루틴을 호출할 수 있습니다. 그러나 Windows Server 2003 및 이전 버전의 Windows에서는 이 루틴을 IRQL <= APC_LEVEL 호출해야 합니다.
KeNumberProcessors 커널 변수는 Windows Vista에서 SP1(서비스 팩 1), Windows Server 2008 이상 버전에서 사용되지 않습니다. KeNumberProcessors Windows Vista SP1부터 WDK 릴리스에 대한 WDK 헤더에 표시되지 않습니다. 그러나 변수는 커널에서 내보내지 않으므로 이전 플랫폼용으로 빌드된 드라이버는 중단되지 않습니다.
Windows Server 2008에는 Windows Datacenter 및 Enterprise Edition SKU에서 DHP(동적 하드웨어 분할)에 대한 지원이 포함되어 있습니다. DHP의 일부로 Windows Server 2008은 런타임에 CPU를 핫 추가할 수 있습니다. 핫 추가 CPU 환경에서는 런타임 동안 프로세서 수가 일정하게 유지되지 않을 수 있습니다.
따라서 Windows Server 2008에서 프로세서 수를 결정할 수 있는 코드는 커널 변수에 대한 직접 참조 대신 KeQueryActiveProcessors 사용해야 , KeNumberProcessors는.
현재 KeNumberProcessors 참조하는 코드를 검토하여 핫 추가 CPU 환경에서 CPU 개수 변경 내용을 수용하는지 확인합니다.
PNPCPU 도구를 사용하여 테스트를 위해 CPU를 핫 추가를 시뮬레이션할 수 있습니다.
#if (NTDDI_VERSION >= NTDDI_VISTA)
extern NTSYSAPI volatile CCHAR KeNumberProcessors;
#else
#if (NTDDI_VERSION >= NTDDI_WINXP)
extern NTSYSAPI CCHAR KeNumberProcessors;
#else
extern PCCHAR KeNumberProcessors;
#endif
#endif
Windows XP부터 KeNumberProcessors 플랫폼의 프로세서 수를 나타내는 8비트 정수 값입니다. 이전 버전의 Windows에서 KeNumberProcessors 플랫폼의 프로세서 수를 나타내는 8비트 정수 값에 대한 포인터입니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | wdm.h(Wdm.h, Ntddk.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 설명 섹션을 참조하세요. |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), IrqlKeApcLte1(wdm) |