VS2012+WDK7600.16385.1 驱动环境配置(模板导出)

时间:2015年11月13日 13:50:42
作者:初夏屿森
测试可用.编译完全通过!
环境:WIN7 X64 | Microsoft Visual Studio 2012 | WDK 7600.16385.1
第一步:新建一个空模版

 

第二步:新建配置管理器    
名称为:Driver 并且删除原有的Debug 和 Release 配置模板


建立配置管理器 名称为:Driver



删除 Debug 和 Release 配置管理器,这样我们在导出模板的时候就只有一个驱动模板的配置,很方便,当然也可以不删除



移除他们!属性管理器中就剩下我们定义的管理器:Driver



 

第三步:新建文件.主要用于导出的时候是配置好的,新建的文件中可以不填写任何代码

 

到这里我们做了那些事?

1.通过VS2012 新建了一个空项目

2.在新建的项目中建立一个新的属性 名为:Driver

3.删除了原有的 Debug 和 Release 属性!

接下就是重点了,假设我们将 WDK7600.16385.1安装在C盘

 

配置Driver属性:

 

 

通用属性 ->  常规: 目标文件扩展名:.sys     //这样当然当然是为了生成sys驱动文件啦

通用属性 -> VC++目录
          - 可执行文件目录[添加]:C:\WinDDK\7600.16385.1\bin\x86

- 包含目录[添加]:C:\WinDDK\7600.16385.1\inc\ddk
                      C:\WinDDK\7600.16385.1\inc\crt
                      C:\WinDDK\7600.16385.1\inc\api

          - 库目录[添加]:C:\WinDDK\7600.16385.1\lib\win7\i386

你的WINDDK 安装在那个目录就添加那个路径即可!
============================================================================= 


通用属性 -> C/C++ -> 常规: |调试信息格式:C7兼容(/Z7)
               |警告等级:等级2(/W2)
               |将警告视为错误:是(/WX)

通用属性 -> C/C++ -> 优化: | 优化:已禁用(/OD)

通用属性 -> C/C++ -> 预处理器: |预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1

通用属性 -> C/C++ -> 代码生成: |运行库:多线程调试 (/MTd)
                   |安全检查:否

通用属性 -> C/C++ -> 高级: |调用约定:__stdcall (/Gz)

以上配置呢!并不一定就这样设置,可以根据自己的实际情况适当的修改,慢慢的去理解为什么要这样设置
=============================================================================


通用属性 -> 连接器 -> 常规: |启动增量链接:否 (/INCREMENTAL:NO)
                   |忽略导入库:是

通用属性 -> 连接器 -> 输入: |附加依赖项:ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB
                   |忽略所有默认库:是 (/NODEFAULTLIB)

通用属性 -> 连接器 -> 清单文件: |生成清单:否 (/MANIFEST:NO)
                   |启动用户账户控制(UAC):否 (/MANIFESTUAC:NO)

通用属性 -> 连接器 -> 调试: |生成调试信息:是 (/DEBUG)
                   |生成映像文件:是 (/MAP)
                  |映射文件名:$(TargetDir)$(TargetName).map

通用属性 -> 连接器 -> 系统: |子系统:控制台 (/SUBSYSTEM:CONSOLE)
                   |堆栈保留大小:4194304
                   |堆栈提交大小:4096
                  |驱动程序:驱动程序 (/Driver)

通用属性 -> 连接器 -> 高级: |入口点:DriverEntry
                   |设置效验和:是 (/RELEASE)
                   |基址:0x10000
                   |随机基址: 空 (不要“是”,也不要“否”)
                   |数据执行保护(DEP):空 (不要“是”,也不要“否”)
==================================================================================
到这里就大功告成了
===============================================================复制到CPP文件测试一下吧
#include "ntddk.h"

NTSTATUS 
DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath) 
{ 
return STATUS_UNSUCCESSFUL; 
}
============================================================================

 测试成功了?那么我们就来导出模板!要经常用

Microsoft Visual Studio 2012 - 文件 - 导出模板

 

记得是项目模板!其余一律下一步,适当灵活的更改一下

最后我们来测试一下,成功啦!

 

最后如果亲们发现什么地方存在BUF 可以留言!然后我会修改!

 

posted @ 2015-11-13 14:42  初夏屿森  阅读(582)  评论(0编辑  收藏  举报