共用方式為


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)、ThreadPriorityThreadBasePriorityThreadPagePriorityThreadPowerThrottlingState

[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 呼叫 NtSetInformationTh readthread 函式,以指定線程的頁面優先順序。

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

注意

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

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

要求

要求 價值
最低支援的用戶端 Windows 2000
目標平臺 普遍
標頭 ntifs.h (include Ntddk.h, Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs, PowerIrpDDis

另請參閱

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

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