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.
[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 |
---|---|
|
Il chiamante non ha privilegi sufficienti per aprire un thread di destinazione. |
|
Uno dei parametri di input non è valido. |
|
La sessione WCT è stata aperta in modalità asincrona. I risultati verranno restituiti tramite la funzione di callback WaitChainCallback . |
|
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. |
|
Il sistema operativo non fornisce questo servizio. |
|
Impossibile individuare il thread specificato. |
|
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 |