Función ReBaseImage64 (imagehlp.h)
Cambia la dirección de carga de la imagen especificada, lo que reduce el tiempo de carga necesario para un archivo DLL.
Como alternativa, puede usar la herramienta Rebase. Esta herramienta está disponible en Visual Studio y windows SDK.
Sintaxis
BOOL IMAGEAPI ReBaseImage64(
[in] PCSTR CurrentImageName,
[in] PCSTR SymbolPath,
[in] BOOL fReBase,
[in] BOOL fRebaseSysfileOk,
[in] BOOL fGoingDown,
[in] ULONG CheckImageSize,
[out] ULONG *OldImageSize,
[out] ULONG64 *OldImageBase,
[out] ULONG *NewImageSize,
[in, out] ULONG64 *NewImageBase,
[in] ULONG TimeStamp
);
Parámetros
[in] CurrentImageName
Nombre del archivo que se va a rebase. Debe especificar la ruta de acceso completa al archivo a menos que el módulo esté en el directorio de trabajo actual del proceso de llamada.
[in] SymbolPath
Ruta de acceso utilizada para buscar el archivo de símbolos correspondiente. Especifique esta ruta de acceso para las imágenes ejecutables que tienen información simbólica porque, cuando cambian las direcciones de imagen, es posible que también sea necesario cambiar el archivo de base de datos de símbolos correspondiente (PDB). Tenga en cuenta que aunque la ruta de acceso del símbolo no sea válida, la función se realizará correctamente si es capaz de rebase la imagen.
[in] fReBase
Si este valor es TRUE, la imagen se vuelve a basar. De lo contrario, la imagen no se vuelve a basar.
[in] fRebaseSysfileOk
Si este valor es TRUE, se vuelve a basar la imagen del sistema. De lo contrario, la imagen del sistema no se vuelve a basar.
[in] fGoingDown
Si este valor es TRUE, la imagen se puede rebase debajo de la base especificada; de lo contrario, no puede.
[in] CheckImageSize
Tamaño máximo que la imagen puede aumentar, en bytes o cero, si no hay ningún límite.
[out] OldImageSize
Puntero a una variable que recibe el tamaño de imagen original, en bytes.
[out] OldImageBase
Puntero a una variable que recibe la base de imagen original.
[out] NewImageSize
Puntero a una variable que recibe el nuevo tamaño de imagen después de la operación de rebase, en bytes.
[in, out] NewImageBase
Dirección base que se va a usar para rebasar la imagen. Si la dirección no está disponible y el parámetro fGoingDown se establece en TRUE, la función busca una nueva dirección base y establece este parámetro en la nueva dirección base. Si fGoingDown es FALSE, la función busca una nueva dirección base, pero no establece este parámetro en la nueva dirección base.
[in] TimeStamp
Nueva marca de fecha de hora para el encabezado del archivo de imagen. El valor debe representarse en el número de segundos transcurridos desde la medianoche (00:00:00), 1 de enero de 1970, Hora coordinada universal, según el reloj del sistema.
Si este parámetro es 0, la marca de fecha y hora del encabezado de archivo actual se incrementa en 1 segundo.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es TRUE.
Si se produce un error en la función, el valor devuelto es FALSE. Para recuperar información de error extendida, llame a GetLastError.
Comentarios
La función ReBaseImage64 cambia la dirección de carga deseada para la imagen especificada. Esta operación implica leer toda la imagen y actualizar todas las correcciones, la información de depuración y la suma de comprobación. Puede volver a crear una imagen para reducir el tiempo de carga necesario para sus archivos DLL. Si una aplicación puede basarse en un archivo DLL que se carga en la dirección de carga deseada, el cargador del sistema no tiene que reubicar la imagen. La imagen se carga simplemente en el espacio de direcciones virtuales de la aplicación y se llama a la función DllMain , si hay una.
Todas las funciones ImageHlp, como esta, son un único subproceso. Por lo tanto, es probable que las llamadas desde más de un subproceso a esta función producirán un comportamiento inesperado o daños en la memoria. Para evitarlo, debe sincronizar todas las llamadas simultáneas de más de un subproceso a esta función.
No se pueden volver a base de archivos DLL que se vinculan con /DYNAMICBASE o que residen en directorios protegidos, como la carpeta System32.
Como alternativa al uso de esta función, consulte la opción del enlazador /BASE .
Requisitos
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | imagehlp.h |
Library | Imagehlp.lib |
Archivo DLL | Imagehlp.dll |