Bagikan melalui


Fungsi ReBaseImage (imagehlp.h)

Mengubah alamat beban untuk gambar yang ditentukan, yang mengurangi waktu muat yang diperlukan untuk DLL.

Atau, Anda dapat menggunakan alat Rebase. Alat ini tersedia di Visual Studio dan Windows SDK.

Perhatikan bahwa fungsi ini diimplementasikan sebagai panggilan ke fungsi ReBaseImage64 .

Sintaks

BOOL IMAGEAPI ReBaseImage(
  [in]      PCSTR     CurrentImageName,
  [in]      PCSTR     SymbolPath,
  [in]      BOOL      fReBase,
  [in]      BOOL      fRebaseSysfileOk,
  [in]      BOOL      fGoingDown,
  [in]      ULONG     CheckImageSize,
  [out]     ULONG     *OldImageSize,
  [out]     ULONG_PTR *OldImageBase,
  [out]     ULONG     *NewImageSize,
  [in, out] ULONG_PTR *NewImageBase,
  [in]      ULONG     TimeStamp
);

Parameter

[in] CurrentImageName

Nama file yang akan di-rebase. Anda harus menentukan jalur lengkap ke file kecuali modul berada di direktori kerja saat ini dari proses panggilan.

[in] SymbolPath

Jalur yang digunakan untuk menemukan file simbol yang sesuai. Tentukan jalur ini untuk gambar yang dapat dieksekusi yang memiliki informasi simbolis karena ketika alamat gambar berubah, file database simbol (PDB) yang sesuai mungkin juga perlu diubah. Perhatikan bahwa meskipun jalur simbol tidak valid, fungsi akan berhasil jika dapat mengganti citra Anda.

[in] fReBase

Jika nilai ini TRUE, gambar akan di-rebase. Jika tidak, gambar tidak di-rebased.

[in] fRebaseSysfileOk

Jika nilai ini TRUE, citra sistem akan di-rebase. Jika tidak, citra sistem tidak di-rebased.

[in] fGoingDown

Jika nilai ini TRUE, gambar dapat diubah ukurannya di bawah basis yang diberikan; jika tidak, itu tidak bisa.

[in] CheckImageSize

Ukuran maksimum yang dapat ditumbuhkan gambar, dalam byte, atau nol jika tidak ada batasan.

[out] OldImageSize

Penunjuk ke variabel yang menerima ukuran gambar asli, dalam byte.

[out] OldImageBase

Penunjuk ke variabel yang menerima basis gambar asli.

[out] NewImageSize

Penunjuk ke variabel yang menerima ukuran gambar baru setelah operasi rebase, dalam byte.

[in, out] NewImageBase

Alamat dasar yang digunakan untuk mengubah ukuran gambar. Jika alamat tidak tersedia dan parameter fGoingDown diatur ke TRUE, fungsi menemukan alamat dasar baru dan mengatur parameter ini ke alamat dasar baru. Jika fGoingDownadalah FALSE, fungsi menemukan alamat dasar baru tetapi tidak mengatur parameter ini ke alamat dasar baru.

[in] TimeStamp

Stempel tanggal waktu baru untuk header file gambar. Nilai harus diwakili dalam jumlah detik yang berlalu sejak tengah malam (00:00:00), 1 Januari 1970, Waktu Terkoordinasi Universal, sesuai dengan jam sistem.

Jika parameter ini adalah 0, stempel tanggal waktu header file saat ini bertambah 1 detik.

Menampilkan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah TRUE.

Jika fungsi gagal, nilai yang dikembalikan adalah FALSE. Untuk mengambil informasi kesalahan yang diperluas, panggil GetLastError.

Keterangan

Fungsi ReBaseImage mengubah alamat beban yang diinginkan untuk gambar yang ditentukan. Operasi ini melibatkan pembacaan seluruh gambar dan memperbarui semua perbaikan, informasi penelusuran kesalahan, dan checksum. Anda dapat melakukan rebase gambar untuk mengurangi waktu muat yang diperlukan untuk DLL-nya. Jika aplikasi dapat mengandalkan DLL yang dimuat pada alamat beban yang diinginkan, maka pemuat sistem tidak perlu merelokasi gambar. Gambar hanya dimuat ke ruang alamat virtual aplikasi dan fungsi DllMain dipanggil, jika ada.

Semua fungsi ImageHlp, seperti ini, adalah utas tunggal. Oleh karena itu, panggilan dari lebih dari satu utas ke fungsi ini kemungkinan akan mengakibatkan perilaku tak terduga atau kerusakan memori. Untuk menghindari hal ini, Anda harus menyinkronkan semua panggilan bersamaan dari lebih dari satu utas ke fungsi ini.

Anda tidak dapat melakukan rebase DLL yang ditautkan dengan /DYNAMICBASE atau yang berada di direktori yang dilindungi, seperti folder System32.

Sebagai alternatif untuk menggunakan fungsi ini, lihat opsi /BASE linker.

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header imagehlp.h
Pustaka Imagehlp.lib
DLL Imagehlp.dll

Lihat juga

DllMain

ImageHlp Functions