1. 安装 VS2101 and WDK7.0(DDK);(这是废话^_^)
2. File -> New -> Project -> Visual C++ -> Empty Project
3. 命名你的工程.e.g MyDriver, 然后点击 OK按钮.
4. Build -> Configuration Manager...
5. 在Active solution configuration里选择<New...>,输入名字,比如MyDriver,然后在Copy setting from:选择debug或者是release,随便选一个
6. View -> property manager,然后选择你之前命名的MyDriver | Win32.然后右击选择Add new project property Sheet,然后命名比如dirverProperty,然后点OK按钮.
然后选择新建的dirverProperty并右击选择Properties,设置如下:
7. C\C++ - General - Debug Information Format = Program Database (/Zi)
8. C\C++ - Preprocessor - Preprocessor Definitions = _X86_
_WIN32_WINNT=0x0500 (分2行写)
9. C\C++ - Code Generation - Enable C++ Exceptions = No
10.C\C++ - Code Generation - Basic Runtime Checks = Default
11.C\C++ - Code Generation - Buffer Security Check = No (/GS-)
12.C\C++ - Advanced - Calling Convention = __stdcall (/Gz)
13.C\C++ - Advanced - Compile As = Compile as C Code (/TC)
14.Linker - General - Output File = $(OutDir)\$(ProjectName).sys
15.Linker - General - Enable Incremental Linking = Default (选项里只有YES和NO,2个都不选就可以了)
16.Linker - Input - Additional Dependencies =
ntoskrnl.lib
Hal.lib
wdm.lib
wdmsec.lib
wmilib.lib
ndis.lib
MSVCRT.LIB
LIBCMT.LIB
17.Linker - Input - Ignore All Default Libraries = Yes (/NODEFAULTLIB)
18.Linker - Manifest File - Generate Manifest = No
19.Linker - System - SubSystem = Native (/SUBSYSTEM:NATIVE)
20.Linker - System - Driver = Driver (/DRIVER)
21.Linker - Advanced - Entry Point = DriverEntry
22.Linker - Advanced - Base Address = 0x10000
23.Linker - Advanced - Randomized Base Address = NULL (就是把原本有的删除掉)
24.Linker - Advanced - Data Execution Prevention (DEP) = NULL (就是把原本有的删除掉)
25.Common Porperties - General - Target Extension = .sys
设置完后点击确定就可以了。
26.展开MyDriver | Win32选择Microsoft.Cpp.Win32.user,右击选择properties.
然后选择VC++ Directories - Include Directories =
D:\WinDDK\7600.16385.1\inc
D:\WinDDK\7600.16385.1\inc\ddk
D:\WinDDK\7600.16385.1\inc\api
(这个取决于你的WINDDK安装在哪,我的是的安装在D盘)
Library Directories =
D:\WinDDK\7600.16385.1\lib\wnet\i386
2. File -> New -> Project -> Visual C++ -> Empty Project
3. 命名你的工程.e.g MyDriver, 然后点击 OK按钮.
4. Build -> Configuration Manager...
5. 在Active solution configuration里选择<New...>,输入名字,比如MyDriver,然后在Copy setting from:选择debug或者是release,随便选一个
6. View -> property manager,然后选择你之前命名的MyDriver | Win32.然后右击选择Add new project property Sheet,然后命名比如dirverProperty,然后点OK按钮.
然后选择新建的dirverProperty并右击选择Properties,设置如下:
7. C\C++ - General - Debug Information Format = Program Database (/Zi)
8. C\C++ - Preprocessor - Preprocessor Definitions = _X86_
_WIN32_WINNT=0x0500 (分2行写)
9. C\C++ - Code Generation - Enable C++ Exceptions = No
10.C\C++ - Code Generation - Basic Runtime Checks = Default
11.C\C++ - Code Generation - Buffer Security Check = No (/GS-)
12.C\C++ - Advanced - Calling Convention = __stdcall (/Gz)
13.C\C++ - Advanced - Compile As = Compile as C Code (/TC)
14.Linker - General - Output File = $(OutDir)\$(ProjectName).sys
15.Linker - General - Enable Incremental Linking = Default (选项里只有YES和NO,2个都不选就可以了)
16.Linker - Input - Additional Dependencies =
ntoskrnl.lib
Hal.lib
wdm.lib
wdmsec.lib
wmilib.lib
ndis.lib
MSVCRT.LIB
LIBCMT.LIB
17.Linker - Input - Ignore All Default Libraries = Yes (/NODEFAULTLIB)
18.Linker - Manifest File - Generate Manifest = No
19.Linker - System - SubSystem = Native (/SUBSYSTEM:NATIVE)
20.Linker - System - Driver = Driver (/DRIVER)
21.Linker - Advanced - Entry Point = DriverEntry
22.Linker - Advanced - Base Address = 0x10000
23.Linker - Advanced - Randomized Base Address = NULL (就是把原本有的删除掉)
24.Linker - Advanced - Data Execution Prevention (DEP) = NULL (就是把原本有的删除掉)
25.Common Porperties - General - Target Extension = .sys
设置完后点击确定就可以了。
26.展开MyDriver | Win32选择Microsoft.Cpp.Win32.user,右击选择properties.
然后选择VC++ Directories - Include Directories =
D:\WinDDK\7600.16385.1\inc
D:\WinDDK\7600.16385.1\inc\ddk
D:\WinDDK\7600.16385.1\inc\api
(这个取决于你的WINDDK安装在哪,我的是的安装在D盘)
Library Directories =
D:\WinDDK\7600.16385.1\lib\wnet\i386
27.至此配置完毕,如果编译会出错请把C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h复制到D:\WinDDK\7600.16385.1\inc\api\sal.h.建议复制前备份sal.h
Note:在配完所有配置后编译驱动没有问题,但是后来我编译之前写的一个MFC工程会出现问题,是因为和DDK冲突,解决这个问题是把第26步骤改DDK的路径改回默认值