Freigeben über


!findthreads

Die Erweiterung !findthreads zeigt zusammenfassende Informationen über einen oder mehrere Threads auf dem Zielsystem an, die auf den angegebenen Suchkriterien basieren. Thread-Informationen werden angezeigt, wenn der/die zugehörige(n) Stack(s) auf das bereitgestellte Objekt verweisen. Dieser Befehl kann nur während der Fehlersuche im Kernelmodus verwendet werden.

Syntax

!findthreads [-v][-t  <Thread Address>|-i <IRP Address>|-d <Device Address>|( -a <Pointer Address> -e <End Address> | -l <Range Length>)] 

Parameter

-v
Zeigt ausführliche Informationen zu allen Kriterienübereinstimmungen an.

-t **** Threadadresse
Die Suchkriterien sind alle Module, Warteobjekte und IRPs für den Thread sowie Geräteobjekte und Module, die aus den angehängten IRPs generiert werden. Diese Option bietet im Allgemeinen die umfassendsten Suchkriterien.

-Ich **** IRP-Adresse
Die Suchkriterien sind alle Module und Geräte für den angegebenen IRP sowie alle Verweise auf den IRP selbst.

-d **** Geräteadresse
Die Suchkriterien basieren auf dem Geräteobjekt. Dazu gehören das mit dem Geräteobjekt verbundene Modul (über das Treiberobjekt), die Geräteerweiterung, alle mit dem Gerät verbundenen IRP und ähnliche Informationen für alle mit dem Geräteobjekt verbundenen Geräte.

-ein **** Zeigeradresse
Fügen Sie eine Basisadresse zu den Kriterien hinzu. Wenn -e oder -l korrekt angegeben ist, wird dieser Wert die Basis eines Speicherbereichs sein. Andernfalls wird er als Zeiger interpretiert.

-e **** Endadresse
Gibt die Endadresse des mit -a angegebenen Speicherbereichs an.

-l **** Bereichslänge
Gibt die Länge des mit -a angegebenen Speicherbereichs an.

DLL

Windows 10 und höher

Kdexts.dll

Zusätzliche Informationen

Informationen über Threads im Kernelmodus finden Sie unter Ändern von Kontexten. Weitere Informationen zur Analyse von Prozessen und Threads finden Sie unter Microsoft Windows Internals, von Mark Russinovich und David Solomon.

Hinweise

Hier ein Beispiel für die Ausgabe mit den Optionen -v und -t:

kd> !findthreads -v -t ffffd001ee29cdc0

Added criterion for THREAD 0xffffd001ee29cdc0
  Added criterion for THREAD STACK 0xffffd001ee2bac20
  ERROR: Object 0xffffffffffffffe0 is not an IRP
ERROR: unable to completely walk thread IRP list.
  Added criterion for MODULE kdnic(0xfffff80013120000)

Found 63 threads matching the search criteria

Found 6 criteria matches for THREAD 0xffffe0016a383740, PROCESS 0xffffe0016a220200
  Kernel stack location 0xffffd001f026a0c0 references THREAD 0xffffd001ee29cdc0
  Kernel stack location 0xffffd001f026a418 references THREAD 0xffffd001ee29cdc0
  Kernel stack location 0xffffd001f026a460 references THREAD 0xffffd001ee29cdc0
  Kernel stack location 0xffffd001f026a4d0 references THREAD 0xffffd001ee29cdc0
  Kernel stack location 0xffffd001f026a4f0 references THREAD 0xffffd001ee29cdc0
  Kernel stack location 0xffffd001f026a670 references THREAD 0xffffd001ee29cdc0


    ffffd001f026a0e0 nt!KiSwapContext+76
    ffffd001f026a190 nt!KiSwapThread+1c8
    ffffd001f026a220 nt!KiCommitThreadWait+148
    ffffd001f026a2e0 nt!KeWaitForMultipleObjects+21e
    ffffd001f026a800 nt!ObWaitForMultipleObjects+2b7
    ffffd001f026aa80 nt!NtWaitForMultipleObjects+f6
    000000c8d220fa98 nt!KiSystemServiceCopyEnd+13
    000000c8d220fa98 ntdll!ZwWaitForMultipleObjects+a
...