win7+VS2008+WDK 配置ddk驱动开发方法

对于我来说,最害怕的就是新接触一个IDE要去重新配置他的这个配置他的那个,搞得我有种想死的冲动,比如配置android模拟器,java环境变量等等,今天又遇到了另外一个难题,就是配置ddk的环境。我的开发环境是win7+VS2008+WDK 7600.16385.1。经过了多少次的查资料失败之后,终于配置成功了,特记录下来以备后用。

 

1.      在干净的系统上装vs2008

2.      wdk 7600.16385.1

3.      开始重点了。随便打开一个程序,让debug release等的解决方案配置管理器激活,然后新建一个活动解决方案配置,从此处复制设置为空

选择”工具“|”选项“菜单选择”项目和解决方案“选项卡:

  选择“VC++目录,选择”包含文件,添加C:\WinDDK\7600.16385.0\inc\ddk“和"C:\WinDDK\7600.16385.0\inc\api"

  选择”库文件,添加C:\WinDDK\7600.16385.0\lib\wxp\i386

接下来就是工程配置属性项

4、选择”项目“|”属性“弹出”属性页“对话框  选择”配置属性“选项卡   选择“C/C++”选项卡

     4.1、再选择”常规“选项卡

           1、”调试信息格式“  选择 C7兼容(/Z7)用Z7模式产生调试信息

           2、取消显示启动版权标志  选择    (/nologo)(默认)

           3、警告等级选择    3(/W3)

           4、将警告视为错误   选择是(/WX)

    4.2、选择”优化“选项

           1、优化选择  禁用(/Od)

             其他默认即可

    4.3    选择”预处理器“选项卡

           1、预处理定义  编辑   WIN32=100;_X86_=1;DBG=1  

              其他默认即可

    4.4    选择”高级“选项卡

        1、调用约定选择 __stdcall (/Gz)(驱动函数调用采用标准调用)

5、好了,轮到”连接器“选项卡了

          5.1 选择”常规“选项卡

                1、输出文件   编辑     MyDriver_Check/HelloDDK.sys

                2、启用增量链接选择    (/INCREMENTAL:NO)

                3、附加库目录编辑C:\WinDDK\7600.16385.0\lib\win7\i386   (因为等下要用到ntosknl.lib   如果是WDM驱动程序,则需要链接wdm.lib

                  其他选项默认

          5.2 选择“输入"选项卡

                 1、附加依赖项   编辑弹出”附加依赖项    “编辑框  编辑   ntoskrnl.lib   复选框”从父级或项目默认设置继承“的勾去掉   (免得调用用户层 lib 文件)

                 2、忽略所有默认库选择   (/NODEFAULTLIB)

                    其他选项默认

          5.3 选择”调试“选项卡

                   1、生成调试信息选择  (/DEBUG)

                   2、生成程序数据库文件  编辑MyDriver_Check/HelloDDK.pdb

          5.4  选择”系统“选项卡

                   1、子系统   选择   本机(/SUBSYSTEM:NATIVE)

                   2、堆栈保留大小编辑 40000

                   3、堆栈提交大小编辑 1000

                   4、驱动程序       选择    驱动程序(/DRIVER)

          5.5  选择”高级“选项卡

                  1、入口点  编辑    DriverEntry    (驱动的入口函数地址)

                  2、基址   编辑    0x10000

                  3、目标计算机    MachineX86 (/MACHINE:X86)    (一般是这个)

 

 

到这里之后还是不可以,他会说什么_In_  _Out_什么的找不到,我在这里看到了他好像是没有找到头文件crtdefs.h 在包含里面添加上这个  D:\WinDDK\7600.16385.1\inc\crt 

 

然后那么多错误就没有了,下面是link错误

启用用户账户控制(UAC)否 //必选不然会出现 >LINK : fatal error LNK1295:/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC

随机基址:默认值    //必选不然会出现1>G:\event2008\check\event2008.exe : fatal error LNK1295:/DYNAMICBASE”与“/DRIVER”规范不兼容;链接时不使用“/DYNAMICBASE

数据执行保护(DEP): 默认值 //必选不然会出现 G:\event2008\check\event2008.sys : fatal error LNK1295:/NXCOMPAT:NO”与“/DRIVER”规范不兼容;链接时不使用“/NXCOMPAT:NO

 

    添加开关:/SECTION:INIT,D/IGNORE:4078 //建议填上

 

     可以避免以下错误提示

     LINK : warning LNK4078:找到多个“INIT”节,它们具有不同的属性(E2000020)

     LINK : error LNK2001: 无法解析的外部符号__load_config_used

 

 

 

天啊终于解决了。

展开阅读全文

没有更多推荐了,返回首页