在普通应用程序中使用共享内存方式创建内存共享对象时,CreateFileMapping函数总是返回句柄为NULL,通过GetLastError得到返回错误码 0x5, 问题解决:

使用Local 代替Global, 问题解决,下面是使用实例:

  1. TCHAR szName[] = TEXT("Local\\MyFileMappingObject"); 

  2. TCHAR szName[] = TEXT("Global\\MyFileMappingObject"); 

原来 Global\\ 保证创建的对象是全局的,对权限要求比较高,而使用local可以保证服务对象仅对当前用户中的进程和线程可见。这就是总是返回权限失败问题的原因。

附一个使用实例:

  1. // testsharemem.cpp : Defines the entry point for the console application.

  2. //

  3. #include "stdafx.h"

  4. #include <Windows.h>

  5. #include <stdio.h>

  6. #include <conio.h>

  7. #include <tchar.h>

  8. #define BUF_SIZE 256

  9. TCHAR szName[] = TEXT("Local\\MyFileMappingObject");

  10. TCHAR szMsg[] = TEXT("Message from first process.");

  11. int p1();

  12. int p2();

  13. int _tmain(int argc, _TCHAR* argv[])

  14. {

  15.     if (argc == 1)

  16.     {

  17.         p1();

  18.     }

  19.     else

  20.     {

  21.         p2();

  22.     }

  23.  return 0;

  24. }

  25. int p1()

  26. {

  27.     HANDLE hMapFile;

  28.     LPCTSTR pBuf;

  29.     hMapFile = CreateFileMapping(

  30.         INVALID_HANDLE_VALUE, // use paging file

  31.         NULL, // default security

  32.         PAGE_READWRITE, // read/write access

  33.         0, // maximum object size (high-order DWORD)

  34.         BUF_SIZE, // maximum object size (low-order DWORD)

  35.         szName); // name of mapping object

  36.     if (hMapFile == NULL)

  37.     {

  38.         _tprintf(TEXT("P1: Could not create file mapping object (%d).\n"),

  39.             GetLastError());

  40.         return 1;

  41.     }

  42.     else

  43.     {

  44.         _tprintf(TEXT("P1: create file mapping object hMapFile= (0x%x).\n", hMapFile));

  45.     }

  46.     pBuf = (LPTSTR)MapViewOfFile(hMapFile, // handle to map object

  47.         FILE_MAP_ALL_ACCESS, // read/write permission

  48.         0,

  49.         0,

  50.         BUF_SIZE);

  51.     if (pBuf == NULL)

  52.     {

  53.         _tprintf(TEXT("P1: Could not map view of file (%d).\n"),

  54.             GetLastError());

  55.         CloseHandle(hMapFile);

  56.         return 1;

  57.     }

  58.     CopyMemory((PVOID)pBuf, szMsg, (_tcslen(szMsg) * sizeof(TCHAR)));

  59.     _getch();

  60.     UnmapViewOfFile(pBuf);

  61.     CloseHandle(hMapFile);

  62.     return 0;

  63. }

  64. int p2()

  65. {

  66.     HANDLE hMapFile;

  67.     LPCTSTR pBuf;

  68.     hMapFile = OpenFileMapping(

  69.         FILE_MAP_ALL_ACCESS, // read/write access

  70.         FALSE, // do not inherit the name

  71.         szName); // name of mapping object

  72.     if (hMapFile == NULL)

  73.     {

  74.         _tprintf(TEXT("P2: Could not open file mapping object (%d).\n"),

  75.             GetLastError());

  76.         return 1;

  77.     }

  78.     pBuf = (LPTSTR)MapViewOfFile(hMapFile, // handle to map object

  79.         FILE_MAP_ALL_ACCESS, // read/write permission

  80.         0,

  81.         0,

  82.         BUF_SIZE);

  83.     if (pBuf == NULL)

  84.     {

  85.         _tprintf(TEXT("P2: Could not map view of file (%d).\n"),

  86.             GetLastError());

  87.         CloseHandle(hMapFile);

  88.         return 1;

  89.     }

  90.     MessageBox(NULL, pBuf, TEXT("Process2"), MB_OK);

  91.     UnmapViewOfFile(pBuf);

  92.     CloseHandle(hMapFile);

  93.     return 0;

  94. }

win7下使用共享内存方式CreateFileMapping失败错误码5的解决方法相关推荐

  1. 计算机禁止共享上网,Win7 windows7网络共享设置及登录失败:禁用当前用户解决方法...

    Win7网络共享本地安全策略设置主体思路 一:关闭防火墙:三个防火墙,关闭家庭网络这一个即可. (直接访问不了) 二: (登录失败:禁用当前用户) 但是Win7一会儿就会自动打开防火墙,禁止的办法: ...

  2. android qq三方登录授权失败,QQ第三方登录无法授权错误码110401的解决方法

    原标题:QQ第三方登录无法授权错误码110401的解决方法 一些网友在注册APP的时候,会选择QQ作为第三方登录方式,但是,最近,一些网友发现:选择QQ第三方登录的时候,会出现无法授权错误码11040 ...

  3. windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法

    windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法 问题环境 问题描述 问题原因 & 解决办法 问题环境 Windows 10 x64 .python 3.8. ...

  4. mysql错误18456_【问题解决】SQL2008 SQL Server身份认证方式登录失败(错误18456)解决方法图解...

    今天同事电脑本地数据库,用SQL Server身份认证登录不了,后来解决了,突然想起自己曾经也遇到过这个问题,所以还是在这里记录下. 问题报错截图如下: 解决方法步骤截图如下: 1.打开本地数据库-- ...

  5. 计算机以太网依赖服务或无法启动,win7 网络和共享中心提示“依赖服务或组无法启动” 解决方法...

    今天再次遇到了这种情况. 一台电脑ping不通.也无法连接服务器:但可以通过远程桌面远程别的电脑或者被别的电脑所远程. 打开网络和共享中心,提示"依赖服务或组无法启动". 以前遇过 ...

  6. win7 网络和共享中心提示“依赖服务或组无法启动” 解决方法

    今天再次遇到了这种情况. 一台电脑ping不通.也无法连接服务器:但可以通过远程桌面远程别的电脑或者被别的电脑所远程. 打开网络和共享中心,提示"依赖服务或组无法启动". 以前遇过 ...

  7. Win10-1903安装补丁KB4497936总失败错误码0x800f081f的解决办法

    清理升级记录库也没用... 从v2ex.com上看到的可用: 1)下载CAB补丁 访问:https://uupdump.ml/get.php?id=c0340fe5-efce-4c5c-bcb3-6e ...

  8. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...

    进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...

  9. Linux下进程间通信--共享内存:最快的进程间通信方式

    内存共享最新整理: Linux下进程间通信-共享内存 - 码到城攻共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式https://www.codecomeon.com/posts/109/ ...

最新文章

  1. ORB_SLAM2代码阅读(5)——Bundle Adjustment
  2. 美团实习面试:熟悉红黑树是吧?能不能写一下?
  3. linux网络命令1
  4. 官方文档翻译-ESP32-High Resolution Timer
  5. jdbc连接数据库失败,com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。
  6. Oracel官网下载各类版本的JDK
  7. (Excel)常用函数公式及操作技巧之四:文本与页面设置(一)
  8. python爬虫程序框架的理论是什么_Python网络爬虫(scrapy框架简介和基础应用)
  9. 基于BS模式的航材电子商务交易平台(2)
  10. (2)把BlackBerry作为插件安装到已有的Eclipse中
  11. scratch冬天下雪了 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月
  12. servlet的九大内置对象和四大作用域
  13. java读取nfc数据_JAVA有关NFC读卡器读取数据
  14. 【Excel】定位条件快速将空值替换为指定值
  15. 找工作必看!!!关于什么叫做三方协议
  16. jquery给id加css,JQuery为元素添加样式
  17. 绑定校园卡服务器没有响应,校园卡服务部服务器暂行管理规定
  18. 渗透测试学习笔记20.11.20
  19. 在IDEA中激活JRebel
  20. 电脑连接到手机并安装手机驱动usb-driver

热门文章

  1. 第一篇博客 赶鸭子上架的d3.js学习笔记(bilibili从零开始画图表学习笔记 感谢万能的b站以及up睿小狼d)
  2. 溶剂回收机行业发展概述
  3. LTS分布式任务调度文档
  4. GridView中BoundField类型列的改行方法
  5. Hadoop环境配置(4)(MobaXterm)
  6. 禅道按照官方配置后,发现同局域网的其他电脑无法访问
  7. 调制解调器在联网中的功能
  8. 在kali2021.2系统下登录Windows server 远程桌面和安装搜狗拼音输入法
  9. 学习理发去哪里_去哪里学习美发好
  10. Java 平台中的增补字符