!findthreads
Расширение !findthreads отображает сводную информацию об одном или нескольких потоках целевой системы на основе предоставленных условий поиска. Сведения о потоке будут отображаться, когда связанные стеками ссылаются на предоставленный объект. Эта команда может использоваться только во время отладки в режиме ядра.
Синтаксис
!findthreads [-v][-t <Thread Address>|-i <IRP Address>|-d <Device Address>|( -a <Pointer Address> -e <End Address> | -l <Range Length>)]
Параметры
-v
Отображает подробные сведения обо всех совпадениях условий.
-t **** Адрес потока
Критерии поиска — все модули, объекты ожидания и irPs для потока, а также объекты и модули устройств, созданные из подключенных IRPs. Этот параметр обычно предоставляет самые широкие критерии поиска.
-я **** Адрес IRP
Условия поиска будут всеми модулями и устройствами для указанного IRP, а также любой ссылкой на сам IRP.
-d **** Адрес устройства
Условия поиска будут основаны на объекте устройства. Это будет включать модуль, связанный с объектом устройства (через объект драйвера), расширение устройства, любое IRP, подключенное к устройству, и аналогичную информацию для любого подключенного к объекту устройства.
-a **** Адрес-указатель
Добавьте базовый адрес в критерии. Если значение -e или -l правильно указано, это значение будет основой диапазона памяти. В противном случае он интерпретируется как указатель.
-e **** Конечный адрес
Указывает конечный адрес диапазона памяти, указанного с помощью -a.
-l **** Длина диапазона
Указывает длину диапазона памяти, указанного с помощью -a.
DLL-библиотеки
Windows 10 и более поздние версии
Kdexts.dll
Дополнительная информация
Сведения о потоках в режиме ядра см. в разделе "Изменение контекстов". Дополнительные сведения об анализе процессов и потоков см. в разделе "Внутренние компоненты Microsoft Windows", марк Руссинович и Дэвид Соломон.
Замечания
Ниже приведен пример выходных данных с помощью параметров -v и -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
...