• Jueves 2 de Mayo de 2024, 06:44

Autor Tema:  Globalrealloc  (Leído 1258 veces)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Globalrealloc
« en: Lunes 26 de Febrero de 2007, 20:46 »
0
¿Como se usa esta funcion?
Segun entiendo sirve para redimensionar un bloque de memoria no FIXED que fue solicitado con  GlobalAlloc . (Entonces, primero solicito el bloque, le hago lock y..)
Código: Text
  1.  
  2. invoke GlobalReAlloc, [hMemory], GMEM_MOVEABLE+GMEM_ZEROINIT,MEMSIZE
  3. mov  [hMemory],eax;          eax es 0, error
  4. invoke [GlobalLock,hMemory]
  5. mov  [pMemory],eax
  6.  
  7.  
pero esto no resulta
Por alguna razon, cuando la uso, en eax me devuelve 0 o  sea, error.
¿Falta algo en la parte de GlobalReAlloc?



Para safar, uso esto>
Código: Text
  1.  
  2. GlobalUnlock, [pMemory]
  3. GlobalFree, [hMemory]
  4. GlobalAlloc, .........
  5. GlobalLock
  6.  
  7.  
Libero la memoria y la vuelvo a pedir pero creo que seria mejor usar GlobalReAlloc, pero esta falla.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Globalrealloc
« Respuesta #1 en: Lunes 26 de Febrero de 2007, 22:28 »
0
No se para que usas Global* pero si copiaste el codigo correctamente estas pasando los parametros al revez:

HGLOBAL GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags);

Primero el nuevo tamaño y despues los flags.


PD. Es mejor usar Heap*.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Globalrealloc
« Respuesta #2 en: Lunes 26 de Febrero de 2007, 22:41 »
0
Esa es la otra duda que tenía, en los tutoriales de eczelion usan GlobalAlloc peró vi en un codigo que se usaba HeapAlloc. (No sabía cual era mejor)
Ahora que lo veo, creo que si los pasé al revés. Igualmente voy a cambiar a HeapAlloc.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Globalrealloc
« Respuesta #3 en: Lunes 26 de Febrero de 2007, 22:44 »
0
Cita de: "Enko"
Esa es la otra duda que tenía, en los tutoriales de eczelion usan GlobalAlloc peró vi en un codigo que se usaba HeapAlloc. (No sabía cual era mejor)
Segun la biblia (MSDN):

Note  The global functions are slower than other memory management functions and do not provide as many features. Therefore, new applications should use the heap functions. However, the global functions are still used with DDE, the clipboard functions, and OLE data objects.

Y segun yo y mi depurador Globa* termina llamando a Heap* (que en realidad esta redireccionado a RtlHeap* en la NTDLL).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Globalrealloc
« Respuesta #4 en: Lunes 26 de Febrero de 2007, 22:49 »
0
Citar
Y segun yo y mi depurador Globa* termina llamando a Heap* (que en realidad esta redireccionado a RtlHeap* en la NTDLL).
:o, grax.
Por ahora, cuando depuro, si veo una llamada a la API, le doy a F8 para que se saltee encima y no me muestre el codigo de las dlls que mi nivel de asm es mucho inferior a eso.

PD: dentro de pronto voy sacar un lector de bmp de 24 con rutinas propias. Por lo menos en eso estoy... :lightsabre:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Globalrealloc
« Respuesta #5 en: Lunes 26 de Febrero de 2007, 22:53 »
0
Cita de: "Enko"
Por ahora, cuando depuro, si veo una llamada a la API, le doy a F8 para que se saltee encima y no me muestre el codigo de las dlls que mi nivel de asm es mucho inferior a eso.

Es solo cuestion de practica  :kicking:

Cita de: "Enko"
PD: dentro de pronto voy sacar un lector de bmp de 24 con rutinas propias. Por lo menos en eso estoy... :lightsabre:

Dale gas  :comp:  B)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.