GetThreadWaitChain-Funktion (wct.h)

Ruft die Wartekette für den angegebenen Thread ab.

Syntax

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

Parameter

[in] WctHandle

Ein Handle für die WCT-Sitzung, die von der OpenThreadWaitChainSession-Funktion erstellt wurde.

[in, optional] Context

Ein Zeiger auf eine anwendungsdefinierte Kontextstruktur, die an die Rückruffunktion für eine asynchrone Sitzung übergeben werden soll.

[in] Flags

Die Optionen zum Abrufen der Wartekette. Dieser Parameter kann einer der folgenden Werte sein.

Wert Bedeutung
WCT_OUT_OF_PROC_COM_FLAG
Listet alle Threads eines out-of-proc MTA COM-Servers auf, um den richtigen Threadbezeichner zu finden.
WCT_OUT_OF_PROC_CS_FLAG
Ruft Kritische Abschnittsinformationen aus anderen Prozessen ab.
WCT_OUT_OF_PROC_FLAG
Folgt der Wartekette in andere Prozesse. Andernfalls meldet die Funktion den ersten Thread in einem anderen Prozess, ruft jedoch keine zusätzlichen Informationen ab.

[in] ThreadId

Der Bezeichner des Threads.

[in, out] NodeCount

Bei der Eingabe eine Zahl von 1 bis WCT_MAX_NODE_COUNT, die die Anzahl der Knoten in der Wartekette angibt. Bei der Rückgabe die Anzahl der abgerufenen Knoten. Wenn das Array nicht alle Knoten der Wartekette enthalten kann, schlägt die Funktion fehl, gibt GetLastError ERROR_MORE_DATA zurück, und dieser Parameter empfängt die Anzahl der Arrayelemente, die erforderlich sind, um alle Knoten zu enthalten.

Überprüfen Sie bei asynchronen Sitzungen den Wert, der an die Rückruffunktion übergeben wird. Geben Sie die Variable erst frei, wenn die Rückruffunktion zurückgegeben wurde.

[out] NodeInfoArray

Ein Array von WAITCHAIN_NODE_INFO Strukturen, das die Wartekette empfängt.

Überprüfen Sie bei asynchronen Sitzungen den Wert, der an die Rückruffunktion übergeben wird. Geben Sie das Array erst frei, wenn die Rückruffunktion zurückgegeben wurde.

[out] IsCycle

Wenn die Funktion einen Deadlock erkennt, wird diese Variable auf TRUE festgelegt. Andernfalls ist er auf FALSE festgelegt.

Überprüfen Sie bei asynchronen Sitzungen den Wert, der an die Rückruffunktion übergeben wird. Geben Sie die Variable erst frei, wenn die Rückruffunktion zurückgegeben wurde.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen abzurufen.

Rückgabecode Beschreibung
ERROR_ACCESS_DENIED
Der Aufrufer verfügte nicht über ausreichende Berechtigungen zum Öffnen eines Zielthreads.
ERROR_INVALID_PARAMETER
Einer der Eingabeparameter ist ungültig.
ERROR_IO_PENDING
Die WCT-Sitzung wurde im asynchronen Modus geöffnet. Die Ergebnisse werden über die Rückruffunktion WaitChainCallback zurückgegeben.
ERROR_MORE_DATA
Der NodeInfoArray-Puffer ist nicht groß genug, um alle Knoten in der Wartekette zu enthalten. Der NodeCount-Parameter enthält die Anzahl der Knoten in der Kette. Die zurückgegebene Wartekette ist weiterhin gültig.
ERROR_NOT_SUPPORTED
Das Betriebssystem stellt diesen Dienst nicht bereit.
ERROR_OBJECT_NOT_FOUND
Der angegebene Thread konnte nicht gefunden werden.
ERROR_TOO_MANY_THREADS
Die Anzahl der Knoten überschreitet WCT_MAX_NODE_COUNT. Die zurückgegebene Wartekette ist weiterhin gültig.

Hinweise

Wenn die Sitzung asynchron ist, gibt die Funktion FALSE und GetLastError ERROR_IO_PENDING zurück. Informationen zum Abrufen der Ergebnisse finden Sie in der Rückruffunktion WaitChainCallback .

Wenn der angegebene Thread nicht blockiert oder für ein nicht unterstütztes Synchronisierungselement blockiert wird, gibt die Funktion ein einzelnes Element in NodeInfoArray zurück.

Der Aufrufer muss über das SE_DEBUG_NAME-Recht verfügen. Wenn der Aufrufer über unzureichende Berechtigungen verfügt, schlägt die Funktion fehl, wenn auf den ersten Thread nicht zugegriffen werden kann. Andernfalls ist für den letzten Knoten im Array sein ObjectStatus-Member auf WctStatusNoAcces festgelegt.

Wenn eine Teilmenge von Knoten im Array einen Zyklus bildet, legt die Funktion den IsCycle-Parameter auf TRUE fest.

Warteketteinformationen sind dynamisch; Sie war richtig, wenn die Funktion aufgerufen wurde, ist aber möglicherweise veraltet, wenn sie vom Aufrufer überprüft wird.

Beispiele

Ein Beispiel finden Sie unter Verwenden von WCT.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wct.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

OpenThreadWaitChainSession

WAITCHAIN_NODE_INFO

Durchlaufen der Warteschlange

WaitChainCallback