xiang
驱动牛犊
驱动牛犊
  • 注册日期2001-06-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1875回复:3

VXD的编译

楼主#
更多 发布于:2001-07-31 13:19
本人第一次接触VXD,用VTOOLSD 和VC6.0
可是连例子都编译不通过,出错信息为:
C:\PROGRA~1\NUMEGA\DRIVER~1\VTOOLSD\include\vxdtarg.mak(94) : fatal error U1031: filename missing (or macro is null)
Stop.
Error executing NMAKE.
请各位指点!

最新喜欢:

fueanafueana
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-07-31 15:20
which example do you compile?

ccc
ccc
驱动牛犊
驱动牛犊
  • 注册日期2001-07-15
  • 最后登录2005-03-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-05 21:01
看一下你的make文件中的所有包含文件,如果有programe file 改为PROGRA~1
jifeng
驱动牛犊
驱动牛犊
  • 注册日期2001-09-01
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-09-03 16:24
首先用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的源代码了,是不是很方便吧?
 
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.0的TRACE()。调试完毕,退出Debug Monitor时,一定要注意先点击菜单File/Stop Driver,停止运行VxD,不然,再次进入Debug Monitor时,必定造成系统崩溃。
 
4. 设置VxD的版本信息。
在软件升级时,文件的版本信息起着至关重要的作用。用VC6.0无法设置VxD版本信息,只能通过VxdVer来手工设置。(希望国内一个很著名的软件作者,看了此方法后,也把自己的SthVxd.vxd加上版本信息。)
最初,作者试图通过VC6.0来添加版本信息,但无论是修改VxD的头文件,还是设置VC6.0的Resource Files ,均告无效。看过VtoolsD的帮助文件,对VxD Ver的用法的介绍也是含糊不清,居然也不举个例子说明,苦了VxD的初学者。
作者经过在网上查找资料,并不断摸索,终于找到了设置VxD的方法:
如果要生成的VxD是MY.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.vxd,VxD的版本信息就设置成功了。
以前,我一直觉得编写VxD是一项很难的工作,其实,掌握了方法并不难。希望本文能为大家编写VxD带来帮助。有兴趣的朋友可以光临我的网页:http://iflower.363.net,欢迎大家来信探讨:mafeitao@sina.com
joshua
游客

返回顶部