现在我遇到了这么一个问题, 写了个myDLL,两个进程分别是IE8(开启保护模式, 以下说IE8, 都以此条件为基础)和进程A,myDLL内部都去创建或读取共享内存, 比如进程A先运行, 则由进程A调用myDLL通过CreateFileMapping创建共享内存, IE8在调用myDLL的时候OpenFileMapping去读取共享内存的内容, 反之亦然, 但现在的情况是如果先运行IE8调用myDLL创建共享内存, 然后运行进程A调用myDLL可以读取到共享内存, 但反之先运行进程A调用myDLL创建共享内存, 然后IE8下调用myDLL无法通过OpenFileMapping读取共享内容. 
    关闭保护模式, 一切正常. 就是在开启保护模式的情况下才会发生, 如何解决, 请大侠指导.. 被这个问题困扰了好久了.
MSDN上说的方法好像都使用过了, 好像都不行.. 真的很急人的...

解决方案 »

  1.   


    有什么表现?出错?调试中OpenFileMapping返回什么?
      

  2.   


    OpenFileMapping返回的结果为空或INVALID_HANDLE_VALUE
      

  3.   

    IE8保护模式,权限不够,看是否CreateFileMapping成功...
    在IE8下,可以通过PostMessage等方式
      

  4.   

    顶下,我现在也碰到这个问题,如果数据量大怎么办,像我现在的每秒需要向IE中的flash插件内的一个com组件发送10-15帧图像过去,这样应该怎么办,用管道和socket也许可行,但用filemapping最方便,所以不到万不得以,还是不用管道和socket。请问楼主是否解决这个问题?
      

  5.   

    integrity level 的问题。
      

  6.   

    这个说的不错的,PostMessage可以。WM_COPYDATA 可以在调整后进行
      

  7.   

    保护模式以降低的权限运行,这种情况很正常,就像WIN7资源管理器永远也不能以管理员身份运行一样,设计使然。
    想其它主意吧
      

  8.   

    咦7楼的大星星:
    我系统服务主动创建explorer.exe也不行吗?
    他如果发现是提升了的,就自动退出或者……什么?还有说 PostMessage的大牛, 系统服务进程A可以向 登录用户进程B 投递消息?(PostMessage?)为什么 我的 广播 不好使?难道只有“投递”才行,可那样就得先知道目的的窗口句柄……我知道Vista之后的系统有 UIPI与session 0隔离, 弄得我没招了,只有自己写了一个共享内存操作类来通信……,目标进程还得守候……
      

  9.   

    楼主两个号? 自己问答?你自己的进程之间通信还可以有别的方式啊,socket,管道...