Определение того, почему рефлектор завершил процесс узла
В этом разделе описывается, как проанализировать, почему рефлектор завершил процесс узла драйвера (WUDFHost.exe) или почему процесс узла драйвера завершился сбоем.
Наиболее распространенной причиной завершения процесса размещения является истечение времени ожидания процесса узла UMDF.
Настоятельно рекомендуется выполнять все разработки и тестирование драйвера UMDF с отладчиком ядра, подключенным к тестовой системе, и включить средство проверки приложений (AppVerif.exe) на WUDFHost.exe. Используйте следующую команду, подключите отладчик ядра и перезагрузите его.
AppVerif –enable Heaps Exceptions Handles Locks Memory TLS Leak –for WudfHost.exe
Использование файлов дампа
При сбое драйвера UMDF или возникновении проблемы в отладчике ядра будет сообщаться перерыв. Эти проблемы следует отладить, когда в отладчике ядра сообщаются исключения в пользовательском режиме. Разрывы отладчика ядра также сообщаются WudfRd.sys перед завершением процесса узла драйвера из-за проблемного (не адаптивного) драйвера UMDF. Вы также найдете журналы и дампы кучи, сообщаемые в следующем расположении. Чтобы просмотреть файлы дампа, захваченные UMDF, выполните следующие действия.
Найдите последний .dmp-файл в каталоге %ProgramData%\Microsoft\WDF. До UMDF 2.15, который поставляется с Windows 10 1507, каталог журналов находится в папке %windir%\system32\LogFiles\WUDF.
Загрузите последний .dmp-файл в отладчик с помощью следующей команды:
WinDbg -z <path to the .dmp file>
Просмотрите состояние потоков во время завершения.
Если вам нужны дампы кучи, захваченные, во время тестирования задайте следующие значения реестра и повторно загрузите тестовую систему перед выполнением тестов. Вы также можете проверить журнал отчеты об ошибках Windows из журнала событий приложения системы по адресу %SystemRoot%\System32\Winevt\Logs\Application.evtx
reg add "HKLM\Software\Microsoft\windows NT\CurrentVersion\Wudf" /v LogMinidumpType /t REG_DWORD /d 0x1122
reg add "HKLM\Software\Microsoft\windows NT\CurrentVersion\Wudf" /v LogEnable /t REG_DWORD /d 1
Использование отладчика
В других случаях может потребоваться подключиться к целевому объекту в режиме динамического ядра, чтобы определить, почему рефлектор завершил процесс узла. Чтобы настроить сеанс отладки, выполните действия, описанные в разделе "Включение отладки драйвера UMDF".
После установки подключения используйте !wdfkd.wdfumtriage для проверки драйверов UMDF, отобразите выдающиеся irPs с помощью расширения отладчика UMDF !wdfkd.wdfumirps (!wudfext.umirps для UMDF версии 1).
Если ожидается IRP PnP или power IRP, определите, почему драйвер вызывает зависание IRP путем изучения потоков в процессе узла.
Расширение !process можно использовать для проверки потоков, выполняемых в процессе узла. Значение флагов 0x1f показывает трассировку стека для каждого потока.
Надстройка> процесса !process 0x1f <
Если драйвер не завершил отмененный IRP быстро, определите, какой IRP был отменен и почему он не завершен.
Если ожидается очистка или закрытие IRP, определите, почему IRP занимает много времени для обработки.