用VC6.0集成环境快速开发VxD

VC++6.0 Edit 使用示例(含多项功能) VC++6.0 Edit 使用示例(含多项功能),例如:改变文本的字体,文本的颜色,文本的背景,对话框的背景,文本的追加,文本的逐行读取与保存,滚动条的滚动操作等等。 立即下载

                                                    作者/马飞涛

VxD (Virtual Device Driver), 即虚拟设备驱动程序, 是运行在处理器Ring0特权级别的驱动程序,可以执行任何处理器指令,访问机器中的任何数据寄存器。VxD被用作Windows 9x系统和物理设备之间的接口,扩展了WINDOWS 系统的核心服务,能够访问和控制实际的硬件环境。

随着WIN 2000和新一代的设备驱动程序WDMWindows Driver Model)推出,预计VxD将慢慢过时,而现实情况却是:随便打开一种网络计数器的统计窗口就会发现,Windows 98 系统仍然占据了90%以上的市场份额。怎么才能掌握一种省时高效开发VXD的方法,就成为程序员们迫切需要解决的问题。

 

回顾传统的方法,用微软的DDK来编写VXD,是一项非常烦琐漫长的过程:

1 编辑代码居然没有图形界面,还是在DOS的命令行中用EDITEDIT不支持多窗口,查看、替换代码都很不方便。

2 编译只能用VC5.0,而不能用的VC6.0。在WIN 98 DDK 帮助中, System Requirements 部分,微软清楚地提醒大家:Note that Visual C++ 6.0 is not supported for any of the samples.

3 对静态VxD,每次改写代码,都需要在system.ini ,对节[386Enh] 行:device= VxD文件名, 每次改写,都要重新启动计算机,每次都要经过漫长的等待过程,简直让人无法忍受。

 

如何解决上述3个问题,笔者仅就工作中取得的经验,谈谈用VC6.0集成环境快速开发VxD的方法,希望能给大家带来一些帮助。

在开发护花使者反黄软件时,笔者采用了VtoolsD 3.0来编写文件保护VxD模块。

VtoolsD 3.0 Compuware 公司开发的软件包,包含几个实用工具:

1.  QuickVxD:创建VxDCC++语言框架,它不仅支持VC5.0VC6.0 ,而且支持Borland C++ 5.x。和VCAppWizard 类似,QuickVxD相当于一个代码生成器,不同的是AppWizardMFC类库来生成程序框架,而QUICKVXD利用自定义的一系列宏和类来生成程序框架。

2.  Debug Monitor:动态装卸并显示VxD的调试信息,不仅能装载动态VxD,而且还可以装载静态VxD 装载后调试完毕,无论是动态还是静态的VxD,都可以随时卸载。这是一个足以让微软为之汗颜的强大功能,成功地避免了编写静态VxD每次都要重新启动的麻烦,给编程者带来极大的方便。

3VxdVer.exeDOS 命令行工具,可以设置VxD的版本信息。这个小工具也很重要,因为用VC6.0无法设置VxD版本信息,只能通过VxdVer来手工设置。

 

下面,详细介绍一下用VC6.0集成环境快速开发VxD的具体步骤:

首先用QuickVxd生成VxD的框架程序,点击:开始菜单/Numega VtoolsD/QuickVxD,打开QuickVxD,选取Device Parameters ,设置Device Name =MY;选取OutPut Files, 然后按下Generate Now按钮,就生成了VxD的框架源程序,它包括3个文件:后缀为.h的头文件;后缀为.ccpp的代码文件;后缀为.mak的工程文件。然后,我们把这3个文件:MY.h MY.cppMy.mak 复制到E:/my/目录下。传统的在命令行中生成VxD的方法如下:

点击:开始菜单/Development Kits/Windows 98 DDK/Checked(Free) Build Environment,

设置编译环境,在DOS的命令行中,找到MY .mak文件,设置E/my为当前目录,输入指令:nmake,即可生成后缀为.VxD的文件。

 

然后,我们再把VxD的框架程序和VC6.0的开发环境集成在一起:

1.把VxD的工程文件集成进入VC6.0的编译器:

VC6.0中新建工作空间文件,打开VC6.0,选择File/New,选择Project tab,点击Makefile, Project Name中输入my, Location中输入E:/my, (注意:在新建Makefile时,project name 的名字要和 Location的目录名保持一致,在本例中同为my。) 然后点击ok,OutPut中,把原来的my.exe换成my.vxd,点击Finish.

这时,VC6.0就自动生成了项目文件my.dsp和工作空间文件my.dsw。然后,就可以用VC6.0的编译器来生成VxD了,方法如下:点击VC6.0的菜单Build/Build my.vxd

2.把Vxd的源文件集成进入VC6.0的编辑器:

VC6.0WorkSpace窗口,选择FileView页面,右键点击Source Files,在快捷菜单中,选择Add Files to Folder,添加源文件MY.cpp;如法炮制,添加头文件MY.h

这时,我们就能通过VC6.0 WorkSpace窗口来观察VxD类了,点击Class View页面,可以看到my.vxd3个类:MyDevice, MyThread, MyVm。至此,我们编辑VxD代码时,再也不需要用命令行的EDIT.COM

要想在编辑器中工作得更方便,我们还需要设置浏览信息,才能用F12来查看类的定义和参考。方法如下:

1) 选择VC6.0的菜单:Project/Settings…

2) 设置 Build Command Line:  nmake /f "my.mak" BROWSE=1

3) 设置 Browse info File Name: MY

4) 点击ok,然后选择VC6.0的菜单File/Open,打开MY.bsc

这时,用右键点击VC6.0的源代码窗口,快捷菜单中就会出现 Goto Definition ofGoto Reference of  2个选项。然后,我们就可以用VC6.0中非常熟悉的界面来编辑VxD的源代码了,是不是很方便吧?

 

3. Debug Monitor添加到VC6.0的工具菜单里:

在调试VxD源代码时,常用dprintf()dout<<来输出调试信息,Debug Monitor可以动态装卸并显示VxD的调试信息,我们可以把这个调试工具也集成在VC6.0中。点击VC6.0的菜单Tools/Customize…,选择Tools项,输入新建菜单的名称VxD Monitor 或任意别的名称,设置Command:  C:/Program Files/NuMega/VtoolsD/Bin/monitor.exe,即可以把Debug Monitor添加到VC6.0的工具菜单里。

当我们调试VxD时,可以点击刚才新建的VxD Monitor菜单,运行Debug Monitor。选择Debug Monitor的菜单File/Open Driver…来装载要调试的VxD;选择菜单File/Start Drive 来运行VxD, 运行后,在Debug Monitor的窗口中,就能看到调试信息了。这个功能相当于VC6.0TRACE()。调试完毕,退出Debug Monitor时,一定要注意先点击菜单File/Stop Driver,停止运行VxD,不然,再次进入Debug Monitor时,必定造成系统崩溃。

 

4. 设置VxD的版本信息。

在软件升级时,文件的版本信息起着至关重要的作用。用VC6.0无法设置VxD版本信息,只能通过VxdVer来手工设置。(希望国内一个很著名的软件作者,看了此方法后,也把自己的SthVxd.vxd加上版本信息。)

最初,作者试图通过VC6.0来添加版本信息,但无论是修改VxD的头文件,还是设置VC6.0Resource Files ,均告无效。看过VtoolsD的帮助文件,对VxD Ver的用法的介绍也是含糊不清,居然也不举个例子说明,苦了VxD的初学者。

作者经过在网上查找资料,并不断摸索,终于找到了设置VxD的方法:

如果要生成的VxDMY.vxd,就用EDIT新建一个同名的MY.vrc, 以护花使者文件防删模块antidel.vxd为例, MY.vrc的内容如下:

CompanyName   =      "http://iflower.363.net"

FileDescription   =      "antidel file"

FileVersion      =      "Version 1.01"

InternalName    =      "ANTIDEL"

LegalCopyright  =      "mafeitao@371.net"

OriginalFilename =      "antidel.vxd"

ProductName   =       "antidel"

ProductVersion  =       "Version 1.01"

Translation     =     0x409, 0x4E4

 

存盘退出,在命令行执行:VxdVer.exe my.vcr my.res 然后,在用VC6.0重新编译一边MY.vxdVxD的版本信息就设置成功了。

以前,我一直觉得编写VxD是一项很难的工作,其实,掌握了方法并不难。希望本文能为大家编写VxD带来帮助。有兴趣的朋友可以光临我的网页:http://iflower.363.net,欢迎大家来信探讨:mafeitao@sina.com

vc6.0 完整的文本编辑器源码 vc6.0 完整的文本编辑器源码,成功运行,试过了,难得的学习资料,是初学者的最佳选择! 立即下载

相关推荐

Edit编辑框输入演示程序(VC6.0

VC6 MFC Edit控件 限制输入长度、仿序列号输入、限制输入指定的字符或数字、自动跳转到下一个编辑框

VC6.0编辑框CEdit的文本操作

创建一个编辑框对象,例如myedit。 常用函数: myedit.Getsel( A,B):是用来获取编辑框中当前选定文本的开始与结束的位置,必须是选定文本的开始与结束位置,并分别存在两个参数中。 myedit.Setsel():是用来选取指定范围内的文本,或者定位插入符的。 Setsel(0,-1)的作用是选中当前所有文本。而Setsel(int nStartChar, int nEnd

七水的博客 4517

Visual C++ 6.0环境配置

<br />一个好的环境,能让你的工作事半功倍。下面是我个人对VC++6.0环境配置,仅供抛砖引玉之用。 2. 环境设置(Environment Settings) 此设置针对与所有工程有效。打开目录ToolsàOptions,在此作相应的设置。 2.1 配置Tab键所占的字宽 一般所来,Tab在各个程序中字宽为8,而VC默认把其设为4。我们将其改回8,好处是,当将代码从VC复制到其它程序(如notepad)时,代码不会变乱(不对齐)。如图: 2.2 配置代码颜色 改动

zblovejava的专栏 2104

扩展Edit Box控件的功能(一)

VC++6.0编程的时候,文本编辑控件Edit Box是一个经常用到的控件。如果你是用它输入一些简单的文字、数字等信息,直接拿来用就可以了,但如果你用它制作大文本的编辑软件,就会觉得不好控制,许多功能无法实现,即便用CEditView,也只会生成一个类似于记事本的东西,再想加入些自己编写的功能也很困难。下面我以CEdit为基类定义了一个CEditBox类,加入了许多文本编辑时经常要用到的接口函数

wanxiaohong1350的专栏 1236

VC6.0常用控件的操作

*除非特别说明,本文中所用控件变量类型为Control     一般控件可用/不可用     EnableWindow(TRUE);     EnableWindow(FALSE);     1、Static Text------------静态控件--类CStatic     取值/赋值(变量类型为Control)     m_lbl.GetWindowText(string);

d_a_r_k的专栏 988

VC6.0集成环境快速开发VxD(转载)

VxD (Virtual Device Driver), 即虚拟设备驱动程序, 是运行在处理器Ring0特权级别的驱动程序,可以执行任何处理器指令,访问机器中的任何数据寄存器。VxD被用作Windows 9x系统和物理设备之间的接口,扩展了WINDOWS 系统的核心服务,能够访问和控制实际的硬件环境。随着WIN 2000和新一代的设备驱动程序WDM(Windows Driver Model)推出,

haha365的专栏 867

一个网友写的用VC6.0集成环境快速开发VxD

一个网友写的用VC6.0集成环境快速开发VxDVC6.0集成环境快速开发VxD                 VxD   (Virtual   Device   Driver),   即虚拟设备驱动程序,   是运行在处理器Ring0特权级别的驱动程序,可以执行任何处理器指令,访问机器中的任何数据寄存器。VxD被用作Windows   9x系统和物理设备之间的接口,扩展了WINDOWS

cason的专栏 924

DriverStudio 开发USB驱动程序

 DriverStudio 开发USB驱动程序    很多写Windows Device Driver的开发人员基本上都是使用Windows DDK进行开发的。但是,现在也有不少人都开始借助一些辅助工具。笔者去年开始接触到riverStudio,发现它真的是一个不错的开发工具,不仅写代码的时候思路清晰,而且和DDK的结合很好。    当然,也有很多人觉得用DriverStudio不够正宗,

luckysolar的专栏 1917

Windows DDK要点指南

<!--//设置下面的三行参数,分别是宽度、高度和背景色。var scrollerwidth=350var scrollerheight=20var scrollerbgcolor=#ff993

aaaaatiger--寻路 6323

转-USB驱动开发工具比较

最近想看看关于USB驱动开发的资料,有时间自己开发一个USB驱动. USB驱动开发的主要工具:DDK(DDK是Device Development Kit,设备开发包的意思)、WinDriver、DriverStudio三种(不知道是否适合于其它驱动的开发)。 比较如下:     用WinDriver和DriverStudio开发驱动比DDK简单容易上手,但WinDriver开发驱动没法脱离

richthoffen的专栏 793

usb驱动开发工具比较(转)

最近想看看关于USB驱动开发的资料,有时间自己开发一个USB驱动.USB驱动开发的主要工具:DDK(DDK是Device Development Kit,设备开发包的意思)、WinDriver、DriverStudio三种(不知道是否适合于其它驱动的开发)。比较如下:    用WinDriver和DriverStudio开发驱动比DDK简单容易上手,但WinDriver开发驱动没法脱离

MannHello的专栏 3318

开发WDM型USB设备驱动程序(二)

  开发USB设备驱动程序需要专门的开发工具,目前应用广泛的工具主要有两大类。  一类是Microsoft公司提供的Windows DDK(Device Driver Kit)。它有Windows 98 DDK和Windows 2000 DDK两个版本。Windows 98 DDK能够开发Windows 95/98/Me/NT下的VxD、KMD和WDM驱动程序。Windows 2000 DDK 能

djsky的专栏 1739

【转帖】楚狂人的 DriverNetworks开发网络驱动教材(0-7课)

 楚狂人的 DriverNetworks开发网络驱动教材(0-7课) 简要说明: 这是一本您可以免费得到和自由传播的Ndis网络驱动开发的教材。以循序渐进的方式,通过大量的简单的示例代码介绍如何使用DriverrNetworks开发网络驱动。这本书由楚狂人搜集撰写。可以自由传阅修改。仅仅用于交流与学习。一部分来源于DriverNetworks帮助的翻译。一部分是楚狂人本人本人的工作经验介绍。若

floweronwarmbed的专栏 2183

汇编IDE的选择与配置

IDE,全称集成开发环境,对于MASM的IDE,我想每个人最低的要求都至少要求在写程序时不需要在命令行中手工输入命令来编译再链接,这样很不方便,如果代码有错,就需要用编辑器(一般是计事本)修改然后再重复的编译、链接,把大量的时间花在这种操作上,不爽! 为此,RedASM出现了,它具备了写MASM程序的所有基本功能,只要设置好,在RedASM中写程序简直和用VC差不多,API函数原型的提示

5284

dll依赖查看工具-depends

depends简介        一般情况下,一个可执行文件(exe或dll)的运行会依赖其他dll文件。        Depends用来显示与一个可执行文件(exe或者dll)相关的依赖项(dll),以及该exe或dll引用了这些dll中的哪些接口。同时也可以看到每个被依赖的dll中的所有导出的函数接口。        比如我们生产了一个exe程序,显然在我们的开发环境下是可以执行这个e...

顺其自然~专栏 1万+
上一篇: VC++多线程下内存操作的优化
下一篇: The Future According to ASP+
zdg
zdg
博客等级 码龄27年 3212粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值