内存映射:
HANDLE CreateFileMapping(Handle 文件,PSECURITY_ATTRIBUTES 安全属性,DWORD 保护属性,DWORD 文件大小高32位,DWORD 文件大小低32位,PCTSTR 映射名称)
PVOID MAPViewOfFile(HANDLE 映射对象,DWORD访问属性,DWORD 偏移量高32位,DWORD 偏移量低32位,SIZE_T 字节数)
//调用的时候传入地址就可以,测试用的txt文件
void Mapping(LPCTSTR path) {
HANDLE fFile01 = (HANDLE) CreateFile(path, GENERIC_WRITE | GENERIC_READ, 0, NULL,CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
char chBuffer[256];
memcpy(chBuffer, "testing", 7);
DWORD dwWritenSize = 0;
BOOL bRet = WriteFile(hFile01, chBuffer, 7, &dwWritenSize, NULL);
CloseHandle(hFile01);
HANDLE hFile = CreateFile(path, GENERIC_WRITE | GENERIC_READ, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwFileSize = GetFileSize(hFile, NULL);
//创建一个内存映射文件,大小为打开文件大小
HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0,dwFileSize , NULL);
//预定一块地址空间区域,并可以通过指针访问
PVOID pvFile = MapViewOfFile(hFileMap, FILE_MAP_WRITE, 0, 0, 0);
PSTR pch = (PSTR)pvFile;
//小写变大写
strupr(pch);
cout << pch << endl;
//从进程空间撤销对文件数据的关联
UnmapViewOfFile(pvFile);
CloseHandle(hFileMap);
SetFilePointer(hFile, dwFileSize, NULL, FILE_BEGIN);
SetEndOfFile(hFile);
CloseHandle(hFile);
}