次の方法で共有


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 に設定 されます

非同期セッションの場合は、コールバック関数に渡される値をチェックします。 コールバック関数が返されるまで変数を解放しないでください。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 拡張エラー情報を取得するには、 GetLastError を呼び出します。

リターン コード 説明
ERROR_ACCESS_DENIED
呼び出し元には、ターゲット スレッドを開く十分な特権がありませんでした。
ERROR_INVALID_PARAMETER
入力パラメーターの 1 つが無効です。
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 で 1 つの項目を返します。

呼び出し元には、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

Wait Chain Traversal

WaitChainCallback