我想做一个Win32动态库,封装ComOpen,ComRead,ComWrite,ComClose等。但我希望能够同时为多个进程提供这些服务。因此我尝试将CreateFile("COMx"...的句柄设置成共享,希望所有进程都通过这个句柄来读写串口,可是发现这个句柄并不是对所有进程有效的,也就是说,尽管在进程1中它代表一个串口句柄,可是到了进程2中就成了无效句柄了:(。小弟思考至今也不知道怎么解决,请各位大哥指教~~~~==================================
by伟大的领袖,伟大的导师,伟大的舵手,天才程序员:xuzzzhen123
msn: [email protected]

解决方案 »

  1.   

    Tooyljerry(【勇敢的心】→ ㊣Warm up,A za!㊣:谢谢你,不过把什么放到共享数据段呢?如果你把句柄放到共享数据段,那么我已经说了,同样的句柄在进程1中有效,可到了进程2中,这个值是无效的。仔细分析一下:进程1中12345代表一个串口的句柄,可到了进程2中12345是什么值呢??如果用它去访问一个串口得到的自然就是无效的句柄了(GetLastError()返回6)
      

  2.   

    文件句柄是内核对象,内核对象只能对本进程有效,就算是其他进程得到这个句柄也没法操作该内核对象,要么你是在父进程申请内核对象,然后传给它的子进程,这种方法就可以解决多个进程共享同一个内核对象,但这里需要设置好SECURITY_ATTRIBUTES参数,默认是不继承的
      

  3.   

    to Practise_Think(时代“过客”) : 可是我要做的是动态库啊,没办法让每个动态库的每个被调用实力都成为某个进程的子进程吧????谢谢你啦~~~
      

  4.   

    COM端口是独占性资源,一个进程打开了其他进程就不能再打开
    你可以去参考进程间通讯(IPC)的方法