Поделиться через


Функция ReBaseImage64 (imagehlp.h)

Изменяет адрес загрузки для указанного образа, что сокращает время загрузки библиотеки DLL.

Кроме того, можно использовать средство Перебаза. Это средство доступно в Visual Studio и Windows SDK.

Синтаксис

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

Параметры

[in] CurrentImageName

Имя файла, который необходимо перебазировать. Необходимо указать полный путь к файлу, если модуль не находится в текущем рабочем каталоге вызывающего процесса.

[in] SymbolPath

Путь, используемый для поиска соответствующего файла символов. Укажите этот путь для исполняемых изображений с символьными сведениями, так как при изменении адресов изображений также может потребоваться изменить соответствующий файл базы данных символов (PDB). Обратите внимание, что даже если путь к символам недопустим, функция будет успешно выполнена, если она сможет перебазировать изображение.

[in] fReBase

Если это значение равно TRUE, образ будет перебазирован. В противном случае образ не будет перебазирован.

[in] fRebaseSysfileOk

Если это значение равно TRUE, образ системы перебазируется. В противном случае образ системы не будет перебазирован.

[in] fGoingDown

Если это значение равно TRUE, образ можно перебазировать под заданной базой; В противном случае он не может.

[in] CheckImageSize

Максимальный размер, до который может увеличиться изображение( в байтах) или нуль при отсутствии ограничений.

[out] OldImageSize

Указатель на переменную, которая получает исходный размер изображения в байтах.

[out] OldImageBase

Указатель на переменную, которая получает исходную базу образа.

[out] NewImageSize

Указатель на переменную, которая получает новый размер изображения после операции изменения базы данных в байтах.

[in, out] NewImageBase

Базовый адрес, используемый для перебазирования образа. Если адрес недоступен, а параметру fGoingDown присвоено значение TRUE, функция находит новый базовый адрес и задает для этого параметра новый базовый адрес. Если fGoingDown имеет значение FALSE, функция находит новый базовый адрес, но не задает для этого параметра новый базовый адрес.

[in] TimeStamp

Новая метка даты и времени для заголовка файла изображения. Значение должно быть представлено в количестве секунд, прошедшем с полуночи (00:00:00), 1 января 1970 года, универсального скоординированного времени, в соответствии с системными часами.

Если этот параметр имеет значение 0, метка даты даты заголовка текущего файла увеличивается на 1 секунду.

Возвращаемое значение

Если функция выполняется успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.

Комментарии

Функция ReBaseImage64 изменяет требуемый адрес загрузки для указанного образа. Эта операция включает в себя чтение всего образа и обновление всех исправлений, сведений об отладке и контрольной суммы. Вы можете перебазировать образ, чтобы сократить время загрузки библиотек DLL. Если приложение может полагаться на библиотеку DLL, загружаемую по нужному адресу загрузки, то системный загрузчик не должен перемещать образ. Образ просто загружается в виртуальное адресное пространство приложения и вызывается функция DllMain , если она присутствует.

Все функции ImageHlp, такие как эта, являются однопоточными. Поэтому вызовы из нескольких потоков к этой функции, скорее всего, приведут к непредвиденному поведению или повреждению памяти. Чтобы избежать этого, необходимо синхронизировать все параллельные вызовы из нескольких потоков в эту функцию.

Нельзя перебазировать библиотеки DLL, которые связаны с /DYNAMICBASE или находятся в защищенных каталогах, таких как папка System32.

В качестве альтернативы использованию этой функции см. параметр компоновщика /BASE .

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header imagehlp.h
Библиотека Imagehlp.lib
DLL Imagehlp.dll

См. также раздел

DllMain

Функции ImageHlp

ReBaseImage