Share via


ntQueryInformationThread 函式 (winternl.h)

[NtQueryInformationThread 可能會在未來的 Windows 版本中變更或無法使用。 應用程式應該使用本主題所列的替代函式。]

擷取指定線程的相關信息。

語法

__kernel_entry NTSTATUS NtQueryInformationThread(
  [in]            HANDLE          ThreadHandle,
  [in]            THREADINFOCLASS ThreadInformationClass,
  [in, out]       PVOID           ThreadInformation,
  [in]            ULONG           ThreadInformationLength,
  [out, optional] PULONG          ReturnLength
);

參數

[in] ThreadHandle

線程的句柄,關於要要求的資訊。

[in] ThreadInformationClass

如果此參數是 THREADINFOCLASS 列舉的 ThreadIsIoPending 值,函式會判斷線程是否有任何 I/O 作業擱置中。

請改用公用函式 GetThreadIOPendingFlag 來取得此資訊。

如果此參數是 THREADINFOCLASS 列舉的 ThreadQuerySetWin32StartAddress 值,此函式會傳回線程的開始位址。 請注意,在 Windows Vista 之前的 Windows 版本上,傳回的開始位址只有在線程開始執行之前才可靠。

如果此參數是 THREADINFOCLASS 列舉的 ThreadSubsystemInformation 值,則函式會擷取指出線程子系統類型的SUBSYSTEM_INFORMATION_TYPE值。 ThreadInformation 參數所指向的緩衝區應該夠大,足以保存單一SUBSYSTEM_INFORMATION_TYPE列舉。

[in, out] ThreadInformation

函式寫入所要求信息的緩衝區指標。 如果為 ThreadInformationClass 參數指定 ThreadIsIoPending,這個緩衝區必須夠大,才能保存 ULONG 值,這表示指定的線程是否有擱置的 I/O 要求。 如果此值等於零,則沒有任何 I/O 作業擱置中;否則,如果值為非零值,則線程會暫止 I/O 作業。

請改用公用函式 GetThreadIOPendingFlag 來取得此資訊。

如果為 ThreadInformationClass 參數指定 ThreadQuerySetWin32StartAddress,這個緩衝區必須夠大,才能保存 PVOID 值,這是線程的開始位址。

[in] ThreadInformationLength

ThreadInformation 參數所指向的緩衝區大小,以位元組為單位。

[out, optional] ReturnLength

函式傳回所要求資訊大小的變數指標。 如果函式成功,這是寫入 ThreadInformation 參數所指向之緩衝區的資訊大小,但如果緩衝區太小,這是成功接收資訊所需的緩衝區大小下限。

傳回值

傳回NTSTATUS成功或錯誤碼。

NTSTATUS 錯誤碼的表單和重要性會列在 DDK 中提供的 Ntstatus.h 頭檔中,並在 Kernel-Mode Driver Architecture / Design Guide / Driver Programming Techniques / Logging Errors 底下的 DDK 檔中說明。

備註

NtQueryInformationThread 函式是操作系統內部的,而且可能會從某個版本的 Windows 變更為另一個版本。 若要維護應用程式的相容性,最好改用先前所述的公用函式。

如果您使用 NtQueryInformationThread,請透過 運行時間動態連結來存取函式。 這可讓您的程式代碼有機會在操作系統中變更或移除函式時正常回應。 不過,簽章變更可能無法偵測。

此函式沒有相關聯的匯入連結庫。 您必須使用 LoadLibraryGetProcAddress 函式,動態連結至 Ntdll.dll。

規格需求

需求
目標平台 Windows
標頭 winternl.h
程式庫 ntdll.lib
Dll ntdll.dll

另請參閱

GetThreadIOPendingFlag