winApi与QtApi的共享内存通信

news2024/11/26 12:25:40

目的

就是A程序是QT的程序用的QT的接口读取共享内存,B程序是WinApi创建的共享内存,两个程序进行共享内存;
其间还有信号量,信号量,统一用的winApi的信号量。
就是下边这种情况:
在这里插入图片描述

下边的这个例子,就针对两块重点,进行分析:
1、QT侧的共享内存与win Api的共享内存如何共享,直接共享肯定会失败的。
2、共享内存的信号里怎么应用,才能解决,资源的冲突问题,资源的协调问题。

参考资料

https://www.cnblogs.com/lidabo/p/17222887.html

过程

内存挂载不上的问题

就是QT侧进程:

QSharedMemory sharedMemory;
sharedMemory.setKey(QString("memoryKeyForTest"));
用的这个共享内存的key,于是winApi侧的也用这一个key:
const char* shmName = "memoryKeyForTest";
    HANDLE hMapFile = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 4096, shmName);
    if (hMapFile == NULL) {
   
        std::cerr << "CreateFileMapping failed with error " << GetLastError() << std::endl;
        return 1;
    }

    LPVOID lpBase = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 4096);
    if (lpBase == NULL) {
   
        std::cerr << "MapViewOfFile failed with error " << GetLastError() << std::endl;
        CloseHandle(hMapFile);
        return 1;
    }

发现两个程序总是不能通信,怎么回事,调试跟踪QT代码,发现QT的共享内存总是挂载不上,就是这段代码执行总失败:

 if (!sharedMemory.isAttached())
    {
   
        if(!sharedMemory.attach())
        {
   
            qDebug("program exit!");
            return -1;
        }
    }

那是怎么回事,名字是一样的啊,于是,网上找资料,也没有相关明确的资料,有一个网上说:QT内部对key的名字进行了处理,那如何得到这一个名字呢?不至于,查QT 源码吧?
还是翻翻qt Api的帮

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音频剪辑新纪元:探索2024年人人都在用的音乐编辑工具

当你计划为视频添加旁白或投身有声书录制领域时&#xff0c;音乐剪辑软件便成为了不可或缺的关键工具。挑选一款既简单易上手又功能全面的音频编辑软件&#xff0c;将极大地加速并优化你创作理想音频文件的过程。 1.福昕音频剪辑 链接直达>>https://www.foxitsoftware.…

OJ题——二叉树(前序遍历)

&#x1f36c;个人主页&#xff1a;Yanni.— &#x1f308;数据结构&#xff1a;Data Structure.​​​​​​ &#x1f382;C语言笔记&#xff1a;C Language Notes 计算结点数 首先得算出这个结点有多少&#xff0c;不然数组的空间无法开辟出来。 利用递归算法&#xff0c;…

案例精选 | 某省级第二人民医院恶意外连监测与治理项目

某省级第二人民医院&#xff0c;是某省卫健委直属三级甲等医疗机构&#xff0c;一所集医疗、科研、教学、预防、保健为一体的大型现代化综合医院。医院设施设备先进&#xff0c;‌技术服务领先&#xff0c;‌现有开放床位1400余张&#xff0c;临床医技科室90余个。并且&#xf…

漏洞复现-K26-1开源-证书查询系统-任意文件读取

1 产品简介 某开源的证书查询系统不少平台在使用 2 漏洞概述 攻击者可以通过构造恶意的请求来利用该漏洞&#xff0c;从而读取或下载他们本来无权访问的文件&#xff0c;如密码、私钥、证书等&#xff0c;会提供攻击者更多可用信息&#xff0c;提高被入侵的风险。 3 复现环…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第五篇 文件系统构建篇-第七十九章 Ubuntu20文件系统

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

如何进行数据中心的负载测试规划和设计

负载测试是数据中心规划和设计的重要组成部分&#xff0c;它可以帮助评估系统在高负载条件下的性能表现。以下是进行数据中心负载测试规划和设计的步骤&#xff1a; 1. 确定目标&#xff1a;首先&#xff0c;需要明确负载测试的目标。这可能包括评估系统的最大处理能力&#xf…

2024年省市县乡镇村行政边界矢量数据分享,数据获取在文末

今天给大家分享的是【2024乡镇区划矢量边界数据】&#xff01;数据更新自2024年6月&#xff0c;同上一年对比乡镇数量有所调整。 现阶段的我国行政区划 行政区划的划分确实是为了更有效地进行行政管理和服务&#xff0c;使得国家的治理能够更加有序和高效。 行政区划的合理设定…

将ios 无线投屏至windows 10

尝试通过wsa安装乐播安桌盒子版&#xff0c; 没有成功&#xff0c;有帖为证&#xff0c; 但是却给win10带来了wsa的特性&#xff0c; 有帖为证&#xff1a; https://blog.csdn.net/weixin_62598385/article/details/141260431 尝试通过wsa安装乐播安桌盒子版&#xff0c; 没有成…

深入理解指针(五)

一、一维数组传参的本质 首先从一个问题开始&#xff0c;我们之前都是在函数外部计算数组的元素个数&#xff0c;那我们可以把数组传给一个函数后&#xff0c;在函数内部求数组的元素个数吗&#xff1f; 我们来看一下下面的代码&#xff1a; #include<stdio.h> void te…

springboot+JTA+atomikos多数据源分布式事务管理

一、项目需求 1、同时操作两个数据库&#xff0c;一个在本地服务器&#xff0c;一个在云服务器。 2、数据库数据是同步的&#xff0c;两个数据库同时做update、insert等操作时&#xff0c;无论哪个数据库操作失败&#xff0c;要求两个数据库数据同时回滚。 3、两个数据库均为SQ…

整理 酷炫 Flutter 优质 布局、交互 开源App

xtimer-flutter-app Flutter 计时器应用 项目地址&#xff1a;https://github.com/pedromassango/xtimer-flutter-app 项目Demo&#xff1a;https://download.csdn.net/download/qq_36040764/89631382

<数据集>骑行头盔识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;5026张 标注数量(xml文件个数)&#xff1a;5026 标注数量(txt文件个数)&#xff1a;5026 标注类别数&#xff1a;3 标注类别名称&#xff1a;[helmet, without_helmet, two_wheeler] 序号类别名称图片数框数1helm…

CCleaner Pro v6.26.11169 中文绿色便携版免安装 下载 Windows缓存清理 磁盘清理 注册表清理 大文件查找

可以清理系统和软件缓存&#xff0c;清理注册表&#xff0c;磁盘分析进行大文件查找 下载地址(资源制作整理不易&#xff0c;下载使用需付费&#xff0c;不能接受请勿浪费时间下载) 链接&#xff1a;https://pan.baidu.com/s/1XLi-J1h-G5xx8QBwXeFMcg?pwd2fen 提取码&#xf…

美股涨跌互现,半导体与科技股受关注

美股市场表现 昨夜&#xff0c;美股三大股指表现不一。道琼斯工业平均指数下跌0.36%&#xff0c;纳斯达克综合指数上涨0.21%&#xff0c;标准普尔500指数持平。科技股表现突出&#xff0c;其中英伟达股价上涨超过4%。债市方面&#xff0c;美国十年期国债收益率下跌至3.905%&am…

大语言模型(LLM)的SIO解构

引言: 大语言模型&#xff08;LLM&#xff09;作为现代人工智能领域的重要突破&#xff0c;已经在自然语言处理&#xff08;NLP&#xff09;中展现出了卓越的能力。这些模型通过深度学习算法和大规模数据训练&#xff0c;在多个语言任务中表现出接近人类的理解与生成能力&#…

七、2 ADC数模转换器有关函数介绍(Keil5)

函数介绍 &#xff08;1&#xff09;ADCCLK的配置函数&#xff08;在rcc.h中&#xff09; &#xff08;2&#xff09;ADC的库函数&#xff08;在adc.h中&#xff09;

将 Amazon SageMaker 机器学习模型与 QuickSight 集成。

增强使用 Amazon SageMaker 和 QuickSight 构建的机器学习模型的概述。 您是否曾想过如何以更简单的方式将 ML 预测添加到您的 BI 平台并分享给业务客户&#xff1f;别担心&#xff01;AWS ML Insights 的 SageMaker 增强型 QuickSight 之一可以满足您的需求&#xff01; 假设…

vue3 antdv3 Select 每行数据的最右侧增加一个x删除按钮,鼠标移上去显示,移走消失,并且点击可以删除当前行的数据。

1、先上个图&#xff0c;这个是实现的效果&#xff1a; 鼠标移动E所在的行&#xff0c;则E的最右侧显示一个x删除按钮&#xff0c;点击x按钮&#xff0c;可以删除当前的数据&#xff0c; 点击增加按钮&#xff0c;可以新增。 2、实现的代码&#xff1a; <Selectv-model:v…

栈与队列 - 用队列实现栈

225. 用队列实现栈 方法一&#xff1a;使用两个队列实现 var MyStack function() {this.queue1 [];this.queue2 []; };/** * param {number} x* return {void}*/ MyStack.prototype.push function(x) {this.queue1.push(x); };/*** return {number}*/ MyStack.prototype.p…

.net实战(VB):连接网页数据

先上效果图 在上程序 Public Sub SendPostRequest(aa As String)MessageBox.Show(sheet.Name)Dim token As StringDim xmlhttp As ObjectDim xmlhttp1 As ObjectDim url As StringDim jsonParams As StringDim response As Stringxmlhttp CreateObject("MSXML2.XMLHTTP&…