阅读:1391回复:4
请您看看我的问题吧?
您好,我的情况是这样的。我在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 非常谢谢您. |
|
|
沙发#
发布于:2001-12-07 10:04
兄弟,可不可以用c的框架写呀. |
|
|
板凳#
发布于:2001-12-09 14:41
兄弟,你在ControlProc里什么消息都没处理呀。因为在你用CreateFile打开一个VxD时,系统会自动向该VxD发送一个GetVersion的消息(值为0),你必须返回0以表示你的VxD支持DeviceIoControl,否则你CreateFile也就没意义了。
|
|
|
地板#
发布于:2001-12-10 09:27
vcshcn大侠,我是个菜鸟,问一下如果要在dos下,怎么参考您的程序呢?多谢了! |
|
|
地下室#
发布于:2001-12-10 10:28
在dos下写,没法参考我的程序,两种编程思路不一样。
还有,我也是菜鸟,互相学习吧。 |
|
|