Я использую Windbg для отладки моего драйвера пользовательского режима (рассмотрим USB). Мой пакет драйверов (сборка отладки, 64 бит) имеет как код режима ядра, так и код пользовательского режима. Пакет был успешно установлен на моей целевой машине, и модуль тоже загрузился (как я могу проверить с помощью команды windbg: lm «). И я запускаю Windbg в режиме администратора на хосте и отлаживаю цель с помощью карты FireWire 1394.Нужно ли установить контрольную точку в драйвере режима ядра для отладки функции в ее пользовательской части режима (используя Windbg)?
После запуска приложения, когда я пытаюсь отладить функцию в драйвере пользовательского режима, я вижу, что целевая функция не получает удар, хотя точка прерывания правильно установлена и включена. Затем я устанавливаю точку прерывания функции (повторяющуюся сервисную процедуру, которая часто попадает, когда она активируется) в коде ядра. На этот раз эта функция драйвера режима ядра ломается, и через некоторое время вышеперечисленная функция драйвера пользовательского режима слишком разрывается, и я могу отлаживать то же самое и следовать пути кода.
Опять же, когда я закрываю &, перезагрузите приложение, только когда функция break-point функции драйвера ядра включена и ударит, удаляется функция драйвера режима пользователя. Но если его отключить, функция драйвера режима пользователя не будет удалена. Это происходит независимо от того, какие функции мы устанавливаем в точках разрыва в драйверах режима ядра или в режиме пользователя.
Почему это поведение, хотя модули правильно загружены? Нужно ли настраивать или проверять что-то так, что когда и когда я запускаю приложение, мне не нужно полагаться на часть режима ядра?