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