NtSetInformationThread 함수(ntifs.h)
NtSetInformationThread 루틴은 스레드의 우선 순위를 설정합니다.
통사론
__kernel_entry NTSYSCALLAPI NTSTATUS NtSetInformationThread(
[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
설정할 정보를 지정하는 변수에 대한 포인터입니다.
threadInformationClass threadPriority 경우 이 값은 > LOW_PRIORITY <= HIGH_PRIORITY.
threadInformationClass ThreadBasePriority 경우 이 값은 시스템의 유효한 기본 우선 순위 범위와 지정된 스레드의 원래 우선 순위 클래스에 속해야 합니다. 즉, 스레드의 우선 순위 클래스가 변수인 경우 스레드의 기본 우선 순위를 실시간 우선 순위 값으로 다시 설정할 수 없으며 그 반대의 경우도 마찬가지입니다.
threadInformationClass threadPagePriority 경우 이 값은 PAGE_PRIORITY_INFORMATION 구조에 대한 포인터이며 ntddk.h를 참조하세요. PagePriority 멤버 값은 다음 값 중 하나여야 합니다.
threadInformationClass threadPowerThrottlingState 경우 이 값은 POWER_THROTTLING_THREAD_STATE 구조체에 대한 포인터입니다. ntddk.h를 참조하세요. PagePriority 멤버 값은 다음 값 중 하나여야 합니다.
값 | 의미 |
---|---|
MEMORY_PRIORITY_VERY_LOW (1) | 메모리 우선 순위가 매우 낮습니다. |
MEMORY_PRIORITY_LOW (2) | 메모리 우선 순위가 낮습니다. |
MEMORY_PRIORITY_MEDIUM (3) | 중간 메모리 우선 순위입니다. |
MEMORY_PRIORITY_BELOW_NORMAL (4) | 일반 메모리 우선 순위보다 낮습니다. |
MEMORY_PRIORITY_NORMAL (5) | 일반 메모리 우선 순위입니다. 시스템의 모든 스레드 및 프로세스에 대한 기본 우선 순위입니다. |
[in] ThreadInformationLength
threadInformation 크기(바이트)입니다.
반환 값
NtSetInformationThread 성공 시 STATUS_SUCCESS 반환하거나 실패 시 적절한 NTSTATUS 오류 코드를 반환합니다. 가능한 오류 코드에는 STATUS_INFO_LENGTH_MISMATCH 또는 STATUS_INVALID_PARAMETER 포함됩니다.
발언
NtSetInformationThread 상위 수준 드라이버에서 호출하여 핸들이 있는 스레드의 우선 순위를 설정할 수 있습니다.
호출자는 이 루틴을 호출하려면 지정된 스레드에 대한 THREAD_SET_INFORMATION 액세스 권한이 있어야 합니다.
일반적으로 드라이버에서 만든 스레드를 설정하는 디바이스 및 중간 드라이버는 NtSetInformationThread호출하지 않고 KeSetBasePriorityThread 호출하거나 드라이버에서 만든 스레드에서 KeSetPriorityThread호출합니다. 그러나 드라이버는 NtSetInformationThread 호출하여 해당 스레드가 실행되기 전에 드라이버에서 만든 스레드의 우선 순위를 높일 수 있습니다.
커널 모드 드라이버는 ThreadPagePriorityNtSetInformationThread 함수를 호출하여 스레드의 페이지 우선 순위를 지정할 수 있습니다.
시스템 성능을 향상시키려면 드라이버는 ThreadPagePriority 함수를 사용하여 백그라운드 작업을 수행하는 스레드의 페이지 우선 순위를 낮추거나 곧 다시 액세스할 것으로 예상되지 않는 파일 및 데이터에 액세스해야 합니다. 예를 들어 맬웨어 방지 애플리케이션은 파일 검색과 관련된 스레드의 우선 순위를 낮출 수 있습니다.
메모
이 함수에 대한 호출이 커널 모드에서 발생하는 경우 NtSetInformationThread 대신 ZwSetInformationThread 이름을 사용해야 합니다.
커널 모드 드라이버의 호출의 경우 NtXxx 및 ZwXxx 버전의 Windows Native System Services 루틴은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. NtXxx 및 ZwXxx 루틴 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴Nt 및 Zw 버전 사용을 참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 |
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs, PowerIrpDDis |
참고 항목
네이티브 시스템 서비스 루틴Nt 및 Zw 버전을 사용합니다.