vcshcn
驱动牛犊
驱动牛犊
  • 注册日期2001-09-23
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1391回复:4

请您看看我的问题吧?

楼主#
更多 发布于:2001-12-06 00:18
您好,我的情况是这样的。我在9月份写了一个vxd架子skeleton.asm,汇编、连接都通过了,产生了一个vxd文件。我用delphi写了一个加载程序,一createfile就出错,一个月以前问题是路径错误,现在是网络错误,都2个月了,还是没解决。
一加载,用getlasterror()取得错误号,并显示“不支持网络请求”。
刚开始,我怀疑加载程序的问题,试了半天,也不成,而且我用此程序加载了一个网上下载的vpacket.vxd就成功了。所以我怀疑是vxd源代码有问题,我查了查也查不出,在此贴出vxd source,希望您能看看。
我的操作系统是win98se,用的是98ddk.

;vxd源程序
.386p
include vmm.inc

DECLARE_VIRTUAL_DEVICE SKELETON,1,0,ControlProc,UNDEFINED_DEVICE_ID,UNDEFINED_INIT_ORDER

VxD_LOCKED_CODE_SEG
BeginProc ControlProc
clc
ret
EndProc ControlProc
VxD_LOCKED_CODE_ENDS

END

;def文件
VXD SKELETON dynamic

SEGMENTS
    _LPTEXT     CLASS \'LCODE\'   PRELOAD NONDISCARDABLE
    _LTEXT      CLASS \'LCODE\'   PRELOAD NONDISCARDABLE
    _LDATA      CLASS \'LCODE\'   PRELOAD NONDISCARDABLE
    _TEXT       CLASS \'LCODE\'   PRELOAD NONDISCARDABLE
    _DATA       CLASS \'LCODE\'   PRELOAD NONDISCARDABLE
    _CONST      CLASS \'LCODE\'   PRELOAD NONDISCARDABLE
    _TLS        CLASS \'LCODE\'   PRELOAD NONDISCARDABLE
    _BSS        CLASS \'LCODE\'   PRELOAD NONDISCARDABLE
    _LMSGTABLE  CLASS \'MCODE\'   PRELOAD NONDISCARDABLE IOPL
    _LMSGDATA   CLASS \'MCODE\'   PRELOAD NONDISCARDABLE IOPL
    _IMSGTABLE  CLASS \'MCODE\'   PRELOAD DISCARDABLE IOPL
    _IMSGDATA   CLASS \'MCODE\'   PRELOAD DISCARDABLE IOPL
    _ITEXT      CLASS \'ICODE\'   DISCARDABLE
    _IDATA      CLASS \'ICODE\'   DISCARDABLE
    _PTEXT      CLASS \'PCODE\'   NONDISCARDABLE
    _PMSGTABLE  CLASS \'MCODE\'   NONDISCARDABLE IOPL
    _PMSGDATA   CLASS \'MCODE\'   NONDISCARDABLE IOPL
    _PDATA      CLASS \'PDATA\'   NONDISCARDABLE SHARED
    _STEXT      CLASS \'SCODE\'   RESIDENT
    _SDATA      CLASS \'SCODE\'   RESIDENT
    _DBOSTART   CLASS \'DBOCODE\' PRELOAD NONDISCARDABLE CONFORMING
    _DBOCODE    CLASS \'DBOCODE\' PRELOAD NONDISCARDABLE CONFORMING
    _DBODATA    CLASS \'DBOCODE\' PRELOAD NONDISCARDABLE CONFORMING
    _16ICODE    CLASS \'16ICODE\' PRELOAD DISCARDABLE
    _RCODE      CLASS \'RCODE\'

EXPORTS
        SKELETON_DDB @1
;

;加载程序
procedure TForm1.Button1Click(Sender: TObject);
var hvxd:THandle;
    e:integer;
begin
  hvxd:=CreateFile(\'\\\\.\\SKELETON.VXD\',0,0,nil,0,FILE_FLAG_DELETE_ON_CLOSE,0);
  if hvxd=INVALID_HANDLE_VALUE then
    begin
      e:=Getlasterror();
      showmessage(inttostr(e)+\': \'+SysErrorMessage(e) );
    end
  else
    begin
      closehandle(hvxd);
    end;
end;


;汇编程序
ml /coff /Cx /c /W2 /DBLD_COFF /DIS_32 /DMASM6 /ID:\\98DDK\\INC\\WIN98 SKELETON.ASM
LINK /DEF:SKELETON.DEF /VXD /OUT:SKELETON.VXD SKELETON.OBJ

非常谢谢您.
vcshcn
Buddha
驱动老牛
驱动老牛
  • 注册日期2001-04-29
  • 最后登录2013-05-18
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望17点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-12-07 10:04

兄弟,可不可以用c的框架写呀.
<table style="filter: glow(color=sky blue, strength=10)"> <font color=white> 猫生病了, 老鼠大声朗诵诗集, 并修剪盆花. 猫生病了, 老鼠慢慢刷牙洗脸, 并打扫房间. 猫生病了, 老鼠倚在窗边欣赏夜色, 并对流星许愿. 猫生病了, 老鼠也病了, 它说:"我还是习惯那种时时紧张, 处处小心, 夜夜逃亡的生活." 午夜, 我听到老鼠在叹息, 且不再读诗了. </font></table>
Jackal
驱动牛犊
驱动牛犊
  • 注册日期2001-09-20
  • 最后登录2001-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-12-09 14:41
兄弟,你在ControlProc里什么消息都没处理呀。因为在你用CreateFile打开一个VxD时,系统会自动向该VxD发送一个GetVersion的消息(值为0),你必须返回0以表示你的VxD支持DeviceIoControl,否则你CreateFile也就没意义了。
Jackal
greatwp
驱动牛犊
驱动牛犊
  • 注册日期2001-12-07
  • 最后登录2005-10-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-12-10 09:27

vcshcn大侠,我是个菜鸟,问一下如果要在dos下,怎么参考您的程序呢?多谢了!
wp
vcshcn
驱动牛犊
驱动牛犊
  • 注册日期2001-09-23
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2001-12-10 10:28
在dos下写,没法参考我的程序,两种编程思路不一样。
还有,我也是菜鸟,互相学习吧。
vcshcn
游客

返回顶部