内存映射文件示例

 //获取当前操作系统的分配粒度
 SYSTEM_INFO sinf;
 GetSystemInfo(&sinf);
 DWORD dwAllocationGranularity = sinf.dwAllocationGranularity;

 //GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ这两个参数如果设置错误将导致错误
 HANDLE hFile = CreateFile("join", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ,
  NULL, CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL);

 //PAGE_READWRITE这个属性必须和GENERIC_WRITE | GENERIC_READ属性对应
 HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0,
  0x4000000, NULL);
 
 CloseHandle(hFile);

 __int64 qwFileSize = 0x4000000;
 __int64 qwFileOffset = 0;
 __int64 T = 600 * sinf.dwAllocationGranularity;
 DWORD dwBytesInBlock = 1000 * sinf.dwAllocationGranularity;

 //qwFileOffset>>32 取64位高位
 //qwFileOffset&0xFFFFFFFF 取64位低位
 //FILE_MAP_ALL_ACCESS这个属性与CreateFile和CreateFileMapping属性必须匹配
 PBYTE pbFile = (PBYTE)MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS,
  (DWORD)(qwFileOffset>>32), (DWORD)(qwFileOffset&0xFFFFFFFF), dwBytesInBlock);

 memcpy(pbFile, "123", 3);
 char temp[3];
 memcpy(temp, pbFile, 3);

 UnmapViewOfFile(pbFile);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值