Problema con fichero y CreateFileMapping

Iniciado por darsy2001, 4 Diciembre 2015, 18:17 PM

0 Miembros y 1 Visitante están viendo este tema.

darsy2001

Hola. A ver si me podeis ayudar con un ejercicio de mapeo.

Quiero crear un .txt vacío y mapearlo para escribir mediente la vista. Mi problema es que no consigo ni si quiera que CreateFileMapping no devuelva error y creo que puede ser porque el tamaño del fichero es cero. ¿alguien sabe como arreglarlo?


El código sería este:

int _tmain(int argc, _TCHAR* argv[])
{
   HANDLE hf;              // file handle
   HANDLE hFileMappingObject;
   LPVOID lpDirBase;
   char* Buffer;
   char frase[] = "Hola. Estoy escribiendo en tu fichero...";

   hf = CreateFile("MiArchivo.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
   if (hf == INVALID_HANDLE_VALUE)
   {
      printf("Error en CreateFile\n");
      return -1;
   }
   hFileMappingObject = CreateFileMapping(hf, NULL, PAGE_READWRITE, 0, 4096, NULL);
   if (hFileMappingObject == NULL)
   {
      printf("Error al crear el fichero mapeado\n");
      return -1;
   }
Aquí siempre devuelve error.

Gracias!!

Eternal Idol

Te falta GENERIC_READ al llamar a CreateFile, por eso CreateFileMapping falla (le pedis READ y WRITE con PAGE_READWRITE y solo tenes WRITE) y GetLastError es 5 (ERROR_ACCESS_DENIED). Simpre mira los valores de retorno y el last error.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

darsy2001


Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón