devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
阅读:6735回复: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
人总在矛盾中徘徊。。。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
板凳#
发布于:2008-08-01 08:26
感谢。不过现在最新的是1645
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
地板#
发布于:2008-08-01 08:35
顶!!!

望眼欲穿啊,devia大哥:)
期待下篇。。。
nvicly
驱动牛犊
驱动牛犊
  • 注册日期2006-09-12
  • 最后登录2019-01-21
  • 粉丝1
  • 关注0
  • 积分12分
  • 威望158点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2008-08-01 10:14
顶上去...

一直关注devia的教程 ^_^
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2008-08-01 19:12
请把WDK 里那些例子都讲解下,也方便后来人,嘿嘿......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
stpaladin
驱动牛犊
驱动牛犊
  • 注册日期2008-06-19
  • 最后登录2010-12-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望39点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-08-06 09:06
支持版主,盼望已久啦
lihaif2001
驱动牛犊
驱动牛犊
  • 注册日期2008-07-25
  • 最后登录2011-03-30
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-08-11 23:07
vs2005 可以这么配置么?
ifsys2008
驱动牛犊
驱动牛犊
  • 注册日期2008-08-12
  • 最后登录2008-08-17
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-08-12 10:00
好东西,正在学习中。。。。感谢LZ
chunvv
驱动牛犊
驱动牛犊
  • 注册日期2005-04-30
  • 最后登录2011-03-24
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望245点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-10-09 16:55
好东西,正在学习中。。。。非常感谢
quicmous
驱动牛犊
驱动牛犊
  • 注册日期2007-02-09
  • 最后登录2009-08-14
  • 粉丝0
  • 关注0
  • 积分115分
  • 威望44点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2009-07-07 14:27
to devia:

         为什么我在一个新安装的XP SP2/SP3环境下用fltmc load swapbuffers加载微过滤驱动时,会出现frame数量为零,而intances不为零的情况呢?
zhuyonge
驱动牛犊
驱动牛犊
  • 注册日期2009-08-27
  • 最后登录2010-07-03
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2009-10-15 14:52
加油!期待中
nth2say
驱动牛犊
驱动牛犊
  • 注册日期2009-10-09
  • 最后登录2014-03-17
  • 粉丝1
  • 关注0
  • 积分28分
  • 威望281点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2009-10-15 18:48
很好,大爱。。
rhpeng
驱动牛犊
驱动牛犊
  • 注册日期2009-10-15
  • 最后登录2011-10-02
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望241点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2010-04-15 20:52
顶一个,学习了。。。
游客

返回顶部