为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 网络编程 > 其它综合 正文

Windows内存映射文件

三叶资源网 2022-12-24 20:18:50 其它综合 216 ℃ 0 评论

前言

在查看mono源码的时候,发现在加载mscorlib.dll的时候,使用的是内存映射文件.不管在Windows系统还是Linux系统,都有对应内存映射文件API.内存映射文件可以在不同进程间共享数据,效率也是最好的.

简单上手

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//内存映射文件
int main(int argc, char* argv[])
{
	//1. 打开文件,获取文件内核对象
	HANDLE hFile = CreateFile(TEXT("1.txt"), 
                            		GENERIC_READ| GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

	//获取文件大小
	DWORD fileSize = GetFileSize(hFile, NULL);

	//2. 创建文件映射内核对象
	HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 100, NULL);

	//3. 将文件的数据映射到当前程序的地址空间
	PBYTE pbFile = (PBYTE)MapViewOfFile(hFileMap, FILE_MAP_COPY, 0, 0, 0);

	for (int i = 0; i < fileSize; i++)
	{
		printf("%c ", pbFile[i]);
	}

	//4. 撤销对文件的映射
	UnmapViewOfFile(pbFile);

	//5. 关闭文件映射内核对象
	CloseHandle(hFileMap);

	//6. 关闭文件
	CloseHandle(hFile);
	return 0;
}

代码不多,主要在2和3上,这个demo看起来比起直接读取文件复杂些,具体在后面去更深入地学习内存映射文件,再详细说,还有在Linux如何使用内存映射文件.

个人能力有限,如果您发现有什么不对,请私信我

如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
易语言最新版一键备份原创动态加解密算法自媒体平台Js加密集福卡验证码图片WebUISQLite3QQ机器人2.0源码信号量抖音解析因特网服务支持库反跟踪UI检测OD模块取启动时间scriptcontrol对象易写易库枚举文件
最新评论