目前共有1篇帖子。 內容轉換:不轉換▼
 
點擊 回復
115 0
【实例】将文件内容映射到内存中
一派護法 十九級
1樓 發表于:2016-3-26 11:22
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hFile = CreateFile(TEXT("test.dat"), GENERIC_READ | GENERIC_WRITE, NULL, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    DWORD dwFileSize = GetFileSize(hFile, NULL);
    DWORD dwWritten;
    printf("文件大小: %d\n", dwFileSize);

    if (dwFileSize == 0)
    {
        char str[100];
        strcpy_s(str, "Creates or opens a named or unnamed file mapping object for a specified file.");
        WriteFile(hFile, str, sizeof(str), &dwWritten, NULL);
        dwFileSize = GetFileSize(hFile, NULL);
    }
    
    HANDLE hMapFile = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwFileSize, NULL);
    LPSTR lpData = (LPSTR)MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, dwFileSize);
    puts(lpData);
    
    // 只修改内存中的字符串 (最后会被自动写入文件)
    lpData[8] = 'O';
    lpData[9] = 'R';
    //FlushViewOfFile(lpData + 8, 2); // 立即写入文件

    UnmapViewOfFile(lpData);
    CloseHandle(hMapFile);

    CloseHandle(hFile);
    return 0;
}

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:115 回複數:0
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-3-26 11:22
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。