getThreadWaitChain 函数 (wct.h)

检索指定线程的等待链。

语法

BOOL GetThreadWaitChain(
  [in]           HWCT                 WctHandle,
  [in, optional] DWORD_PTR            Context,
  [in]           DWORD                Flags,
  [in]           DWORD                ThreadId,
  [in, out]      LPDWORD              NodeCount,
  [out]          PWAITCHAIN_NODE_INFO NodeInfoArray,
  [out]          LPBOOL               IsCycle
);

参数

[in] WctHandle

由 OpenThreadWaitChainSession 函数创建的 WCT 会话的句柄。

[in, optional] Context

指向要传递给异步会话的回调函数的应用程序定义的上下文结构的指针。

[in] Flags

等待链检索选项。 此参数可以是下列多个值之一。

含义
WCT_OUT_OF_PROC_COM_FLAG
枚举进程外 MTA COM 服务器的所有线程以查找正确的线程标识符。
WCT_OUT_OF_PROC_CS_FLAG
从其他进程检索关键节信息。
WCT_OUT_OF_PROC_FLAG
遵循等待链进入其他进程。 否则,该函数报告不同进程中的第一个线程,但不检索其他信息。

[in] ThreadId

线程的标识符。

[in, out] NodeCount

输入时,一个从 1 到 WCT_MAX_NODE_COUNT的数字,指定等待链中的节点数。 返回时,检索到的节点数。 如果数组不能包含等待链的所有节点,则函数会失败, GetLastError 将返回ERROR_MORE_DATA,并且此参数接收包含所有节点所需的数组元素数。

对于异步会话,检查传递给回调函数的值。 在返回回调函数之前,不要释放变量。

[out] NodeInfoArray

接收等待链 的WAITCHAIN_NODE_INFO 结构的数组。

对于异步会话,检查传递给回调函数的值。 在返回回调函数之前,请勿释放数组。

[out] IsCycle

如果函数检测到死锁,则此变量设置为 TRUE;否则,它设置为 FALSE

对于异步会话,检查传递给回调函数的值。 在返回回调函数之前,不要释放变量。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 若要检索扩展的错误信息,请调用 GetLastError

返回代码 说明
ERROR_ACCESS_DENIED
调用方没有足够的权限打开目标线程。
ERROR_INVALID_PARAMETER
其中一个输入参数无效。
ERROR_IO_PENDING
WCT 会话以异步模式打开。 结果将通过 WaitChainCallback 回调函数返回。
ERROR_MORE_DATA
NodeInfoArray 缓冲区不够大,无法包含等待链中的所有节点。 NodeCount 参数包含链中的节点数。 返回的等待链仍然有效。
ERROR_NOT_SUPPORTED
操作系统未提供此服务。
ERROR_OBJECT_NOT_FOUND
无法找到指定的线程。
ERROR_TOO_MANY_THREADS
节点数超过 WCT_MAX_NODE_COUNT。 返回的等待链仍然有效。

注解

如果会话是异步的,则函数返回 FALSE,GetLastError 返回ERROR_IO_PENDING。 若要获取结果,请参阅 WaitChainCallback 回调函数。

如果未阻止指定的线程,或者在不受支持的同步元素上被阻止,则函数在 NodeInfoArray 中返回单个项。

调用方必须具有SE_DEBUG_NAME权限。 如果调用方的权限不足,则如果无法访问第一个线程,函数将失败。 否则,数组中的最后一个节点的 ObjectStatus 成员将设置为 WctStatusNoAcces。

如果数组中的任何节点子集形成一个循环,该函数会将 IsCycle 参数设置为 TRUE

等待链信息是动态的;调用函数时,它是正确的,但到调用方查看它时,它可能已过期。

示例

有关示例,请参阅 使用 WCT

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wct.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

OpenThreadWaitChainSession

WAITCHAIN_NODE_INFO

等待链遍历

WaitChainCallback