win7下使用共享内存方式CreateFileMapping失败错误码5的解决方法
在普通应用程序中使用共享内存方式创建内存共享对象时,CreateFileMapping函数总是返回句柄为NULL,通过GetLastError得到返回错误码 0x5, 问题解决:
使用Local 代替Global, 问题解决,下面是使用实例:
TCHAR szName[] = TEXT("Local\\MyFileMappingObject");
TCHAR szName[] = TEXT("Global\\MyFileMappingObject");
原来 Global\\ 保证创建的对象是全局的,对权限要求比较高,而使用local可以保证服务对象仅对当前用户中的进程和线程可见。这就是总是返回权限失败问题的原因。
附一个使用实例:
// testsharemem.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#define BUF_SIZE 256
TCHAR szName[] = TEXT("Local\\MyFileMappingObject");
TCHAR szMsg[] = TEXT("Message from first process.");
int p1();
int p2();
int _tmain(int argc, _TCHAR* argv[])
{
if (argc == 1)
{
p1();
}
else
{
p2();
}
return 0;
}
int p1()
{
HANDLE hMapFile;
LPCTSTR pBuf;
hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
BUF_SIZE, // maximum object size (low-order DWORD)
szName); // name of mapping object
if (hMapFile == NULL)
{
_tprintf(TEXT("P1: Could not create file mapping object (%d).\n"),
GetLastError());
return 1;
}
else
{
_tprintf(TEXT("P1: create file mapping object hMapFile= (0x%x).\n", hMapFile));
}
pBuf = (LPTSTR)MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_ALL_ACCESS, // read/write permission
0,
0,
BUF_SIZE);
if (pBuf == NULL)
{
_tprintf(TEXT("P1: Could not map view of file (%d).\n"),
GetLastError());
CloseHandle(hMapFile);
return 1;
}
CopyMemory((PVOID)pBuf, szMsg, (_tcslen(szMsg) * sizeof(TCHAR)));
_getch();
UnmapViewOfFile(pBuf);
CloseHandle(hMapFile);
return 0;
}
int p2()
{
HANDLE hMapFile;
LPCTSTR pBuf;
hMapFile = OpenFileMapping(
FILE_MAP_ALL_ACCESS, // read/write access
FALSE, // do not inherit the name
szName); // name of mapping object
if (hMapFile == NULL)
{
_tprintf(TEXT("P2: Could not open file mapping object (%d).\n"),
GetLastError());
return 1;
}
pBuf = (LPTSTR)MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_ALL_ACCESS, // read/write permission
0,
0,
BUF_SIZE);
if (pBuf == NULL)
{
_tprintf(TEXT("P2: Could not map view of file (%d).\n"),
GetLastError());
CloseHandle(hMapFile);
return 1;
}
MessageBox(NULL, pBuf, TEXT("Process2"), MB_OK);
UnmapViewOfFile(pBuf);
CloseHandle(hMapFile);
return 0;
}
win7下使用共享内存方式CreateFileMapping失败错误码5的解决方法相关推荐
- 计算机禁止共享上网,Win7 windows7网络共享设置及登录失败:禁用当前用户解决方法...
Win7网络共享本地安全策略设置主体思路 一:关闭防火墙:三个防火墙,关闭家庭网络这一个即可. (直接访问不了) 二: (登录失败:禁用当前用户) 但是Win7一会儿就会自动打开防火墙,禁止的办法: ...
- android qq三方登录授权失败,QQ第三方登录无法授权错误码110401的解决方法
原标题:QQ第三方登录无法授权错误码110401的解决方法 一些网友在注册APP的时候,会选择QQ作为第三方登录方式,但是,最近,一些网友发现:选择QQ第三方登录的时候,会出现无法授权错误码11040 ...
- windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法
windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法 问题环境 问题描述 问题原因 & 解决办法 问题环境 Windows 10 x64 .python 3.8. ...
- mysql错误18456_【问题解决】SQL2008 SQL Server身份认证方式登录失败(错误18456)解决方法图解...
今天同事电脑本地数据库,用SQL Server身份认证登录不了,后来解决了,突然想起自己曾经也遇到过这个问题,所以还是在这里记录下. 问题报错截图如下: 解决方法步骤截图如下: 1.打开本地数据库-- ...
- 计算机以太网依赖服务或无法启动,win7 网络和共享中心提示“依赖服务或组无法启动” 解决方法...
今天再次遇到了这种情况. 一台电脑ping不通.也无法连接服务器:但可以通过远程桌面远程别的电脑或者被别的电脑所远程. 打开网络和共享中心,提示"依赖服务或组无法启动". 以前遇过 ...
- win7 网络和共享中心提示“依赖服务或组无法启动” 解决方法
今天再次遇到了这种情况. 一台电脑ping不通.也无法连接服务器:但可以通过远程桌面远程别的电脑或者被别的电脑所远程. 打开网络和共享中心,提示"依赖服务或组无法启动". 以前遇过 ...
- Win10-1903安装补丁KB4497936总失败错误码0x800f081f的解决办法
清理升级记录库也没用... 从v2ex.com上看到的可用: 1)下载CAB补丁 访问:https://uupdump.ml/get.php?id=c0340fe5-efce-4c5c-bcb3-6e ...
- java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...
进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...
- Linux下进程间通信--共享内存:最快的进程间通信方式
内存共享最新整理: Linux下进程间通信-共享内存 - 码到城攻共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式https://www.codecomeon.com/posts/109/ ...
最新文章
- ORB_SLAM2代码阅读(5)——Bundle Adjustment
- 美团实习面试:熟悉红黑树是吧?能不能写一下?
- linux网络命令1
- 官方文档翻译-ESP32-High Resolution Timer
- jdbc连接数据库失败,com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。
- Oracel官网下载各类版本的JDK
- (Excel)常用函数公式及操作技巧之四:文本与页面设置(一)
- python爬虫程序框架的理论是什么_Python网络爬虫(scrapy框架简介和基础应用)
- 基于BS模式的航材电子商务交易平台(2)
- (2)把BlackBerry作为插件安装到已有的Eclipse中
- scratch冬天下雪了 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月
- servlet的九大内置对象和四大作用域
- java读取nfc数据_JAVA有关NFC读卡器读取数据
- 【Excel】定位条件快速将空值替换为指定值
- 找工作必看!!!关于什么叫做三方协议
- jquery给id加css,JQuery为元素添加样式
- 绑定校园卡服务器没有响应,校园卡服务部服务器暂行管理规定
- 渗透测试学习笔记20.11.20
- 在IDEA中激活JRebel
- 电脑连接到手机并安装手机驱动usb-driver