¿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;
}