devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
阅读:6468回复:13

循序渐进学Minifilter(微过滤器) 之 二 (开发环境、编译篇)

楼主#
更多 发布于:2008-07-31 23:09
--------------------------------------------------------------------
循序渐进学Minifilter(微过滤器) 之 二 (开发环境、编译篇)
--------------------------------------------------------------------

本篇我们将系统地介绍驱动开发环境以及驱动编译等相关知识,高手飘过,&_&!

1. 工欲善其事,必先利其器!选择一款适合自己的开发工具是非常重要的,我推荐如下开发组合:

Visual Studio 2003 (VS2003)
Visual Assist X (VAx)
Windows Driver Kits 6000 (WDK)

如何获得WDK?
https://connect.microsoft.com

有几点需要注意:
  a. 首先下载WDK,需要注册一个Windows Live ID;
  b. 安装WDK时建议按照安装程序的默认设置进行安装;
  c. 在安装例子时建议全部安装,免得以后需要时麻烦;

如何获得VAx?
见附件(vs_x.dll是破解文件,直接覆盖安装目录即可)

2. 配置篇

  a. WDK环境设置: (以Windows XP SP2为例进行讲述)
     右键点击"我的电脑",选择"属性"打开"系统属性"对话框,
     选择"高级"属性页,点击"环境变量"按钮打开"环境变量"对话框,
     然后在"系统变量"列表中"新建"一个环境变量:
     BASEDIR = C:\WinDDK\6000
     如果你的WDK安装在其它目录请按照实际情况进行设置!

  b. VS2003, VAx配置:
     打开VS2003,默认会自动加载VAx插件,当第一次使用VAx时我们规划以下VAx的
     常用命令工具条,如果您认为没有这个必要的话可是跳过此步骤:
     . 首先在VAx的主菜单上点击:"Enable/Disable Visual Assist X"激活VAx;
     . 右键点击VS2003主菜单栏的任何空白位置,选择"自定义"菜单打开"自定义"对话框,
       选择"命令"页面,在"类别"里选择"VAssistX",这时右边的"命令"列表会显示VAx
       插件的所有命令,然后用鼠标左键选中你认为常用的命令,直接拖拽到VS2003的主工具栏;

3. 建立我们的第一个Minifilter工程

   a. 为了便于下面讲述,我们直接在WDK目录创建VS2003工程,但是实际中不推荐这样做,
      避免由于误操作而损坏WDK环境

   b. 打开VS2003, 新建项目
      项目类型选择"Visual C++ 项目"分支中的"常规"子分支里的"生成文件项目";
      项目名称: "swapBuffers"
      位置    : "C:\WinDDK\6000\src\filesys\miniFilter\swapBuffers"
      不要勾选"创建解决方案的目录"选择框,
      然后点击"完成"即可,详细的配置我们不在这里设置,后面会讲到.

   c. 在"解决方案资源"中添加项目文件,这里添加swapBuffers.c,
      swapBuffers.rc和Source这三个文件,其中.c文件无疑是源码文件,
      .rc是资源文件,驱动工程里这个文件主要包含了驱动的版本相关信息,
      而Source文件是Build的源(描述性)文件.
      这三类文件是一个驱动工程的典型缩影!

   d. 工程有了,那么剩下的就是怎么配置编译环境了,在VS2003的"项目"主菜单中
      点击"属性"菜单打开项目"属性页",选择"Debug"为当前"配置",选择"配置属性"
      下的"NMake"属性,在右边的视图区编辑"生成命令行",我们输入:
      "drv_build chk WNET"

      如果Release是当前配置的话请输入:
      "drv_build free WNET"
    
      "输出"栏输入: "swapBuffers.sys"

      点击"确定"退出"属性页"对话框.

   e. 那么上面drv_build是什么呢? 它其实是我们编写的一个自动批处理脚本,内容如下:

      @echo off

      pushd.
      call %BASEDIR%\bin\setenv.bat %BASEDIR% %1 %2
      popd
      set INCLUDE=%INCLUDE%

      @echo on
      build

     >> 简单说明下上面的几个陌生的命令的含义:
     echo   - 显示消息或将命令回显打开或关上(off/on:关闭/打开)
     pushd. - 保存当前目录,然后对其进行更改
     popd   - 还原PUSHD保存的当前目录的上一个值
     call   - 从另一个批处理程序调用这一个
     set    - 显示、设置或删除Windows环境变量
     build  - 这时WDK的BUILD脚本

     >> 自动批处理里面使用%1,%2,%3...来表示用户调用时的输入参数
        比如: drv_build chk WNET, 那么,%1和%2就依次代表chk和WNET这两个输入参数.

     >> 如果您还想了解更多关于自动批处理脚本命令的话请打开cmd,直接输入help即可
        列出所有的相关命令及其功能描述.

   f. 最后在VS2003上里直接编译即可,注意:由于我们在"项目属性页"里没有指定
      "全部重新生成命令行". 所以, 执行"重新生成"时会报错;

=========================================================================

   好了,今天我们就讲到这里,在下一节我们讲以SwapBuffers工程为框架讲述Minifilter的开发知识,
  这段时间工作忙昏了头,所以Minifilter的学习笔记很久没有补充了,不过,请大家继续关注Minifilter的
  学习笔记,我会在后面的一段时间里把其余笔记补充完整,谢谢大家!
附件名称/大小 下载次数 最后更新
VA_X_Setup1561.part1.rar (586KB)  102 2008-07-31 23:09
VA_X_Setup1561.part2.rar (586KB)  83 2008-07-31 23:09
VA_X_Setup1561.part3.rar (586KB)  80 2008-07-31 23:09
VA_X_Setup1561.part4.rar (586KB)  85 2008-07-31 23:09
VA_X_Setup1561.part5.rar (586KB)  79 2008-07-31 23:09
VA_X_Setup1561.part6.rar (586KB)  76 2008-07-31 23:09
VA_X_Setup1561.part7.rar (54KB)  71 2008-07-31 23:09

最新喜欢:

hyjtlyra2009hyjtly...
人总在矛盾中徘徊。。。
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
沙发#
发布于:2008-07-31 23:11
Visual Assist X 破解文件
附件名称/大小 下载次数 最后更新
va_x.part1.rar (586KB)  75 2008-07-31 23:11
va_x.part2.rar (468KB)  67 2008-07-31 23:11
人总在矛盾中徘徊。。。
游客

返回顶部