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


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

Вычисляет контрольную сумму указанного файла.

Синтаксис

DWORD IMAGEAPI MapFileAndCheckSumA(
  [in]  PCSTR  Filename,
  [out] PDWORD HeaderSum,
  [out] PDWORD CheckSum
);

Параметры

[in] Filename

Имя файла, для которого вычисляется контрольная сумма.

[out] HeaderSum

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

[out] CheckSum

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

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

Если функция выполнена успешно, возвращаемое значение CHECKSUM_SUCCESS (0).

Если функция завершается ошибкой, возвращаемое значение является одним из следующих значений.

Возврат кода или значения Описание
CHECKSUM_MAP_FAILURE
2
Не удалось сопоставить файл.
CHECKSUM_MAPVIEW_FAILURE
3
Не удалось сопоставить представление файла.
CHECKSUM_OPEN_FAILURE
1
Не удалось открыть файл.
CHECKSUM_UNICODE_FAILURE
4
Не удалось преобразовать имя файла в Юникод.

Замечания

Функция MapFileAndCheckSum вычисляет новую контрольную сумму для файла и возвращает ее в параметре CheckSum . Эта функция используется любым приложением, создающим или изменяющим исполняемый образ. Контрольные суммы требуются для драйверов в режиме ядра и некоторых системных БИБЛИОТЕК DLL. Компоновщик вычисляет исходную контрольную сумму во время ссылки, если вы используете соответствующий переключатель компоновщика. Дополнительные сведения см. в документации по компоновщику.

Рекомендуется, чтобы все изображения имели допустимые контрольные суммы. Вызывающий объект несет ответственность за размещение вновь вычисляемой контрольной суммы в сопоставленном образе и обновление образа файла на диске.

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

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

Примечание Реализация этой функции Юникода вызывает реализацию ASCII, и в результате функция может завершиться ошибкой, если кодовая страница не поддерживает символы в пути. Например, если вы передаете путь к файлу Юникода, а кодовая страница по умолчанию — английский, нераспознанные символы, не являющиеся английскими, преобразуются в "??" и файл не может быть открыт (функция возвращает CHECKSUM_OPEN_FAILURE).
 

Заметка

Заголовок imagehlp.h определяет MapFileAndCheckSum как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка imagehlp.h
библиотеки Imagehlp.lib
DLL Imagehlp.dll

См. также

CheckSumMappedFile

функций ImageHlp