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;
  • 相关阅读:
    EF6的多线程与分库架构设计实现
    Windows环境下安装Ionic
    Win7 下安装RabbitMQ
    在VS Nuget命令行下进行EF数据库迁移
    WebSocket与Tcp连接
    常用浏览器内核
    异步代码
    TCP与UDP的区别
    二分查找(折半查找)
    顺序查找
  • 原文地址:https://www.cnblogs.com/sooner/p/3191896.html
Copyright © 2011-2022 走看看