jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1697回复:11

如何从VXD中实时给Ring3程序传递数据?

楼主#
更多 发布于:2002-09-29 20:49
我在做一个脉冲检测程序中,需要VXD给Ring3的程序同步发送数据,但一直没有做通.目前暂时用DeviceIoControl()传送数据,不知哪位同仁有更好的方法,可以说说,共同探讨一下.

最新喜欢:

hongsinghongsi...
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-13 17:30
问题已经解决了,欢迎大家讨论!
lrx666
驱动太牛
驱动太牛
  • 注册日期2001-08-17
  • 最后登录2010-10-25
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望47点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-24 09:03
板主怎样解决的?频率多高?
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-31 19:58
目前在win9x下是0.5ms,可以比这更高的,但我只需要这么高。
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-31 19:59
您有更好的方法吗?说说看。
why_why
驱动牛犊
驱动牛犊
  • 注册日期2002-08-05
  • 最后登录2010-12-15
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-05 22:27
是用事件的方法吗??? :)
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-07 20:48
不是用事件方法,用DeviceIoControl()函数做的。我曾经尝试用全局事件的方法处理,可是在硬件中断中,WIN9X系统好象不让用系统服务函数VWIN32_VM_EVent(),如果用该函数,系统总是死机,而且死的很难堪,你有好主意吗?
why_why
驱动牛犊
驱动牛犊
  • 注册日期2002-08-05
  • 最后登录2010-12-15
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-09 08:26
 :)我用的就是事件,只是在传给驱动程序事件号时做了些手脚:),因其他的实时性都不是很好,后来就舍弃了。
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-09 12:24
能详细告诉我您是如何做的手脚吗?谢谢!可以发邮件给我:
qiaozongli@vip.sina.com
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-11 19:25
楼上的朋友怎么没有下文了?俺们都等着呢。
why_why
驱动牛犊
驱动牛犊
  • 注册日期2002-08-05
  • 最后登录2010-12-15
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-12 11:20
 :( 因整个程序已经整合到了软件中,因此可能没得赠送源代码了,
我就摘一段了,我是delphi+c,上层用的是Delphi,底层就大家一个样了。
function TInterruptHook.SetIntrrupt(const IRQSet1:TIRQSet1;DesMemAddr:Dword;
                        SrcMemAddr:Dword;LengCpy:Dword;Destrant:DWORD;
                        MAXIFCHG:DWORD;CHGIFSET:dword):boolean;
var
Kernel32:THandle;
OpenVxDHandle:TOpenVxDHandle;
VxDEvent:THandle;
tmpflag:boolean;
irqset0:Tirqset0;
begin
tmpflag:=false;
Eventhandle:=TEvent.Create(nil,True,False,\'\');
threadhandle:=CreateThread(Nil,0,
                @OnThreadExec,
                pointer(self),
                CREATE_SUSPENDED,threadid);
if threadhandle<>0 then
 begin
   ResumeThread(threadhandle);
   Kernel32:=LoadLibrary(\'KERNEL32.DLL\');
    if Kernel32<>0 then
      begin
       SetThreadPriority(threadhandle,THREAD_PRIORITY_TIME_CRITICAL );
        OpenVxDHandle:=GetProcAddress(Kernel32,\'OpenVxDHandle\');//主要就这了,有了这后事件就可在驱动层用了
        VxDEvent:=OpenVxDHandle(Eventhandle.Handle);
        IRQRETURN.IntrStuAddr:=PDWORD(dword(IRQSET1.BaseLineAddr)+$100);
        IRQRETURN.IntrMaskAddr:=PDWORD(dword(IRQSET1.BaseLineAddr)+$104);
        CallBackApc:=irqset1.CallBackApc; //设置线程回调地址
        irqset0.VxdEvent:=VxDEvent;   //设置服务包地址为事件句柄
        irqset0.maskset:=IRQSet1.MaskSet;
        irqset0.IRQNUM:=IRQSet1.IRQNUM;
        irqset0.ServNum:=IRQSet1.ServNum;
        IRQRETURN.servnum:=IRQSET1.ServNum;
        irqset0.BaseLineAddr:=IRQSET1.BaseLineAddr;
        irqset0.SrcMemAddr:=SrcMemAddr;
        irqset0.DesMemAddr:=DesMemAddr;
        irqset0.LengCpy:=LengCpy;
        irqset0.Destrant:=Destrant;
        irqset0.CHGIFSET:=CHGIFSET;
        irqset0.MAXIFCHG:=MAXIFCHG;
        tmpflag:=OpenDevice(IRQSet0,2228291);
        FreeLibrary(Kernel32); //}
     end;
    if not (tmpflag)then
      begin
        Eventhandle.Free;
      end;
 end;
result:=tmpflag;
end;
why_why
驱动牛犊
驱动牛犊
  • 注册日期2002-08-05
  • 最后登录2010-12-15
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-12 11:22
啊,跑了好多 :D在里面啊。。。晕

那是 :D,都是表情码搞的鬼   :mad:
游客

返回顶部