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 |