Freigeben über


ReBaseImage64-Funktion (imagehlp.h)

Ändert die Ladeadresse für das angegebene Image, wodurch die erforderliche Ladezeit für eine DLL reduziert wird.

Alternativ können Sie das Rebase-Tool verwenden. Dieses Tool ist in Visual Studio und dem Windows SDK verfügbar.

Syntax

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

Parameter

[in] CurrentImageName

Der Name der Zu wiederherstellenden Datei. Sie müssen den vollständigen Pfad zur Datei angeben, es sei denn, das Modul befindet sich im aktuellen Arbeitsverzeichnis des aufrufenden Prozesses.

[in] SymbolPath

Der Pfad, der zum Suchen der entsprechenden Symboldatei verwendet wird. Geben Sie diesen Pfad für ausführbare Bilder an, die symbolische Informationen enthalten, da bei einer Änderung der Bildadressen möglicherweise auch die entsprechende Symboldatenbankdatei (PDB) geändert werden muss. Beachten Sie, dass die Funktion erfolgreich ist, auch wenn der Symbolpfad ungültig ist, wenn sie das Bild neu erstellen kann.

[in] fReBase

Wenn dieser Wert TRUE ist, wird das Image neu erstellt. Andernfalls wird das Image nicht neu erstellt.

[in] fRebaseSysfileOk

Wenn dieser Wert TRUE ist, wird das Systemimage neu erstellt. Andernfalls wird das Systemimage nicht neu erstellt.

[in] fGoingDown

Wenn dieser Wert TRUE ist, kann das Bild unterhalb der angegebenen Basis neu erstellt werden. andernfalls kann dies nicht.

[in] CheckImageSize

Die maximale Größe, auf die das Bild in Byte oder 0 (null) anwachsen kann, wenn es keine Begrenzung gibt.

[out] OldImageSize

Ein Zeiger auf eine Variable, die die ursprüngliche Bildgröße in Byte empfängt.

[out] OldImageBase

Ein Zeiger auf eine Variable, die die ursprüngliche Bildbasis empfängt.

[out] NewImageSize

Ein Zeiger auf eine Variable, die die neue Bildgröße nach dem Rebasevorgang in Byte empfängt.

[in, out] NewImageBase

Die Basisadresse, die zum Neubasieren des Images verwendet werden soll. Wenn die Adresse nicht verfügbar ist und der fGoingDown-Parameter auf TRUE festgelegt ist, sucht die Funktion eine neue Basisadresse und legt diesen Parameter auf die neue Basisadresse fest. Wenn fGoingDownauf FALSE festgelegt ist, findet die Funktion eine neue Basisadresse, legt diesen Parameter jedoch nicht auf die neue Basisadresse fest.

[in] TimeStamp

Der neue Zeitstempel für den Bilddateiheader. Der Wert muss in der Anzahl der Sekunden dargestellt werden, die seit Mitternacht (00:00:00 Uhr), 1. Januar 1970, Koordinierte Weltzeit, gemäß der Systemuhr verstrichen sind.

Wenn dieser Parameter 0 ist, wird der aktuelle Datumsstempel der Dateiheaderzeit um 1 Sekunde erhöht.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE.

Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen abzurufen.

Hinweise

Die ReBaseImage64-Funktion ändert die gewünschte Ladeadresse für das angegebene Bild. Dieser Vorgang umfasst das Lesen des gesamten Images und das Aktualisieren aller Korrekturen, Debuginformationen und Prüfsummen. Sie können ein Image neu erstellen, um die erforderliche Ladezeit für seine DLLs zu reduzieren. Wenn sich eine Anwendung darauf verlassen kann, dass eine DLL an der gewünschten Ladeadresse geladen wird, muss das Image vom Systemladeprogramm nicht verschoben werden. Das Image wird einfach in den virtuellen Adressraum der Anwendung geladen, und die DllMain-Funktion wird aufgerufen, sofern vorhanden.

Alle ImageHlp-Funktionen, z. B. diese, sind Singlethreads. Daher führen an diese Funktion gerichtete Aufrufe mehrerer Threads wahrscheinlich zu unerwartetem Verhalten oder einer Beschädigung des Speichers. Um dies zu vermeiden, müssen Sie alle an diese Funktion gerichteten gleichzeitigen Aufrufe mehrerer Threads synchronisieren.

DlLs, die mit /DYNAMICBASE verknüpft sind oder sich in geschützten Verzeichnissen wie dem Ordner System32 befinden, können nicht neu erstellt werden.

Eine Alternative zur Verwendung dieser Funktion finden Sie unter der Linkeroption /BASE .

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile imagehlp.h
Bibliothek Imagehlp.lib
DLL Imagehlp.dll

Weitere Informationen

DllMain

ImageHlp-Funktionen

ReBaseImage