Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo utilizar el método de mapeo de archivos de disco de memoria C para mapear un archivo de varios cientos de M, docenas de M y docenas de K?

¿Cómo utilizar el método de mapeo de archivos de disco de memoria C para mapear un archivo de varios cientos de M, docenas de M y docenas de K?

#include lt;windows.hgt;

#include lt;tchar.hgt;

#include lt;stdio.hgt;

int main()

{

HANDLE hFile = CreateFile(_T("1.txt"), GENERIC_READ | GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);

if (hFile == INVALID_HANDLE_VALUE) {

puts("no se pudo crear el archivo");

goto fail_open;

}

SetFileValidData(hFile, 1024);

HANDLE hMap = CreateFileMapping(hFile, 0, PAGE_READWRITE, 0, 1024, 0);

if (hMap = = NULL) {

puts("no se pudo crear el mapeo");

goto fail_map;

}

LPVOID pContent = MapViewOfFile (hMap, FILE_MAP_WRITE, 0, 0, 1024);

if (pContent == 0) {

puts("no se pudo abrir el mapeo");

goto fail_view;

}

//Bien, este archivo es equivalente a un espacio de memoria de 1024 bytes que solicitaste usando malloc.

char* pStr = (char*) pContent;

strcpy(pStr, "jajaja");

UnmapViewOfFile(pContent);

fail_view:

CloseHandle(hMap);

fail_map:

CloseHandle(hFile);

fail_open:

devuelve 0;

}