Скажите пожалуйста, как писать драйвера для Windows на Visual Studio 2005, а лучше 2008. Возможно ли это? Конечно, интересует в первую очередь подсветка, раскрывающиеся мемберы структур и как это дело настроить, чтобы можно было откомпиленный драйвер отлаживать в виртуальный машине. Я сторонник чистого С, и именно такое решение и интересует. У кого есть опыт подобной настройки - делимся. Конечно, хочется использовать самые последние достижения в построении IDE, поэтому желательно найти информацию о самой новой IDE от MS. Я знаю, что в VS2005 появилась возможность писать драйверы, что они сделали для этого - т.е. какие именно там изменения? Если нужны хитрые ключи компилятора, то пожалуйста опишите их назначение, если не трудно. Спасибо. Конечно, nmake это хорошо, сам им пользовался, но все таки пора шагать в новый век, и увеличивать производительность разработки.
ну VS 2005 компилила у меня дрова и если интересно могу поделится рецептом, однако касательно раскрывающехся мемберов и хайлайтов я не заморачивался... по поводу отладки это уж точно не к VS...
Довольно просто указать опции компилятора и линкера на создание драйвера. Примерно так: Код (Text): C\C++ - General - Debug Information Format = Program Database (/Zi) C\C++ - Preprocessor - Preprocessor Definitions = _X86_ [comment: add also DBG for Debug config] C\C++ - Code Generation - Enable C++ Exceptions = No C\C++ - Code Generation - Basic Runtime Checks = Default C\C++ - Code Generation - Buffer Security Check = No (/GS-) C\C++ - Advanced - Calling Convention = __stdcall (/Gz) C\C++ - Advanced - Compile As = Compile as C Code (/TC) [comment: of course if you are going to use plain C] Linker - General - Output File = $(OutDir)\$(ProjectName).sys Linker - General - Enable Incremental Linking = Default Linker - Input - Additional Dependencies = ntoskrnl.lib hal.lib $(NOINHERIT) [comment: you should add needed libs here e.g. ntoskrnl.lib hal.lib] Linker - Input - Ignore All Default Libraries = Yes (/NODEFAULTLIB) Linker - Manifest File - Generate Manifest = No Linker - System - SubSystem = Native (/SUBSYSTEM:NATIVE) Linker - System - Driver = Driver (/DRIVER) Linker - Advanced - Entry Point = DriverEntry Linker - Advanced - Base Address = 0x10000 Но, на мой взгляд, оптимальный решением будет использование ddkbuild. Его можно взять тут: http://www.osronline.com/article.cfm?article=43 Указать в глобальной переменной путь к WDK (DDK). Проект сделать типа makefile с строкой билда типа: ddkbuild -WXP chk c:\projects\myproject P.S. Что бы интелисенс подхватил ВДКашные типы данных, нужно описать пути к заголовочным файлам в визуал студио.
мой рецепт заключался в использовании Custom Build Tool щелкаем правой мышкой в Solution Explore'е на нашем проекте, выбираем Tool build order, теоретически со всего остального галочки можно снять. Ну а далее заходим в свойства проэкта, настройки Custom Build, и прописываем Command line приблизительного следующим образом: Код (Text): c:\WINDOWS\system32\cmd.exe /c setenv.bat C:\PROGRA~1\WINDDK chk WXP при этом файл setenv.bat (который оригинально находится в ...WINDDK\bin) должен лежать в папке с проектом и в конец его необходимо дописать что то вроде такого Код (Text): cd c:\projects\project_name\driver\ nmake вобщем так работает однако соглашусь что этот метод врядли можно рекомендовать к использованию...
Osen берёш Compuvare DriverStudio: 1. покупаеш 2. качаеш с варездовнлоадc открываеш DriverWizard и делаеш как тебе удобней. получается настроенный проект с темплами выбранными в мастере. быстро, легко, надёжно
Всем спасибо. Отладка WinDbg + VmWare это немного другое, но все равно спасибо. Все дело в том, что в новой версии VmWare ввелась поддержка нативной отладки в комбинации как раз с VS от MS. Можете сказать что нибудь об этом?
Osen А самому посмотреть? Там просто автоматизировано использование msvcmon (провайдер удалённой юзермодной отладки) и взаимодействие с виртуальными системами (копирование бинариков в виртуалку, запуск отладочного монитора и проч.). Для gdb сделали больше - возможность runback/replay всей системы под отладчиком (правда, не знаю, юзермод или ядра тоже).
IceStudent Сейчас вот как раз разбираюсь в этом, просто хотел услышать мнения людей, которые эту систему уже используют. Так сказать опытный взляд. Часть услышал от вас. Примного благодарен.
Все отлично, но как это наладить, настроить и как это выглядит так и никто не сказал, хотя проблема явно актуальная.
Студию настроил в лучшем виде - компилит и интелиисенс работает, вот как отлаживать (( Ладно буду думать сам... А то грузить машину изза BSODа явно нетехнологично ввиду существования технологий виртуализации.