На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела FAQ в группе разделов С++.
1. Раздел FAQ предназначен для публикации готовых статей.
2. Здесь нельзя задавать вопросы, для этого существуют соответствующие разделы:
Чистый С++
Visual C++ / MFC / WTL / WinApi
Borland C++ Builder
COM / DCOM / ActiveX / ATL
Сопутствующие вопросы
3. Внимание, все темы и сообщения в разделе премодерируются. Любое сообщение или тема будут видны остальным участникам только после одобрения модератора.
Модераторы: B.V., Qraizer
  
> Как настроить Visual Studio для разработки драйверов
    Что нужно для того, что бы подготовить Visual Studio, в частности, VC++ к разработке драйвера:

    1. Подразумевается, что у вас уже установлен VC++. Если же нет, то сначала нужно скачать и установить актуальную версию: http://www.microsoft.com/visualstudio/en-us/try
    2. Скачать и установить актуальную версию Windows Driver Kit: http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx
    3. Создать в студии пустой проект типа Win32 Project

    Настройка студии и проекта:

    В старых версиях студии, вплоть до 2008, глобальные настройки путей располагались в настройках студии. Начиная с 2010 студии настройки путей были оставлены только в свойства проекта, Configuration Properties -> VC++ Directories. В директории необходимо добавить пути к inc, lib и bin директориям WDK.

    Теперь необходимо изменить следующие настройки проекта:

    General -> Target Extension = .sys

    C/C++ -> General -> Debug Information Format = Program Database (/Zi)
    C/C++ -> Preprocessor -> Preprocessor Definitions = _X86_ для 32-битного драйвера/_AMD64_ для 64-битного и DBG для Debug-сборки
    C/C++ -> Code Generation -> Enable C++ Exceptions = No
    C/C++ -> Code Generation -> Basic Runtime Checks = Default
    C/C++ -> Advanced -> Calling Convention = __stdcall (/Gz)
    C/C++ -> Advanced -> Compile As = Compile as C Code (/TC)

    Linker -> Input -> Additional Dependencies = ntoskrnl.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
    Linker -> Advanced -> Randomized Base Address = Disable (/DYNAMICBASE:NO)
    Linker -> Advanced -> Data Execution Prevention (DEP) = Disable (/NXCOMPAT:NO)

    И наконец, добавить в проект новый файл, например, DriverMain.c, и определить там функцию инициализации DriverEntry:

    ExpandedWrap disabled
      #include <ntddk.h>
       
      #include "DriverMain.h"
       
      NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
      {
          //
          return STATUS_SUCCESS;
      }


    Для использования Windows Driver Model или Windows Driver Foundation вместо Windows NT Driver Model, замените ntddk на wdm или wdf соответственно.
      Сообщение отредактировано: Qraizer -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0271 ]   [ 16 queries used ]   [ Generated: 28.03.24, 07:57 GMT ]