KeSetSystemAffinityThreadEx 함수(wdm.h)
KeSetSystemAffinityThreadEx 루틴은 현재 스레드의 시스템 선호도를 설정합니다.
통사론
KAFFINITY KeSetSystemAffinityThreadEx(
[in] KAFFINITY Affinity
);
매개 변수
[in] Affinity
현재 스레드의 새 시스템 선호도를 지정하는 KAFFINITY형식화된 변수입니다.
반환 값
KeSetSystemAffinityThreadEx 현재 스레드의 이전 시스템 선호도를 반환하거나 0을 반환하여 이전 시스템 선호도가 없음을 나타냅니다.
발언
KeSetSystemAffinityThreadEx 현재 스레드의 선호도 마스크를 변경합니다. 선호도 마스크는 스레드를 실행할 수 있는 프로세서 집합을 식별합니다. 성공하면 루틴은 스레드가 이 집합의 프로세서에서 실행되도록 예약합니다.
KeSetSystemAffinityThreadEx 호출자는 반환 값을 저장하고 나중에 이 값을 KeRevertToUserAffinityThreadEx 루틴에 전달하여 이전 선호도 마스크를 복원해야 합니다.
다중 프로세서 시스템에서 사용자 모드 스레드의 컨텍스트에서 실행되는 커널 모드 드라이버 루틴은 스레드의 선호도 마스크를 일시적으로 변경하기 위해 KeSetSystemAffinityThreadEx 호출해야 할 수 있습니다. 루틴이 종료되기 전에 KeRevertToUserAffinityThreadEx 호출하여 스레드의 선호도 마스크를 원래 값으로 복원해야 합니다.
사용자 선호도 용어는 사용자 모드 스레드의 원래 선호도를 나타냅니다. 커널 모드 드라이버에서 설정한 선호도를 시스템 선호도. KeSetSystemAffinityThreadEx 호출하면 스레드의 사용자 선호도가 시스템 선호도로 바뀝니다. 나중에 드라이버는 KeRevertToUserAffinityThreadEx 호출하고 이 반환 값(0)을 선호도 값으로 전달하여 사용자 선호도를 복원합니다.
또한 특정 선호도 마스크가 필요한 커널 모드 드라이버 루틴은 다른 선호도 마스크가 필요한 다른 커널 모드 루틴을 호출할 수 있습니다. 각 루틴은 KeSetSystemAffinityThreadEx 호출하여 새 선호도 마스크를 설정한 다음 KeRevertToUserAffinityThreadEx 호출하여 반환하기 전에 이전 선호도 마스크를 복원할 수 있습니다.
KeSetSystemAffinityThreadEx 루틴은 현재 스레드의 선호도 마스크를 선호도 값으로 변경합니다.
- 선호도 값은 유효합니다(즉, 논리 프로세서에 해당하는 마스크 비트만 설정됨).
- 선호도 값에 지정된 프로세서 중 하나 이상이 활성화되어 있습니다.
Windows 7 이상 버전의 Windows는 프로세서 그룹을 지원합니다. 프로세서 그룹에 대한 정보를 처리하도록 설계된 드라이버는 KeSetSystemAffinityThreadEx대신 프로세서 그룹을 지정하는 KeSetSystemGroupAffinityThread 루틴을 사용해야 합니다. 그러나 Windows 7 이상 버전의 Windows에서 KeSetSystemAffinityThreadEx 구현하면 프로세서 그룹을 지원하지 않는 이전 버전의 Windows용으로 작성된 드라이버에 대한 호환성이 제공됩니다. 이 구현에서 KeSetSystemAffinityThreadEx 스레드를 그룹 0에 할당하고 선호도 마스크를 사용하여 스레드를 실행할 수 있는 이 그룹의 논리 프로세서 집합을 지정합니다. 루틴은 이전 그룹 상대 선호도 마스크를 반환하지만 이전 그룹은 반환하지 않습니다.
KeSetSystemAffinityThreadEx IRQL <= APC_LEVEL 호출에 성공하면 새 선호도 마스크가 즉시 적용됩니다. 호출이 반환되면 호출 스레드가 이미 새 선호도 마스크에 지정된 프로세서에서 실행되고 있습니다. KeSetSystemAffinityThreadEx IRQL = DISPATCH_LEVEL 호출되고 호출이 성공하면 호출자가 DISPATCH_LEVEL 아래의 IRQL을 낮출 때까지 보류 중인 프로세서 변경이 지연됩니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 버전의 Windows에서 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL(주의 섹션 참조). |