内存映射

内存映射:

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值