zoukankan      html  css  js  c++  java
  • WINDOWS 7 配置驱动开发环境(wdk7.60)

    1.  安装VS2010,WDK7.60(GRMWDK_EN_7600_1)

    2.  新建VC 控制台项目(选择为空项目)

    1_thumb1

    3.  新建项目配置“driver” ,点击下拉按钮-点击(配置管理器)

    6_thumb5

    输入名称(driver)点击确定就可以了,其他的不要动哦!

    3_thumb3

    完成后的效果!

    2_thumb3

    点击确定按钮之后呈现出来的画面

    4_thumb6

    鼠标右击新建的driver属性,会弹出以下窗口!

    5_thumb1
    4.  设置VC++路径

    <我把wdk安装在E盘下>
    a.  配置可执行文件目录:E:\WinDDK\7600.16385.1\bin\x86;
    b.  配置包含目录:E:\WinDDK\7600.16385.1\inc\ddk 
                            E:\WinDDK\7600.16385.1\inc\  
                            E:\WinDDK\7600.16385.1\inc\api  
    c.  配置库目录:    E:\WinDDK\7600.16385.1\lib\win7\i3865

     

    新建C/C++文件 不然无C/C++设置选项

    <刚开始我们创建了一个空的项目所以项目里没有c++文件,现在要做的就是在空的项目-源文件-添加一个新建项c++文件>

    常规 
    目标文件扩展名:.sys          //必选


    6.  设置C/C++选项
    常规选项卡
    1 调试信息格式(C7 兼容(/Z7)        //可选
    2 警告等级     (2 级(/W2)          //可选
    3 将警告视为错误  (是(/wx)         //可选
     
    优化选项卡
    优化(禁用/Od)                          //可选
     
    预处理器
    预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1         //必选
     
    代码生成
           启用最小重新生成:否                                        //可选    

           基本运行时检查:默认值                                     //可选
           运行时库:多线程调试(/MTd)  或  多线程(/MT)                 //建议选 <本人选择的是多线程调试(/MTd)>
           缓冲区安全检查:否                                            //可选
      (可避免出现  LINK : error LNK2001:  无法解析外部符号  __security_cookie)
    高级
         调用约定  __stdcall(/Gz)                                       //必选
     
    7.  链接器设置
    常规
         启用增量链接:否(/INCREMENTAL:NO)                           //建议 选上
         忽略导入库:是                                                  // 可选 
         ( 设置为此值时,必须在附加库目录中加: E:\WinDDK\7600.16385.1\lib\win7\i3865  这样项目就不会依赖 IDE 环境的设 置) 

         如果否  (  设置为此值时,将依赖  IDE  的环境的相关设置  )
     
    输入
    附加依赖项
    ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB       //必选   

    //NT式驱动  ntoskrnl.lib    WDM式驱动    wdm.lib
    ( HalXXX 函数在Hal.lib, WmiXXX 函数在  wmilib.lib  , NdisXXX函数在  ndis.lib )
    (  必要时需要增加微软的标准库  MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) )
      (  如果源码中有  source  文件,那么该文件的  TARGETLIBS  字段会列出该项 目需要的库  )

    忽略所有默认库:    是 (/NODEFAULTLIB)                 //必选  

    清单文件
      启用用户账户控制(UAC)   否  //必选 

    不然会出现  >LINK : fatal error LNK1295: “/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC”  
     
         调试
    生成调试信息  是(/DEBUG)                                              //可选
    生成映像文件:是(/MAP)                                               //可选
    映像文件名:$(TargetDir)$(TargetName).map                     //可选
     
        系统(System)
         子系统:  控制台(/SUBSYSTEM:CONSOLE)                                //必选
         堆栈保留大小:4194304                                              //可选
         堆栈提交大小:  4096                                                //可选
         驱动程序:    驱动程序(/DRIVER)                                        //必选  
          高级:
        入口点:DriverEntry                                                    //必选
        随机基址:清空           //把框里的数据删掉。(yes也不是no也不是就是要一个干干净净的文本框)   //必选
        不然会出现  e:\xxx.sys : fatal error LNK1295:
    “/DYNAMICBASE”与“/DRIVER”规范不兼容;链接时不使用“/DYNAMICBASE”


        数据执行保护(DEP):  清空 //把框里的数据删掉。(yes也不是no也不是就是要一个干干净净的文本框) //必选  
         不然会出现  e:\xxx.sys : fatal error LNK1295:       
    “/NXCOMPAT:NO”与“/DRIVER”规范不兼容;链接时不使用“/NXCOMPAT:NO”   

    设置效应和:是(/RELEASE)                              //可选

    基址:0x10000                                           //建议选上 
       
     命令行:/SECTION:INIT,D /IGNORE:4078        (建议不要写进去,会报错!)                    

    最后给出一个超级简单的代码来测试一下我们配置的是否成功??

    #include "ntddk.h"

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

    如果没有报错那么恭喜你配置成功了!

    作者:noting better
    出处:http://korykim.cnblogs.com
    欢迎任何形式的转载,但请务必注明出处。
    <在使用某一技能三个月后,你还不是专家,即便使用时间是三年,你还不是。马尔科姆·格莱德威尔在《异类》一书中指出,成为一名真正的专家,需要10000小时。10000小时!如果一天用10小时,每天都学习,则大概需要3年时间。如果一天5小时,一年学习200天,则大概需要10年时间。10年!>

    测试:

  • 相关阅读:
    wex5 实战 框架拓展之2 事件派发与data刷新
    wex5 实战 框架拓展之1 公共data组件(Data)
    wex5 实战 HeidiSQL 导入Excel数据
    wex5 实战 手指触屏插件 hammer的集成与优劣
    wex5 实战 登陆帐号更换与用户id一致性
    wex5 实战 用户点评与提交设计技巧
    wex5 实战 省市县三级联动与地址薄同步
    wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
    wex5 实战 单页模式下的多页面数据同步
    [BZOJ]4237: 稻草人
  • 原文地址:https://www.cnblogs.com/korykim/p/1948771.html
Copyright © 2011-2022 走看看