共用方式為


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) 、 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 記憶體優先順序很低。
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訪問許可權,才能呼叫這個例程。

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

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

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

若要判斷線程的頁面優先順序,請呼叫 ZwQueryInformationThread

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

針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxxZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本

規格需求

需求
目標平台 Universal
標頭 ntddk.h (包含 Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS (storport) PowerIrpDDis (wdm)

另請參閱

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

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