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
无法将文件名转换为 Unicode。

注解

MapFileAndCheckSum 函数计算文件的新校验和,并在 CheckSum 参数中返回它。 创建或修改可执行映像的任何应用程序都使用此函数。 内核模式驱动程序和某些系统 DLL 需要校验和。 如果使用适当的链接器开关,链接器会在链接时计算原始校验和。 有关更多详细信息,请参阅链接器文档。

建议所有映像都具有有效的校验和。 调用方负责将新计算的校验和放入映射的映像中,并更新文件的磁盘映像。

传递不指向有效可执行映像的 Filename 参数将产生不可预知的结果。 建议使用此函数的任何用户确保传递有效的可执行映像。

所有 ImageHlp 函数(例如此函数)都是单线程函数。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。

注意 此函数的 Unicode 实现调用 ASCII 实现,因此,如果代码页不支持路径中的字符,该函数可能会失败。 例如,如果传递非英语 Unicode 文件路径,并且默认代码页为英语,则无法识别的非英语宽字符将转换为“??” (函数返回CHECKSUM_OPEN_FAILURE) ,则无法打开该文件。
 

注意

imagehlp.h 标头将 MapFileAndCheckSum 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 imagehlp.h
Library Imagehlp.lib
DLL Imagehlp.dll

另请参阅

CheckSumMappedFile

ImageHlp 函数