zoukankan      html  css  js  c++  java
  • Windows下进程通信方式

    当线程分属于不同进程,也就是分驻在不同的地址空间时,它们之间的通讯需要跨越地址空间的边界,便得采取一些与同一进程中不同线程间通讯不同的方法。
    在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有:
    1、使用内存映射文件
    2、通过共享内存DLL共享内存
    3、使用SendMessage向另一进程发送WM_COPYDATA消息
    比起前两种的复杂实现来,WM_COPYDATA消息无疑是一种经济实惠的一中方法。
    WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。Windows在通过WM_COPYDATA消息传递期间,不提供继承同步方式。SDK文档推荐用户使用SendMessage函数,接受方在数据拷贝完成前不返回,这样发送方就不可能删除和修改数据:
    这个函数的原型及其要用到的结构如下:
    SendMessage(hwnd,WM_COPYDATA,wParam,lParam);
    其中,WM_COPYDATA对应的十六进制数为0x004A
    wParam设置为包含数据的窗口的句柄。

    lParam指向一个COPYDATASTRUCT的结构:

    typedef struct tagCOPYDATASTRUCT{
       DWORD dwData;//用户定义数据
       DWORD cbData;//数据大小
       PVOID lpData;//指向数据的指针
    }COPYDATASTRUCT;
  • 相关阅读:
    JAVA实现文件遍历
    关于java的JIT知识
    经典的01背包问题
    文件遍历
    [算法之动态规划] 基本思想
    软件设计经典书籍推荐
    C++ 学习之函数重载、基于const的重载
    tomcat调用axis服务时出现 java.lang.InvocationException解决方案
    文件上传的原理
    文件上传的原理
  • 原文地址:https://www.cnblogs.com/sooner/p/3191896.html
Copyright © 2011-2022 走看看