|
-41 / 297 / 4
Регистрация: 02.04.2009
Сообщений: 872
|
||
Как можно отлаживать драйвер под Windows XP на машине с Microsoft Visual C++ 6.0?22.10.2025, 19:47. Показов 1067. Ответов 13
Метки нет (Все метки)
У нас возникла потребность исправить драйвер нашего железа, который был создан 20 лет тому назад с помощью среды разработки Microsoft Visual C++ 6.0. Очевидцы процесса отладки драйвера утверждают, что отладка драйвера происходила на двух машинах под управлением Windows XP, соединенных COM-портом. Я нашел на Хабре способ отладки драйвера с помощью виртуальной машины в VirtualBox: Отладка драйверов под Windows: VirtualBox+WinDbg. Но там не использовался Microsoft Visual C++ 6.0, а у нас драйвер и его сборка произведены именно на этой среде разработке. Выходит, для отладки драйвера на Microsoft Visual C++ 6.0 необходимо использовать две машины, соединенные по COM-портам? И где про это можно почитать?
В нашей документации по драйверу (внутри компании) написано:
0
|
||
| 22.10.2025, 19:47 | |
|
Ответы с готовыми решениями:
13
Где можно найди и скачать драйвер(windows xp) Nvidia Gefore GT 520MX??? Lenovo Y550 где можно скачать драйвер для чипсета на ноутбук Windows 7/64 bit? Как можно определить какой это драйвер? |
|
Эксперт Hardware
|
||||||||||||
| 25.10.2025, 12:51 | ||||||||||||
|
Да и по ссылке видимо не отладка, а скорее компиляция драйвера (без загрузки в память). Для дебага готового бинаря, вам нужно найти вход в "DriverEntry" вашего драйвера, и установить на него брейк. В WinDbg для этого имеется команда !drvobj 3 с аргументом в виде имени пациента, например:
вы можете посмотреть и его позицию в стеке - сверху от стрелки "Upper", а снизу "Lower" девайсы:
0
|
||||||||||||
|
-41 / 297 / 4
Регистрация: 02.04.2009
Сообщений: 872
|
|
| 01.11.2025, 17:37 [ТС] | |
|
Как можно включить отладчик ядра в Windows XP, который бы принимал сообщения от функции DbgPrint в драйвере и посылал бы их по COM-порту в другой компьютер? Нагуглил команду bcdedit, но она работает только в Windows Vista и выше.
0
|
|
|
Эксперт Hardware
|
||
| 01.11.2025, 18:38 | ||
|
Rasool, посмотрите здесь: WinDBG - отладчик ядерного уровня
Добавлено через 2 минуты
1
|
||
|
-41 / 297 / 4
Регистрация: 02.04.2009
Сообщений: 872
|
||
| 05.11.2025, 22:17 [ТС] | ||
|
Я попробовал сделать отладку через COM-порты на двух компьютерах под Windows XP. На целевом компьютере, чтобы ввести компьютер в режим отладки, добавил ключ /DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 в файл boot.ini в строке Windows XP, после этого пропал драйвер COM-порта из диспетчера устройств этого компьютера и пропала связь через COM-порт.
Добавлено через 2 часа 33 минуты В host-операционной системе в нашей программе связь с железом была.
0
|
||
|
Эксперт Hardware
|
|||||||
| 06.11.2025, 06:22 | |||||||
|
Для вывода статуса можно использовать или команду в консоли sc (Service Control), или driverquery /v, или мою Утилита "Service & Driver List"
Добавлено через 6 минут Здесь есть все опции для boot.ini: https://droopy.narod.ru/BootIni.htm
1
|
|||||||
|
-41 / 297 / 4
Регистрация: 02.04.2009
Сообщений: 872
|
||||||||||||||||
| 06.11.2025, 17:26 [ТС] | ||||||||||||||||
|
Запускал команду driverquery /v на машине с Windows XP, которая подключена к нашему "железу", она является целевой, то есть подсоединена по COM-порту к другому хост-компьютеру. На этой же машине запущен VirtualBox с гостевой системой Windows XP. Эта же ОС является хост-системой по отношению к гостевой ОС Windows XP, которая запущена в VirtualBox.
На ОС на машине, подключенной к нашему "железу" без отладочного режима:
0
|
||||||||||||||||
|
Эксперт Hardware
|
||
| 06.11.2025, 17:52 | ||
sc start MyService - запустите утилиту sc без параметров, и она сдампит хелп.Если драйвер не запустится через start, посмотрите там-же его зависимости EnumDepend, и запустите сначала их.
1
|
||
|
-41 / 297 / 4
Регистрация: 02.04.2009
Сообщений: 872
|
||||||||||||||||||||||||||
| 06.11.2025, 20:08 [ТС] | ||||||||||||||||||||||||||
|
Результат запуска команды sc:
Запуск команды sc config Serial start= auto выдало:
0
|
||||||||||||||||||||||||||
|
Эксперт Hardware
|
|||||||||||
| 07.11.2025, 06:33 | |||||||||||
|
Схема "Клиент-Сервер" настроена для отладки? То-есть WinDbg на хосте видит клиента VirtualBox?
Если да, то проверьте состояние своего Serial.sys послав ему команду !drvobj serial 3
DriverUnload(). Видимо сейчас ключ /DEBUG останавливает ваш драйвер, но он не выгружается из памяти. Тогда система присваивает ему статус "Отмечен на удаление при сл.перезагрузке" - драйверы с таким флагом вы не сможете загрузить повторно, и спасёт только ребут. Это касается и ситуации, когда при попытке выгрузить драйвер, у него остаётся хоть один открытый дескриптор Handle (т.е. его кто-то открыл и не закрыл). Здесь можно покрутить параметр sc failure xx.Проверить состояние можно командой WinDbg lmsm или lmm s*, где (s*) представляет маску имени для поиска. В самом хвосте лога будут перечислены выгруженные Unloaded из памяти драйвера:
Находим свой дров в HKLM\SYSTEM\CurrentControlSet\services, и в ключе "Start" ставим значение(2). Если рядом есть "Depend", то задаём Start=2 всем из его списка. Теперь подключите заранее свой девайс, и далее ребут системы. Проверяем статус в sc, и если по прежнему ошибка 1058, возможно драйвер типа KMDF, и тогда его нужно переписать на WDM. Последнее касается только WinXP, т.к. она вроде не может дебажить архитектуру KMDF (на хосте должна быть как мин Win7). Узнать модель драйвера можно в IDA по списку импорта - если это KMDF, то функции начинаются с префикса Wdf_xx().А вообще какая конечная цель, ..что в итоге вы хотите сделать? Есть конкретное ТЗ?
0
|
|||||||||||
|
-41 / 297 / 4
Регистрация: 02.04.2009
Сообщений: 872
|
|||
| 07.11.2025, 17:49 [ТС] | |||
Косяк нужно устранить. Исходные коды драйвера на C++ успешно билдятся, но полученный файл драйвера MyDriver.sys после установки не работает вместе с программой драйвера (кстати, он отличается по объему от старого файла драйвера, который сейчас установлен в нашей системе).
0
|
|||
|
Эксперт Hardware
|
||
| 07.11.2025, 18:47 | ||
CreateFile() девайс драйвера, принимает-ли он команды от DeviceIoControl(), что именно возвращает, и многое другое. С другой стороны, т.к. у вас имеется исходник драйвера, то просто напихайте в его критические участки функций DbgPrint() (благо на их кол-во нет ограничений), после чего в окне "DebugView" получите подробный лог событий. Как найдёте ошибку, эту дебаг-функцию можно будет обратно удалить. А тяжёлую артиллерию WinDbg оставьте на крайний случай, когда все остальные варианты будут уже испробованы.
1
|
||
|
-41 / 297 / 4
Регистрация: 02.04.2009
Сообщений: 872
|
||
| 11.11.2025, 15:18 [ТС] | ||
|
0
|
||
|
-41 / 297 / 4
Регистрация: 02.04.2009
Сообщений: 872
|
|||||||||||
| 12.11.2025, 18:37 [ТС] | |||||||||||
|
Вот процедура DriverEntry в головном файле проекта MyDriver.c:
0
|
|||||||||||
| 12.11.2025, 18:37 | |
|
Помогаю со студенческими работами здесь
14
не подключается блютуз мышь где можно взять драйвер Драйвер видеокарты Ati Radeon HD 2600 pro для Windows Server 2003 x64 Драйвер для Windows x64 Драйвер для неизвестного устройства ACPI\ATK0110\1010110 на Windows XP Аудио драйвер ACER Extensa 5235 - Windows XP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|