(wct.h) GetThreadWaitChain 函式
擷取指定線程的等候鏈結。
語法
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
等候鏈結擷取選項。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
列舉跨進程 MTA COM 伺服器的所有線程,以尋找正確的線程標識碼。 |
|
從其他進程擷取重要區段資訊。 |
|
遵循等候鏈結進入其他進程。 否則,函式會報告不同進程中的第一個線程,但不會擷取其他資訊。 |
[in] ThreadId
線程的標識碼。
[in, out] NodeCount
在輸入時,從 1 到 WCT_MAX_NODE_COUNT的數位,指定等候鏈結中的節點數目。 傳回時,擷取的節點數目。 如果陣列不能包含等候鏈結的所有節點,則函式會失敗, GetLastError 會傳回ERROR_MORE_DATA,而此參數會接收包含所有節點所需的數位元素數目。
針對異步會話,請檢查傳遞至回調函式的值。 在回呼函式傳回之前,請勿釋放變數。
[out] NodeInfoArray
接收等候鏈 結之WAITCHAIN_NODE_INFO 結構的陣列。
針對異步會話,請檢查傳遞至回調函式的值。 在回呼函式傳回之前,請勿釋放陣列。
[out] IsCycle
如果函式偵測到死結,此變數會設定為 TRUE;否則,它會設定為 FALSE。
針對異步會話,請檢查傳遞至回調函式的值。 在回呼函式傳回之前,請勿釋放變數。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要擷取擴充的錯誤資訊,請呼叫 GetLastError。
傳回碼 | Description |
---|---|
|
呼叫端沒有足夠的許可權可開啟目標線程。 |
|
其中一個輸入參數無效。 |
|
WCT 工作階段是以異步模式開啟。 結果會透過 WaitChainCallback 回 呼函式傳回。 |
|
NodeInfoArray 緩衝區不夠大,無法包含等候鏈結中的所有節點。 NodeCount 參數包含鏈結中的節點數目。 傳回的等候鏈結仍然有效。 |
|
操作系統未提供此服務。 |
|
無法找到指定的線程。 |
|
節點數目超過 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 |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |