Função GetThreadWaitChain (wct.h)
Recupera a cadeia de espera para o thread especificado.
Sintaxe
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
);
Parâmetros
[in] WctHandle
Um identificador para a sessão WCT criada pela função OpenThreadWaitChainSession .
[in, optional] Context
Um ponteiro para uma estrutura de contexto definida pelo aplicativo a ser passada para a função de retorno de chamada para uma sessão assíncrona.
[in] Flags
As opções de recuperação da cadeia de espera. Esse parâmetro pode ser um dos valores a seguir.
[in] ThreadId
O identificador do thread.
[in, out] NodeCount
Na entrada, um número de 1 a WCT_MAX_NODE_COUNT que especifica o número de nós na cadeia de espera. No retorno, o número de nós recuperados. Se a matriz não puder conter todos os nós da cadeia de espera, a função falhará, GetLastError retornará ERROR_MORE_DATA e esse parâmetro receberá o número de elementos de matriz necessários para conter todos os nós.
Para sessões assíncronas, marcar o valor passado para a função de retorno de chamada. Não libere a variável até que a função de retorno de chamada tenha retornado.
[out] NodeInfoArray
Uma matriz de estruturas WAITCHAIN_NODE_INFO que recebe a cadeia de espera.
Para sessões assíncronas, marcar o valor passado para a função de retorno de chamada. Não libere a matriz até que a função de retorno de chamada tenha retornado.
[out] IsCycle
Se a função detectar um deadlock, essa variável será definida como TRUE; caso contrário, ele será definido como FALSE.
Para sessões assíncronas, marcar o valor passado para a função de retorno de chamada. Não libere a variável até que a função de retorno de chamada tenha retornado.
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para recuperar informações de erro estendidas, chame GetLastError.
Código de retorno | Descrição |
---|---|
|
O chamador não tinha privilégio suficiente para abrir um thread de destino. |
|
Um dos parâmetros de entrada é inválido. |
|
A sessão WCT foi aberta no modo assíncrono. Os resultados serão retornados por meio da função de retorno de chamada WaitChainCallback . |
|
O buffer NodeInfoArray não é grande o suficiente para conter todos os nós na cadeia de espera. O parâmetro NodeCount contém o número de nós na cadeia. A cadeia de espera retornada ainda é válida. |
|
O sistema operacional não está fornecendo esse serviço. |
|
Não foi possível localizar o thread especificado. |
|
O número de nós excede WCT_MAX_NODE_COUNT. A cadeia de espera retornada ainda é válida. |
Comentários
Se a sessão for assíncrona, a função retornará FALSE e GetLastError retornará ERROR_IO_PENDING. Para obter os resultados, consulte a função de retorno de chamada WaitChainCallback .
Se o thread especificado não estiver bloqueado ou estiver bloqueado em um elemento de sincronização sem suporte, a função retornará um único item em NodeInfoArray.
O chamador deve ter o privilégio SE_DEBUG_NAME. Se o chamador tiver privilégios insuficientes, a função falhará se o primeiro thread não puder ser acessado. Caso contrário, o último nó na matriz terá seu membro ObjectStatus definido como WctStatusNoAcces.
Se qualquer subconjunto de nós na matriz formar um ciclo, a função definirá o parâmetro IsCycle como TRUE.
As informações da cadeia de espera são dinâmicas; estava correto quando a função foi chamada, mas pode estar desatualizada no momento em que é revisada pelo chamador.
Exemplos
Para obter um exemplo, consulte Usando o WCT.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wct.h |
Biblioteca | Advapi32.lib |
DLL | Advapi32.dll |