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 驱动程序体系结构/设计指南/驱动程序编程技术/日志记录错误下的 DDK 文档中进行了介绍。

注解

NtQueryInformationThread 函数在操作系统内部,可能会从一个版本的 Windows 更改为另一个版本。 为了保持应用程序的兼容性,最好改用前面提到的公共函数。

如果使用 NtQueryInformationThread,请通过 运行时动态链接访问函数。 这样,代码就有机会在操作系统中更改或删除函数时正常响应。 但是,签名更改可能无法检测到。

此函数没有关联的导入库。 必须使用 LoadLibraryGetProcAddress 函数动态链接到 Ntdll.dll。

要求

要求
目标平台 Windows
标头 winternl.h
Library ntdll.lib
DLL ntdll.dll

另请参阅

GetThreadIOPendingFlag