MsiGetFileHashA 函数 (msi.h)

MsiGetFileHash 函数采用文件的路径,并返回该文件的 128 位哈希。 创作工具可以使用 MsiGetFileHash 来获取填充 MsiFileHash 表所需的文件哈希。

Windows Installer 使用文件哈希作为检测和消除不必要的文件复制的方法。 存储在 MsiFileHash 表中的文件哈希可能与用户计算机上的现有文件的哈希进行比较。

语法

UINT MsiGetFileHashA(
  [in]  LPCSTR           szFilePath,
  [in]  DWORD            dwOptions,
  [out] PMSIFILEHASHINFO pHash
);

参数

[in] szFilePath

要进行哈希处理的文件的路径。

[in] dwOptions

此列中的值必须为 0。 此参数保留供将来使用。

[out] pHash

指向返回的文件哈希信息的指针。

返回值

价值 意义
ERROR_SUCCESS
函数成功完成。
ERROR_FILE_NOT_FOUND
该文件不存在。
ERROR_ACCESS_DENIED
无法打开该文件以获取版本信息。
E_FAIL
发生意外错误。
 
 

言论

整个 128 位文件哈希将作为四个 32 位字段返回。 四个字段的编号从零开始。 MsiGetFileHash 返回的值 对应于 MSIFILEHASHINFO 结构的四个字段。 第一个字段对应于 MsiFileHash 表的 HashPart1 列,第二个字段对应于 HashPart2 列,第三个字段对应于 HashPart3 列,第四个字段对应于 HashPart4 列。

必须通过调用 MsiGetFileHashFileHash 方法获取在 MsiFileHash 表中输入的哈希信息。 不要尝试使用其他方法来生成文件哈希。

注意

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

要求

要求 价值
最低支持的客户端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer。 有关 Windows Installer 版本所需的最低 Windows Service Pack 的信息,请参阅 Windows Installer Run-Time 要求。
目标平台 窗户
标头 msi.h
Msi.lib
DLL Msi.dll

另请参阅

默认文件版本控制

MSIFILEHASHINFO

MsiFileHash 表