Condividi tramite


Funzione GetThreadWaitChain (wct.h)

Recupera la catena di attesa per il thread specificato.

Sintassi

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
);

Parametri

[in] WctHandle

Handle per la sessione WCT creata dalla funzione OpenThreadWaitChainSession .

[in, optional] Context

Puntatore a una struttura di contesto definita dall'applicazione da passare alla funzione di callback per una sessione asincrona.

[in] Flags

Opzioni di recupero della catena di attesa. Questo parametro può essere uno dei valori seguenti.

Valore Significato
WCT_OUT_OF_PROC_COM_FLAG
Enumera tutti i thread di un server COM MTA out-of-proc per trovare l'identificatore di thread corretto.
WCT_OUT_OF_PROC_CS_FLAG
Recupera le informazioni della sezione critica da altri processi.
WCT_OUT_OF_PROC_FLAG
Segue la catena di attesa in altri processi. In caso contrario, la funzione segnala il primo thread in un processo diverso, ma non recupera informazioni aggiuntive.

[in] ThreadId

Identificatore del thread.

[in, out] NodeCount

In input, un numero compreso tra 1 e WCT_MAX_NODE_COUNT che specifica il numero di nodi nella catena di attesa. In caso di ritorno, il numero di nodi recuperati. Se la matrice non può contenere tutti i nodi della catena di attesa, la funzione ha esito negativo, GetLastError restituisce ERROR_MORE_DATA e questo parametro riceve il numero di elementi della matrice necessari per contenere tutti i nodi.

Per le sessioni asincrone, controllare il valore passato alla funzione di callback. Non liberare la variabile finché non viene restituita la funzione di callback.

[out] NodeInfoArray

Matrice di strutture WAITCHAIN_NODE_INFO che ricevono la catena di attesa.

Per le sessioni asincrone, controllare il valore passato alla funzione di callback. Non liberare la matrice finché non viene restituita la funzione di callback.

[out] IsCycle

Se la funzione rileva un deadlock, questa variabile è impostata su TRUE; in caso contrario, è impostato su FALSE.

Per le sessioni asincrone, controllare il valore passato alla funzione di callback. Non liberare la variabile finché non viene restituita la funzione di callback.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per recuperare informazioni sull'errore estese, chiamare GetLastError.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
Il chiamante non ha privilegi sufficienti per aprire un thread di destinazione.
ERROR_INVALID_PARAMETER
Uno dei parametri di input non è valido.
ERROR_IO_PENDING
La sessione WCT è stata aperta in modalità asincrona. I risultati verranno restituiti tramite la funzione di callback WaitChainCallback .
ERROR_MORE_DATA
Il buffer NodeInfoArray non è sufficiente per contenere tutti i nodi nella catena di attesa. Il parametro NodeCount contiene il numero di nodi nella catena. La catena di attesa restituita è ancora valida.
ERROR_NOT_SUPPORTED
Il sistema operativo non fornisce questo servizio.
ERROR_OBJECT_NOT_FOUND
Impossibile individuare il thread specificato.
ERROR_TOO_MANY_THREADS
Il numero di nodi supera WCT_MAX_NODE_COUNT. La catena di attesa restituita è ancora valida.

Commenti

Se la sessione è asincrona, la funzione restituisce FALSE e GetLastError restituisce ERROR_IO_PENDING. Per ottenere i risultati, vedere la funzione callback WaitChainCallback .

Se il thread specificato non è bloccato o viene bloccato in un elemento di sincronizzazione non supportato, la funzione restituisce un singolo elemento in NodeInfoArray.

Il chiamante deve avere il privilegio SE_DEBUG_NAME. Se il chiamante ha privilegi insufficienti, la funzione ha esito negativo se non è possibile accedere al primo thread. In caso contrario, l'ultimo nodo della matrice avrà il membro ObjectStatus impostato su WctStatusNoAcces.

Se un subset di nodi nella matrice forma un ciclo, la funzione imposta il parametro IsCycle su TRUE.

Le informazioni sulla catena di attesa sono dinamiche; è stato corretto quando la funzione è stata chiamata, ma può essere non aggiornata entro l'ora in cui viene esaminata dal chiamante.

Esempio

Per un esempio, vedere Uso di WCT.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wct.h
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

OpenThreadWaitChainSession

WAITCHAIN_NODE_INFO

Attraversamento della catena di attesa

WaitChainCallback