Написание и компиляция драйвера для Windows в современной IDE

Тема в разделе "WASM.NT.KERNEL", создана пользователем Osen, 12 апр 2008.

  1. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Скажите пожалуйста, как писать драйвера для Windows на Visual Studio 2005, а лучше 2008. Возможно ли это? Конечно, интересует в первую очередь подсветка, раскрывающиеся мемберы структур и как это дело настроить, чтобы можно было откомпиленный драйвер отлаживать в виртуальный машине. Я сторонник чистого С, и именно такое решение и интересует. У кого есть опыт подобной настройки - делимся. Конечно, хочется использовать самые последние достижения в построении IDE, поэтому желательно найти информацию о самой новой IDE от MS. Я знаю, что в VS2005 появилась возможность писать драйверы, что они сделали для этого - т.е. какие именно там изменения?
    Если нужны хитрые ключи компилятора, то пожалуйста опишите их назначение, если не трудно. Спасибо. Конечно, nmake это хорошо, сам им пользовался, но все таки пора шагать в новый век, и увеличивать производительность разработки.
     
  2. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    ну VS 2005 компилила у меня дрова и если интересно могу поделится рецептом, однако касательно раскрывающехся мемберов и хайлайтов я не заморачивался...
    по поводу отладки это уж точно не к VS...
     
  3. Unmanaged

    Unmanaged New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2007
    Сообщения:
    12
    Делись!
     
  4. lotos_od

    lotos_od New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    29
    Адрес:
    Ukraine
    Довольно просто указать опции компилятора и линкера на создание драйвера. Примерно так:

    Код (Text):
    1. C\C++ - General - Debug Information Format = Program Database (/Zi)
    2. C\C++ - Preprocessor - Preprocessor Definitions = _X86_ [comment: add also DBG for Debug config]
    3. C\C++ - Code Generation - Enable C++ Exceptions = No
    4. C\C++ - Code Generation - Basic Runtime Checks = Default
    5. C\C++ - Code Generation - Buffer Security Check = No (/GS-)
    6. C\C++ - Advanced - Calling Convention = __stdcall (/Gz)
    7. C\C++ - Advanced - Compile As = Compile as C Code (/TC) [comment: of course if you are going to use plain C]
    8.  
    9. Linker - General - Output File = $(OutDir)\$(ProjectName).sys
    10. Linker - General - Enable Incremental Linking = Default
    11. Linker - Input - Additional Dependencies = ntoskrnl.lib hal.lib $(NOINHERIT) [comment: you should add
    12.  
    13. needed libs here e.g. ntoskrnl.lib hal.lib]
    14. Linker - Input - Ignore All Default Libraries = Yes (/NODEFAULTLIB)
    15. Linker - Manifest File - Generate Manifest = No
    16. Linker - System - SubSystem = Native (/SUBSYSTEM:NATIVE)
    17. Linker - System - Driver = Driver (/DRIVER)
    18. Linker - Advanced - Entry Point = DriverEntry
    19. 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. Что бы интелисенс подхватил ВДКашные типы данных, нужно описать пути к заголовочным файлам в визуал студио.
     
  5. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Спасибо, что насчет отладки дров через VMWare?
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    http://alter.org.ua/docs/nt_kernel/vc8_proj/
    http://silverstr.ufies.org/lotr0/windbg-vmware.html
     
  7. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    мой рецепт заключался в использовании Custom Build Tool

    щелкаем правой мышкой в Solution Explore'е на нашем проекте, выбираем Tool build order, теоретически со всего остального галочки можно снять. Ну а далее заходим в свойства проэкта, настройки Custom Build, и прописываем Command line приблизительного следующим образом:
    Код (Text):
    1. c:\WINDOWS\system32\cmd.exe /c setenv.bat  C:\PROGRA~1\WINDDK chk WXP
    при этом файл setenv.bat (который оригинально находится в ...WINDDK\bin) должен лежать в папке с проектом и в конец его необходимо дописать что то вроде такого
    Код (Text):
    1. cd c:\projects\project_name\driver\
    2. nmake
    вобщем так работает однако соглашусь что этот метод врядли можно рекомендовать к использованию...
     
  8. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Osen
    берёш Compuvare DriverStudio:
    1. покупаеш
    2. качаеш с варездовнлоадc
    открываеш DriverWizard и делаеш как тебе удобней.
    получается настроенный проект с темплами выбранными в мастере.
    быстро, легко, надёжно :)
     
  9. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Всем спасибо. Отладка WinDbg + VmWare это немного другое, но все равно спасибо. Все дело в том, что в новой версии VmWare ввелась поддержка нативной отладки в комбинации как раз с VS от MS. Можете сказать что нибудь об этом?
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Osen
    А самому посмотреть? Там просто автоматизировано использование msvcmon (провайдер удалённой юзермодной отладки) и взаимодействие с виртуальными системами (копирование бинариков в виртуалку, запуск отладочного монитора и проч.). Для gdb сделали больше - возможность runback/replay всей системы под отладчиком (правда, не знаю, юзермод или ядра тоже).
     
  11. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    IceStudent
    Сейчас вот как раз разбираюсь в этом, просто хотел услышать мнения людей, которые эту систему уже используют. Так сказать опытный взляд. Часть услышал от вас. Примного благодарен.
     
  12. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Все отлично, но как это наладить, настроить и как это выглядит так и никто не сказал, хотя проблема явно актуальная.
     
  13. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    Вот мой шаблон для драйверов
    http://www.sendspace.com/file/hooz7y
     
  14. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Студию настроил в лучшем виде - компилит и интелиисенс работает, вот как отлаживать (( Ладно буду думать сам... А то грузить машину изза BSODа явно нетехнологично ввиду существования технологий виртуализации.