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