Compartir a través de


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

Consulte también

DllMain

Funciones ImageHlp

ReBaseImage