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、ThreadPagePriorityThreadPowerThrottlingState

[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 (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訪問許可權,才能呼叫此例程。

通常,設定驅動程式建立線程的裝置和中繼驅動程式會從驅動程式建立的線程呼叫 KeSetBasePriorityThreadKeSetPriorityThread ,而不是呼叫 NtSetInformationThread。 不過,驅動程式可以呼叫 NtSetInformationThread ,以在該線程執行之前提高驅動程式建立線程的優先順序。

核心模式驅動程式可以使用 ThreadPagePriority 呼叫 NtSetInformationThread 函式,以指定線程的頁面優先順序。

為了協助改善系統效能,驅動程式應該使用 具有 ThreadPagePriority 的函式,降低執行背景作業的線程頁面優先順序,或存取預期很快就會再次存取的檔案和數據。 例如,反惡意代碼應用程式可能會降低掃描檔案中涉及的線程優先順序。

注意

如果呼叫此函式發生在核心模式中,您應該使用名稱 ZwSetInformationThread ,而不是 NtSetInformationThread

對於核心模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本在處理和解譯輸入參數的方式可能會有不同的行為。 如需例程 NtXxxZwXxx 版本之間的關聯性詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本

規格需求

需求
最低支援的用戶端 Windows 2000
目標平台 Universal
標頭 ntifs.h (包含 Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS、 PowerIrpDDis

另請參閱

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

使用原生系統服務例程的 Nt 和 Zw 版本