Ver Mensaje Individual
  #6  
Antiguo 27-04-2008
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Reputación: 18
rolandoj Va por buen camino
El problema con VirtualFreeEx

Hola,

Las pruebas que he hecho ya me han confirmado que el problema surge cuando libero el código de la rutina con VirtualFreeEx. Una investigación en Internet me ha mostrado que ese problema le ha ocurrido a otros; pero, hasta ahora, en ninguno de los sitios que he visto que lo han reportado se ha dado una explicación t/o solución.

El código que uso para liberar es :

Código Delphi [-]
TheResult := VirtualFreeEx(AProcessHandle, TheExtFuncAddr, 0, MEM_RELEASE);
        If Not Assigned(TheResult) Then Begin
           ShowMessage('Error liberando la Función '+SysErrorMessage(GetLastError));
        End;

Ahora bien, la rutina no me devuelve error, o sea, mi programa sigue funcionando; pero el proceso externo dice generar errores y se cierra.

La liberación de memoria de la parte de datos la hago de manera idéntica; pero esa no genera ningún problema.

La función la reservo así :

Código Delphi [-]
TheExtFuncAddr := VirtualAllocEx(AProcessHandle,
                                      0,
                                      AFunctionSize,
                                      MEM_COMMIT or MEM_RESERVE,
                                      PAGE_EXECUTE_READWRITE);

Quedo atento a sugerencias
Responder Con Cita