다음을 통해 공유


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
out-of-proc 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
입력 매개 변수 중 하나가 잘못되었습니다.
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
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

OpenThreadWaitChainSession

WAITCHAIN_NODE_INFO

대기 체인 통과

WaitChainCallback