!findthreads
A extensão !findthreads exibe informações resumidas sobre um ou mais threads no sistema de destino com base nos critérios de pesquisa fornecidos. As informações de thread serão exibidas quando as pilhas associadas fizerem referência ao objeto fornecido. Esse comando pode ser usado somente durante a depuração no modo kernel.
Sintaxe
!findthreads [-v][-t <Thread Address>|-i <IRP Address>|-d <Device Address>|( -a <Pointer Address> -e <End Address> | -l <Range Length>)]
Parâmetros
-v
Exibe informações detalhadas sobre todas as correspondências de critério.
-t **** Endereço do Thread
Os critérios de pesquisa serão todos os módulos, objetos de espera e IRPs para o thread, bem como objetos de dispositivo e módulos gerados a partir dos IRPs conectados. Essa opção geralmente fornecerá os critérios de pesquisa mais amplos.
-eu **** Endereço IRP
Os critérios de pesquisa serão todos os módulos e dispositivos para o IRP indicado, bem como qualquer referência ao próprio IRP.
-d **** Endereço do dispositivo
Os critérios de pesquisa serão baseados no objeto de dispositivo. Isso incluirá o módulo associado ao objeto de dispositivo (por meio do objeto de driver), a extensão do dispositivo, qualquer IRP conectado ao dispositivo e informações semelhantes de qualquer item conectado ao objeto de dispositivo.
-um **** Endereço do ponteiro
Adicione um endereço base aos critérios. Se -e ou -l for especificado corretamente, esse valor será a base de um intervalo de memória. Caso contrário, será interpretado como um ponteiro.
-e **** Endereço final
Especifica o endereço final do intervalo de memória especificado com -a.
-l **** Comprimento da faixa
Especifica o comprimento do intervalo de memória especificado com -a.
DLL
Windows 10 e posterior
Kdexts.dll
Informações Adicionais
Para obter informações sobre threads no modo kernel, confira Alterando contextos. Para obter mais informações sobre como analisar processos e threads, confira o livro Microsoft Windows Internals de Mark Russinovich e David Solomon.
Comentários
Veja a seguir um exemplo de saída usando as opções -v e -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
...