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.
[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 |
---|---|
|
L’appelant ne disposait pas des privilèges suffisants pour ouvrir un thread cible. |
|
L’un des paramètres d’entrée n’est pas valide. |
|
La session WCT a été ouverte en mode asynchrone. Les résultats sont retournés via la fonction de rappel WaitChainCallback . |
|
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. |
|
Le système d’exploitation ne fournit pas ce service. |
|
Impossible de localiser le thread spécifié. |
|
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 |