CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何在VxD中回调应用程序中的函数

楼主Kronus(叶落归根)2000-12-28 21:49:00 在 VC/MFC / 基础类 提问

Hi,   我想在应用程序中传给VxD一个函数的地址,以便VxD需要时进行回调  
  我的用法如下:  
  应用程序中:  
  typedef   void(_cdecl   FAR   *MyCAllback)(void);  
  MyCallback   MyCallbackAddress;  
   
   
  void   _cdecl   FAR   MyCallbackHandler(void)  
  {  
        ....  
  }  
  初始化:MyCallbackAddress   =   MyCallbackHandler;  
  然后把MyCallbackAddress用DeviceIoControl传给VxD  
   
  在VxD中:  
  typedef   void(_cdecl   FAR   *MyCAllback)(void);  
  MyCallback   MyCallbackAddress;  
   
  pcrs->CWRS.Client_SI   =   *(WORD*)(&pData[0]);  
  pcrs->CRS.Client_ES   =   *(WORD*)(&pData[2]);  
  MyCallbackAddress   =(MyCallback*)Map_Flat(CLIENT_ES,   CLIENT_SI);  
  然后调用时:  
  MyCallbackAddress();//应用程序死掉了??????,why?????  
  问题点数:250、回复次数:14Top

1 楼Kronus(叶落归根)回复于 2000-12-29 00:06:00 得分 0

我查了VtoolsD的帮助:  
  是不是Shell_Event(...)可以支持回调V86的应用程序?但是我尝试了多次没有成功。  
  还有在PM模式下,VWIN32_QueueUserApc   (...)怎么使用?  
  Top

2 楼Kronus(叶落归根)回复于 2000-12-29 18:59:00 得分 0

我试了用Simulate_Far_Jum(...)也没有成功,大师在哪?????Top

3 楼mmmyyyaaa(编程浪子)回复于 2000-12-29 19:05:00 得分 125

为什么不使用发送自定义消息呢?  
  在Vxd   和应用程序定义一个相同的自定义消息,在vxd的初始化是通过参数把窗口的句柄传递给vxd,在vxd中可以向指定的窗口发送一个消息,而应用程序可以在消息处理函数中做各种处理。  
   
  你是不是在中断的时候调用,你能捕捉到中断吗?我曾经试图捕捉打印口的中断,没有成功,如果你的中断捕捉很成功,可以告诉我。  
   
  如果你需要我的消息发送和接受函数,给我发个email,我给你发过去。mmmyyyaaa@sina.comTop

4 楼mmmyyyaaa(编程浪子)回复于 2000-12-29 19:12:00 得分 0

使用消息,很安全,调试的时候不会死,顶多不干活Top

5 楼Kronus(叶落归根)回复于 2000-12-29 19:19:00 得分 0

因为消息有延时,而这个该死的应用程序要求必须及时响应,只能用Callback的方法。  
  老兄,你有这方面的例子吗?  
  谢谢  
  我的中断捕捉已经成功,你是要求在V86下还是PM下?Top

6 楼Kronus(叶落归根)回复于 2000-12-29 19:21:00 得分 0

我的oicq:2078570,   欢迎交流Top

7 楼Kronus(叶落归根)回复于 2000-12-29 21:01:00 得分 0

以下是我尝试Simulate_Far_Jmp的程序:  
  有一个奇怪的现象,如果加上Save_Client_State和EndJ_Client_State则死机,还有如果加上Resume_Exec也死机????????  
  //Save_Client_State(pClientStruct);  
  //Begin_Nest_Exec();  
  Begin_Nest_V86_Exec();  
  Disable_VM_Ints();  
  Simulate_Far_Jmp(MyCallBackAddressSeg,   MyCallBackAddressOff);  
  //Resume_Exec();  
  Enable_VM_Ints();  
   
  End_Nest_Exec();  
  //Restore_Client_State(pClientStruct);  
  why???????????????????  
  Top

8 楼Kronus(叶落归根)回复于 2000-12-30 00:48:00 得分 0

大师在不在,我都快要黔驴技穷了!!!!!Top

9 楼Kronus(叶落归根)回复于 2000-12-30 13:10:00 得分 0

help!Top

10 楼znsoft(中文网址: 驱动开发网)回复于 2001-01-02 10:41:00 得分 125

何别呢,   让你上我的网站看你不去,   这下该后悔了吧。   我的站上有呀  
   
  http://www.driverdevelop.comTop

11 楼Kronus(叶落归根)回复于 2001-01-02 17:54:00 得分 0

谢谢你,但是那个方法我一直我没有实验成功:(Top

12 楼Kronus(叶落归根)回复于 2001-01-03 13:42:00 得分 0

我又加了150分,Jansen   Zhu,   Help!Top

13 楼Kronus(叶落归根)回复于 2001-01-04 02:52:00 得分 0

不要见死不救啊!!!!!Top

14 楼Kronus(叶落归根)回复于 2001-01-06 14:52:00 得分 0

终于搞定了!!!!!!!!!!!!!  
  分数不能赏给自己,那就送给各位了Top

相关问题

  • 如何用shell函数调用带参数的应用程序?
  • 在VC中,调用另外一个应用程序的函数是什么???
  • 能把自定义函数放在二进制文件里,再在应用程序里调用该函数吗?
  • Com应用程序QueryInterface()函数问题
  • VC++.NET 里面创建windows 应用程序和创建MFC应用程序有什么区别,windows 应用程序调用MFC函数是不是有什么冲突,有没有这方面资料!
  • 如何在webservice的一个函数里返回多个参数给远程调用的应用程序?
  • 主应用程序调用子应用程序?50分
  • 急!急!请教!用InstallShield6 for VC6.0 中使用LaunchApp 和LaunchAppAndWait函数调用外部应用程序,为何编译出现vc6 不支持此函数的
  • 急!PB中获得当前应用程序路径的函数?
  • 如何用SENDMESSAGE函数给一个应用程序送按键?

关键词

  • 应用程序
  • 函数
  • 中断
  • 消息
  • client
  • mycallbackaddress
  • vxd
  • v86
  • mycallback
  • 捕捉

得分解答快速导航

  • 帖主:Kronus
  • mmmyyyaaa
  • znsoft

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo