阅读:6717回复:13
循序渐进学Minifilter(微过滤器) 之 二 (开发环境、编译篇)
--------------------------------------------------------------------
循序渐进学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的 学习笔记,我会在后面的一段时间里把其余笔记补充完整,谢谢大家! |
|
最新喜欢:hyjtly...
|
沙发#
发布于:2008-07-31 23:11
Visual Assist X 破解文件
|
|
|
板凳#
发布于:2008-08-01 08:26
感谢。不过现在最新的是1645
|
|
|
地板#
发布于:2008-08-01 08:35
顶!!!
望眼欲穿啊,devia大哥:) 期待下篇。。。 |
|
地下室#
发布于:2008-08-01 10:14
顶上去...
一直关注devia的教程 ^_^ |
|
5楼#
发布于:2008-08-01 19:12
请把WDK 里那些例子都讲解下,也方便后来人,嘿嘿......
|
|
|
6楼#
发布于:2008-08-06 09:06
支持版主,盼望已久啦
|
|
7楼#
发布于:2008-08-11 23:07
vs2005 可以这么配置么?
|
|
8楼#
发布于:2008-08-12 10:00
好东西,正在学习中。。。。感谢LZ
|
|
9楼#
发布于:2008-10-09 16:55
好东西,正在学习中。。。。非常感谢
|
|
10楼#
发布于:2009-07-07 14:27
to devia:
为什么我在一个新安装的XP SP2/SP3环境下用fltmc load swapbuffers加载微过滤驱动时,会出现frame数量为零,而intances不为零的情况呢? |
|
11楼#
发布于:2009-10-15 14:52
加油!期待中
|
|
12楼#
发布于:2009-10-15 18:48
很好,大爱。。
|
|
13楼#
发布于:2010-04-15 20:52
顶一个,学习了。。。
|
|