KeRevertToUserGroupAffinityThread 함수(wdm.h)

KeRevertToUserGroupAffinityThread 루틴은 스레드를 만들 때 호출 스레드의 그룹 선호도를 원래 값으로 복원합니다.

구문

void KeRevertToUserGroupAffinityThread(
  [in] PGROUP_AFFINITY PreviousAffinity
);

매개 변수

[in] PreviousAffinity

복원할 그룹 선호도에 대한 포인터입니다. 이 매개 변수는 그룹 번호와 선호도 마스크를 포함하는 GROUP_AFFINITY 구조를 가리킵니다. 선호도 마스크는 사용자 스레드가 실행할 수 있는 논리 프로세서 집합을 지정합니다.

반환 값

없음

설명

이 루틴은 호출 스레드의 그룹 번호 및 그룹 상대 선호도 마스크를 변경합니다. 그룹 번호 및 선호도 마스크는 스레드를 실행할 수 있는 프로세서 집합을 식별합니다. 성공하면 루틴은 스레드가 이 집합의 프로세서에서 실행되도록 예약합니다.

PreviousAffinity 매개 변수는 스레드에 대한 새 그룹 번호(그룹 멤버) 및 선호도 마스크(마스크 멤버)를 지정하는 GROUP_AFFINITY 구조를 가리킵니다. PreviousAffinity-Mask>가 0이 아닌 경우 KeRevertToUserGroupAffinityThread는 호출 스레드의 그룹 번호 및 선호도 마스크를 구조체의 값으로 설정합니다. PreviousAffinity-Mask>가 0이면 루틴은 스레드가 초기화될 때 그룹 번호 및 선호도 마스크를 원래 값으로 복원합니다.

프로세스는 한 번에 둘 이상의 그룹에 대한 선호도를 가질 수 있습니다. 그러나 스레드는 언제든지 하나의 그룹에만 할당할 수 있으며 해당 그룹은 항상 스레드 프로세스의 선호도에 있습니다.

스레드는 KeSetSystemGroupAffinityThread 루틴을 호출하여 할당된 그룹을 변경할 수 있습니다. KeSetSystemGroupAffinityThread를 하나 이상 호출한 후 스레드는 KeRevertToUserGroupAffinityThread를 호출하여 스레드가 생성되었을 때의 원래 그룹 선호도를 복원할 수 있습니다.

스레드를 만든 후 스레드가 KeSetSystemGroupAffinityThread를 처음 호출하지 않는 한 KeRevertToUserGroupAffinityThread에 대한 호출은 아무 효과가 없습니다(즉, 스레드의 그룹 번호 및 선호도 마스크는 변경되지 않은 상태로 유지됨). KeRevertToUserGroupAffinityThread를 호출한 후 스레드가 KeSetSystemGroupAffinityThread를 처음 호출하지 않는 한 KeRevertToUserGroupAffinityThread에 대한 두 번째 호출은 효과가 없습니다.

루틴은 다음이 true인 경우에만 *PreviousAffinity 에 지정된 값으로 그룹 번호 및 선호도 마스크를 변경합니다.

  • 그룹 번호가 유효합니다.
  • 선호도 마스크는 유효합니다(즉, 그룹의 논리 프로세서에 해당하는 마스크 비트만 설정됨).
  • 선호도 마스크에 지정된 프로세서 중 하나 이상이 활성화되어 있습니다.
이러한 조건이 충족되지 않으면 KeRevertToUserGroupAffinityThread에 대한 호출은 적용되지 않습니다.

관련 루틴인 KeRevertToUserAffinityThreadEx는 호출 스레드의 선호도 마스크를 변경하지만 이 루틴은 KeRevertToUserGroupAffinityThread와 달리 그룹 번호를 입력 매개 변수로 허용하지 않습니다. Windows 운영 체제의 Windows 7 이상 버전에서 KeRevertToUserAffinityThreadEx 는 선호도 마스크가 그룹을 지원하지 않는 이전 버전의 Windows에서 이 루틴의 동작과 호환되는 그룹 0의 프로세서를 참조한다고 가정합니다. 이 동작은 KeRevertToUserAffinityThreadEx 를 호출하고 그룹 지향 기능을 사용하지 않는 기존 드라이버가 둘 이상의 그룹이 있는 다중 프로세서 시스템에서 올바르게 실행되도록 합니다. 그러나 Windows 7 이상 버전의 Windows 운영 체제에서 그룹 지향 기능을 사용하는 드라이버는 KeRevertToUserAffinityThreadEx 대신 KeRevertToUserGroupAffinityThread를 호출해야 합니다.

KeRevertToUserGroupAffinityThread가 IRQL <= APC_LEVEL 호출에 성공하면 새(되돌리기) 그룹 선호도가 즉시 적용됩니다. 호출이 반환되면 호출 스레드가 새 그룹 선호도에 지정된 프로세서에서 이미 실행되고 있습니다. KeRevertToUserGroupAffinityThread가 IRQL = DISPATCH_LEVEL 호출에 성공하면 호출자가 DISPATCH_LEVEL 아래 IRQL을 낮출 때까지 보류 중인 프로세서 변경이 지연됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 및 이후 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Ntddk.h, Wdm.h, Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL(주의 섹션 참조).

추가 정보

GROUP_AFFINITY

KeRevertToUserAffinityThreadEx

KeSetSystemGroupAffinityThread