Mapeo de Fichero

Iniciado por Иōҳ, 10 Diciembre 2011, 01:25 AM

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

Иōҳ

Hola que tal... vengo ya frustrado... tratando de poder resolver este problema y no encuentro la solución.

aquí les dejo mi code:

Código (asm) [Seleccionar]

invoke CreateFile,addr Nombre, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
mov [hFile], eax

invoke GetFileSize, [hFile], NULL
mov [nFileSize], eax


invoke MapViewOfFile, [hFile], FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
mov [hMapFile], eax

[...]


Todo funciona bien hasta llegar a MapViewOfFile, porque devuelve 0, GetLastError me devuelve 6, significa que el handle es inválido.

También hice esto

Código (asm) [Seleccionar]
invoke CreateFileMapping, INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE , 0, eax, addr Nombre
invoke MapViewOfFile, eax, FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
mov [hMapFile], eax

[...]


Según el ejemplo de la msdn y me devuelve the starting address of the mapped view, lo malo es que cuando accedo a ella está llena de 0s =/, y la verdad no encuentro el problema =/.

Haber si alguien me pueda ayudar D=

Nox.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

Eternal Idol

En el primer codigo NO estas creando el mapping (ese HANDLE es el que se necesita y no el de un archivo), estos son los pasos:

1) CreateFile
2) CreateFileMapping
3) MapViewOfFile

En el segundo no hay ningun problema pero es para crear memoria compartida.
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

Иōҳ

Sisi, tienes mucha razón EI.

Aquí el code funcional por si a alguien le sirve

Código (asm) [Seleccionar]
invoke CreateFile,addr Nombre, GENERIC_READ or GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
mov [hFile], eax
invoke GetFileSize, [hFile], NULL
mov [nFileSize], eax

invoke CreateFileMapping, [hFile], NULL, PAGE_READWRITE , 0, 0, NULL
        mov [hMapFile], eax
invoke MapViewOfFile, eax, FILE_MAP_ALL_ACCESS, 0, 0, [nFileSize]
        mov [lpMemory], eax


Había un problema en los Flags de CreateFile y CreateFileMapping, a uno le daba sólo leer, pero al otro le daba permisos de lectura y escritura XD, y cuando le di los mismo permisos a los 2, estubo todo bien.

Mil gracias por la ayuda :D!

Nox.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

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