ZwSetInformationThread 함수(ntddk.h)

ZwSetInformationThread 루틴은 스레드의 우선 순위를 설정합니다.

구문

NTSYSAPI NTSTATUS ZwSetInformationThread(
  [in] HANDLE          ThreadHandle,
  [in] THREADINFOCLASS ThreadInformationClass,
  [in] PVOID           ThreadInformation,
  [in] ULONG           ThreadInformationLength
);

매개 변수

[in] ThreadHandle

스레드 개체에 대한 핸들입니다. 새 스레드를 만들고 핸들을 얻으려면 PsCreateSystemThread를 호출합니다. 현재 스레드를 지정하려면 ZwCurrentThread 매크로를 사용합니다.

[in] ThreadInformationClass

THREADINFOCLASS 열거형(ntddk.h 참조), ThreadPriority, ThreadBasePriority, ThreadPagePriority 또는 ThreadPowerThrottlingState의 시스템 정의 값 중 하나입니다.

[in] ThreadInformation

설정할 정보를 지정하는 변수에 대한 포인터입니다.

ThreadInformationClassThreadPriority인 경우 이 값은 LOW_PRIORITY 및 <= HIGH_PRIORITY.>

ThreadInformationClassThreadBasePriority인 경우 이 값은 시스템의 유효한 기본 우선 순위 범위와 지정된 스레드에 대한 원래 우선 순위 클래스에 속해야 합니다. 즉, 스레드의 우선 순위 클래스가 가변적인 경우 해당 스레드의 기본 우선 순위는 실시간 우선 순위 값으로 다시 설정할 수 없으며 그 반대의 경우도 마찬가지입니다.

ThreadInformationClassThreadPagePriority인 경우 이 값은 PAGE_PRIORITY_INFORMATION 구조체에 대한 포인터입니다. ntddk.h를 참조하세요. PagePriority 멤버 값은 다음 값 중 하나여야 합니다.

ThreadInformationClassThreadPowerThrottlingState인 경우 이 값은 POWER_THROTTLING_THREAD_STATE 구조체에 대한 포인터입니다. ntddk.h를 참조하세요. PagePriority 멤버 값은 다음 값 중 하나여야 합니다.

의미
MEMORY_PRIORITY_VERY_LOW 메모리 우선 순위가 매우 낮습니다.
MEMORY_PRIORITY_LOW 메모리 우선 순위가 낮습니다.
MEMORY_PRIORITY_MEDIUM 중간 메모리 우선 순위입니다.
MEMORY_PRIORITY_BELOW_NORMAL 일반 메모리 우선 순위보다 낮습니다.
MEMORY_PRIORITY_NORMAL 일반 메모리 우선 순위입니다. 이는 시스템의 모든 스레드 및 프로세스에 대한 기본 우선 순위입니다.

[in] ThreadInformationLength

ThreadInformation의 크기(바이트)입니다.

반환 값

ZwSetInformationThread 는 성공 시 STATUS_SUCCESS 반환하거나 실패 시 적절한 NTSTATUS 오류 코드를 반환합니다. 가능한 오류 코드에는 STATUS_INFO_LENGTH_MISMATCH 또는 STATUS_INVALID_PARAMETER 포함됩니다.

설명

ZwSetInformationThread 는 상위 수준 드라이버에서 호출하여 핸들이 있는 스레드의 우선 순위를 설정할 수 있습니다.

이 루틴을 호출하려면 호출자에게 지정된 스레드에 대한 THREAD_SET_INFORMATION 액세스 권한이 있어야 합니다.

일반적으로 드라이버에서 만든 스레드를 설정하는 디바이스 및 중간 드라이버는 ZwSetInformationThread를 호출하는 대신 드라이버에서 만든 스레드에서 KeSetBasePriorityThread 또는 KeSetPriorityThread를 호출합니다. 그러나 드라이버는 ZwSetInformationThread 를 호출하여 해당 스레드가 실행되기 전에 드라이버에서 만든 스레드의 우선 순위를 높일 수 있습니다.

커널 모드 드라이버는 ThreadPagePriority를 사용하여 ZwSetInformationThread 함수를 호출하여 스레드의 페이지 우선 순위를 지정할 수 있습니다.

시스템 성능을 향상시키기 위해 드라이버는 ThreadPagePriority 와 함께 함수를 사용하여 백그라운드 작업을 수행하는 스레드의 페이지 우선 순위를 낮추거나 곧 다시 액세스할 것으로 예상되지 않는 파일 및 데이터에 액세스해야 합니다. 예를 들어 맬웨어 방지 애플리케이션은 파일 검사와 관련된 스레드의 우선 순위를 낮출 수 있습니다.

스레드의 페이지 우선 순위를 확인하려면 ZwQueryInformationThread를 호출합니다.

이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 ZwSetInformationThread 대신 NtSetInformationThread라는 이름을 사용해야 합니다.

커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxxZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용