Partager via


GetThreadWaitChain, fonction (wct.h)

Récupère la chaîne d’attente pour le thread spécifié.

Syntaxe

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

Paramètres

[in] WctHandle

Handle de la session WCT créée par la fonction OpenThreadWaitChainSession .

[in, optional] Context

Pointeur vers une structure de contexte définie par l’application à passer à la fonction de rappel pour une session asynchrone.

[in] Flags

Options de récupération de la chaîne d’attente. Ce paramètre peut être l’une des valeurs suivantes.

Valeur Signification
WCT_OUT_OF_PROC_COM_FLAG
Énumère tous les threads d’un serveur COM MTA hors processus pour trouver l’identificateur de thread correct.
WCT_OUT_OF_PROC_CS_FLAG
Récupère des informations de section critique à partir d’autres processus.
WCT_OUT_OF_PROC_FLAG
Suit la chaîne d’attente dans d’autres processus. Sinon, la fonction signale le premier thread dans un processus différent, mais ne récupère pas d’informations supplémentaires.

[in] ThreadId

Identificateur du thread.

[in, out] NodeCount

Lors de l’entrée, un nombre compris entre 1 et WCT_MAX_NODE_COUNT qui spécifie le nombre de nœuds dans la chaîne d’attente. Au retour, nombre de nœuds récupérés. Si le tableau ne peut pas contenir tous les nœuds de la chaîne d’attente, la fonction échoue, GetLastError retourne ERROR_MORE_DATA et ce paramètre reçoit le nombre d’éléments de tableau requis pour contenir tous les nœuds.

Pour les sessions asynchrones, case activée la valeur passée à la fonction de rappel. Ne libérez pas la variable tant que la fonction de rappel n’est pas retournée.

[out] NodeInfoArray

Tableau de structures WAITCHAIN_NODE_INFO qui reçoit la chaîne d’attente.

Pour les sessions asynchrones, case activée la valeur passée à la fonction de rappel. Ne libérez pas le tableau tant que la fonction de rappel n’a pas été retournée.

[out] IsCycle

Si la fonction détecte un interblocage, cette variable est définie sur TRUE ; sinon, elle est définie sur FALSE.

Pour les sessions asynchrones, case activée la valeur passée à la fonction de rappel. Ne libérez pas la variable tant que la fonction de rappel n’est pas retournée.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour récupérer des informations d’erreur étendues, appelez GetLastError.

Code de retour Description
ERROR_ACCESS_DENIED
L’appelant ne disposait pas des privilèges suffisants pour ouvrir un thread cible.
ERROR_INVALID_PARAMETER
L’un des paramètres d’entrée n’est pas valide.
ERROR_IO_PENDING
La session WCT a été ouverte en mode asynchrone. Les résultats sont retournés via la fonction de rappel WaitChainCallback .
ERROR_MORE_DATA
La mémoire tampon NodeInfoArray n’est pas assez grande pour contenir tous les nœuds de la chaîne d’attente. Le paramètre NodeCount contient le nombre de nœuds dans la chaîne. La chaîne d’attente retournée est toujours valide.
ERROR_NOT_SUPPORTED
Le système d’exploitation ne fournit pas ce service.
ERROR_OBJECT_NOT_FOUND
Impossible de localiser le thread spécifié.
ERROR_TOO_MANY_THREADS
Le nombre de nœuds dépasse WCT_MAX_NODE_COUNT. La chaîne d’attente retournée est toujours valide.

Remarques

Si la session est asynchrone, la fonction retourne FALSE et GetLastError retourne ERROR_IO_PENDING. Pour obtenir les résultats, consultez la fonction de rappel WaitChainCallback .

Si le thread spécifié n’est pas bloqué ou est bloqué sur un élément de synchronisation non pris en charge, la fonction retourne un seul élément dans NodeInfoArray.

L’appelant doit avoir le privilège SE_DEBUG_NAME. Si l’appelant a des privilèges insuffisants, la fonction échoue si le premier thread n’est pas accessible. Sinon, son membre ObjectStatus est défini sur WctStatusNoAcces pour le dernier nœud du tableau.

Si un sous-ensemble de nœuds du tableau forme un cycle, la fonction définit le paramètre IsCycle sur TRUE.

Les informations sur la chaîne d’attente sont dynamiques ; elle était correcte lorsque la fonction a été appelée, mais peut être obsolète au moment où elle est examinée par l’appelant.

Exemples

Pour obtenir un exemple, consultez Utilisation de WCT.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête wct.h
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

OpenThreadWaitChainSession

WAITCHAIN_NODE_INFO

Wait Chain Traversal

WaitChainCallback