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

一个关于VxD与Win32应用程序之间通讯的问题

楼主#
更多 发布于:2001-12-03 09:52
我知道VxD与应用程序之间可以异步通讯。但我想实现以下功能怎么实现阿?

Test(...)
{
...
returnValue = 给应用程序发信息然后返回值;

if (returnValue)
{
    ....
}else{
    ....
}
...
}

最新喜欢:

hongsinghongsi...
yangjun
驱动牛犊
驱动牛犊
  • 注册日期2001-11-25
  • 最后登录2001-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-12-06 21:33
为什么没人回答~???

没人知道吗??
ymq
ymq
驱动牛犊
驱动牛犊
  • 注册日期2001-05-24
  • 最后登录2002-06-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-12-07 23:44
in VXD, use Shell_postmessage( ) to pass message to ring3 APP, but this func isn\'t synchronization, so that, you can\'t use following instruction :
  
   return_val = Shell_postMessage(....);  // wrong

If you want to get the return value from APP, in App, use DeviceIOcontrol to pass you value to VXD,

otherwise, you may use shared-event between vxd and App, only under this condition, you can keep vxd and APP synchronized.
imsoft
驱动牛犊
驱动牛犊
  • 注册日期2001-12-08
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-12-08 11:36
你可能需要使用VMM服务_SHELL_POSTMESSAGE给应用程序发消息.
yangjun
驱动牛犊
驱动牛犊
  • 注册日期2001-11-25
  • 最后登录2001-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-12-08 23:59
sorry, 我没写清楚,我的意思是想进行同步通讯,不知道有没有办法?
gxzbme
驱动牛犊
驱动牛犊
  • 注册日期2001-08-09
  • 最后登录2006-03-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-12-12 16:33
first, define a BOOL in vxd :
BOOL Returned=FALSE;
...
second, in vxd:  
              ...
              Returned=FALSE;
              Shell_postMessage(hwnd,msgID,wparam,lparam);
              while (!Returned) ;
               ....

third, in app: OnMsgID(wparam,lparam) {
                     .....
                BOOL ProcessOK = true;
                deviceiocontrol(hdevice,
                           XXXXX,&ProcessOK, .....)
               }
third, in Vxd :  w32DeviceIoControl(...) {
                   switch(IoCtrlCode) {
                     ....
                     case XXXXXX :
                        Returned = TRUE;
                        break;
                     }
                   }

 you can Waiting an event to be in signal after Vxd
  processed the DeviceIoControl routine and signal the
  notification event.

    haha, too complex.
iamaf~1
驱动小牛
驱动小牛
  • 注册日期2001-09-23
  • 最后登录2003-06-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-12-12 20:05
gxzbme 兄用Shell_postMessage(hwnd,msgID,wparam,lparam);

不过依靠 全局变量来加锁,不很安全, 而且同时只能支持一个操作。

最好把我们的方案综合一下, 就漂亮了

这个论坛不支持长用户名,害得我iamafraid 只好叫iamaf~1了...
游客

返回顶部