
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.173] |
![]() |
|
![]() |
Сообщ.
#1
,
|
|
Что нужно для того, что бы подготовить 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: ![]() ![]() #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 соответственно. |
Сообщ.
#2
,
|
|
|
|