!findthreads
L’extension !findthreads affiche des informations récapitulatives sur un ou plusieurs threads sur le système cible en fonction des critères de recherche fournis. Les informations de thread s’affichent lorsque la ou les piles associées référencent l’objet fourni. Cette commande ne peut être utilisée que pendant le débogage en mode noyau.
Syntaxe
!findthreads [-v][-t <Thread Address>|-i <IRP Address>|-d <Device Address>|( -a <Pointer Address> -e <End Address> | -l <Range Length>)]
Paramètres
-v
Affiche des informations détaillées sur toutes les correspondances de critères.
-t **** Adresse du thread
Les critères de recherche seront tous les modules, les objets d’attente et les irPs pour le thread, ainsi que les objets d’appareil et les modules générés à partir des IRPs attachés. Cette option fournit généralement les critères de recherche les plus larges.
-Je **** Adresse IRP
Les critères de recherche seront tous les modules et appareils pour l’IRP indiqué, ainsi que toute référence à l’IRP lui-même.
-d **** Adresse de l’appareil
Les critères de recherche sont basés sur l’objet de l’appareil. Cela inclut le module associé à l’objet périphérique (via l’objet pilote), l’extension de l’appareil, tout IRP attaché à l’appareil et des informations similaires pour tout objet attaché à l’objet périphérique.
-un **** Adresse du pointeur
Ajoutez une adresse de base aux critères. Si -e ou -l est correctement spécifié, cette valeur est la base d’une plage de mémoire. Sinon, il est interprété comme un pointeur.
-e **** Adresse de fin
Spécifie l’adresse de fin de la plage de mémoire spécifiée avec -a.
-l **** Longueur de plage
Spécifie la longueur de la plage de mémoire spécifiée avec -a.
DLL
Windows 10 et versions ultérieures
Kdexts.dll
Informations supplémentaires
Pour plus d’informations sur les threads en mode noyau, veuillez consulter la section Modification des contextes. Pour plus d’informations sur l’analyse des processus et des threads, veuillez consulter Microsoft Windows Internals (Au cœur de Windows) de Mark Russinovich et David Solomon.
Notes
Voici un exemple de sortie utilisant les options -v et -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
...