Share via


Funzione ReBaseImage64 (imagehlp.h)

Modifica l'indirizzo di carico per l'immagine specificata, che riduce il tempo di caricamento necessario per una DLL.

In alternativa, è possibile usare lo strumento Rebase. Questo strumento è disponibile in Visual Studio e Windows SDK.

Sintassi

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
);

Parametri

[in] CurrentImageName

Nome del file da ribasare. È necessario specificare il percorso completo del file, a meno che il modulo non si trovi nella directory di lavoro corrente del processo di chiamata.

[in] SymbolPath

Percorso utilizzato per trovare il file di simboli corrispondente. Specificare questo percorso per le immagini eseguibili con informazioni simboliche perché quando gli indirizzi dell'immagine cambiano, potrebbe essere necessario modificare anche il file di database dei simboli corrispondente (PDB). Si noti che anche se il percorso del simbolo non è valido, la funzione avrà esito positivo se è in grado di ribasere l'immagine.

[in] fReBase

Se questo valore è TRUE, l'immagine viene ribasata. In caso contrario, l'immagine non è ribasata.

[in] fRebaseSysfileOk

Se questo valore è TRUE, l'immagine di sistema viene ribasata. In caso contrario, l'immagine di sistema non è ribasata.

[in] fGoingDown

Se questo valore è TRUE, l'immagine può essere ribasata sotto la base specificata; altrimenti, non può.

[in] CheckImageSize

Dimensioni massime che l'immagine può aumentare, in byte o zero se non esiste alcun limite.

[out] OldImageSize

Puntatore a una variabile che riceve le dimensioni dell'immagine originale, in byte.

[out] OldImageBase

Puntatore a una variabile che riceve la base dell'immagine originale.

[out] NewImageSize

Puntatore a una variabile che riceve le nuove dimensioni dell'immagine dopo l'operazione di ribase, in byte.

[in, out] NewImageBase

Indirizzo di base da usare per ribasare l'immagine. Se l'indirizzo non è disponibile e il parametro fGoingDown è impostato su TRUE, la funzione trova un nuovo indirizzo di base e imposta questo parametro sul nuovo indirizzo di base. Se fGoingDown è FALSE, la funzione trova un nuovo indirizzo di base, ma non imposta questo parametro sul nuovo indirizzo di base.

[in] TimeStamp

Nuovo indicatore data ora per l'intestazione del file di immagine. Il valore deve essere rappresentato nel numero di secondi trascorsi dalla mezzanotte (00:00:00), 1 gennaio 1970, Ora coordinata universale, in base all'orologio di sistema.

Se questo parametro è 0, il timestamp dell'intestazione del file corrente viene incrementato di 1 secondo.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è TRUE.

Se la funzione ha esito negativo, il valore restituito è FALSE. Per recuperare informazioni sull'errore estese, chiamare GetLastError.

Commenti

La funzione ReBaseImage64 modifica l'indirizzo di carico desiderato per l'immagine specificata. Questa operazione comporta la lettura dell'intera immagine e l'aggiornamento di tutte le correzioni, le informazioni di debug e il checksum. È possibile ribasere un'immagine per ridurre il tempo di caricamento richiesto per le DLL. Se un'applicazione può basarsi su una DLL caricata all'indirizzo di carico desiderato, il caricatore di sistema non deve spostare l'immagine. L'immagine viene semplicemente caricata nello spazio indirizzi virtuale dell'applicazione e la funzione DllMain viene chiamata, se presente.

Tutte le funzioni ImageHlp, ad esempio questa, sono a thread singolo. Pertanto, le chiamate da più thread a questa funzione potrebbero causare un comportamento imprevisto o un danneggiamento della memoria. Per evitare questo problema, è necessario sincronizzare tutte le chiamate simultanee da più thread a questa funzione.

Non è possibile ribasere le DLL che si collegano a /DYNAMICBASE o che risiedono in directory protette, ad esempio la cartella System32.

In alternativa all'uso di questa funzione, vedere l'opzione /BASE linker.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione imagehlp.h
Libreria Imagehlp.lib
DLL Imagehlp.dll

Vedi anche

DllMain

Funzioni ImageHlp

ReBaseImage