littletang
驱动牛犊
驱动牛犊
  • 注册日期2004-11-24
  • 最后登录2005-02-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2771回复:2

为什么我没有.bsc文件??

楼主#
更多 发布于:2004-12-10 14:03
    我照着<用VC6.0集成环境快速开发VxD>一文顺序做下来,却没有发现.bsc文件。请问是什么地方错了??
文章如下:
VxD (Virtual Device Driver), 即虚拟设备驱动程序, 是运行在处理器Ring0特权级别的驱动程序,可以执行任何处理器指令,访问机器中的任何数据寄存器。VxD被用作Windows 9x系统和物理设备之间的接口,扩展了WINDOWS 系统的核心服务,能够访问和控制实际的硬件环境。

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

 

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

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

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:创建VxD的C和C++语言框架,它不仅支持VC5.0和VC6.0 ,而且支持Borland C++ 5.x。和VC的AppWizard 类似,QuickVxD相当于一个代码生成器,不同的是AppWizard用MFC类库来生成程序框架,而QUICKVXD利用自定义的一系列宏和类来生成程序框架。

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

3.VxdVer.exe:DOS 命令行工具,可以设置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的头文件;后缀为.c或cpp的代码文件;后缀为.mak的工程文件。然后,我们把这3个文件:MY.h、 MY.cpp和My.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.0的WorkSpace窗口,选择FileView页面,右键点击Source Files,在快捷菜单中,选择Add Files to Folder,添加源文件MY.cpp;如法炮制,添加头文件MY.h。

这时,我们就能通过VC6.0 的WorkSpace窗口来观察VxD类了,点击Class View页面,可以看到my.vxd的3个类: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 of和Goto Reference of  这2个选项。然后,我们就可以用VC6.0中非常熟悉的界面来编辑VxD的源代码了,是不是很方便吧?
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-10 17:56
想要说什么?
在交流中学习。。。
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-10 21:43
已经过时了,它只支持98以下,
现在你再看看有个在用98,我用2000感觉都落后了,
现在都是XP,2003了
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
游客

返回顶部