Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: darsy2001 en 4 Diciembre 2015, 18:17 pm



Título: Problema con fichero y CreateFileMapping
Publicado por: darsy2001 en 4 Diciembre 2015, 18:17 pm
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!!


Título: Re: Problema con fichero y CreateFileMapping
Publicado por: Eternal Idol en 4 Diciembre 2015, 18:29 pm
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.


Título: Re: Problema con fichero y CreateFileMapping
Publicado por: darsy2001 en 4 Diciembre 2015, 18:41 pm
muchísimas gracias! Solucionado ;-)


Título: Re: Problema con fichero y CreateFileMapping
Publicado por: Eternal Idol en 4 Diciembre 2015, 18:54 pm
De nadas  ::)