MsiGetFileHashA 関数 (msi.h)

MsiGetFileHash 関数は、ファイルへのパスを取得し、そのファイルの 128 ビット ハッシュを返します。 作成ツールでは、 MsiGetFileHash を使用して、 MsiFileHash テーブルの設定に必要なファイル ハッシュを取得できます。

Windows インストーラーでは、ファイル ハッシュを使用して、不要なファイルコピーを検出して排除します。 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 ビット ファイル ハッシュ全体は、4 つの 32 ビット フィールドとして返されます。 4 つのフィールドの番号付けは 0 から始まります。 MsiGetFileHash によって返される値は、MSIFILEHASHINFO 構造体の 4 つのフィールドに対応します。 最初のフィールドは MsiFileHash テーブルの HashPart1 列に対応し、2 番目のフィールドは HashPart2 列に対応し、3 番目のフィールドは HashPart3 列に対応し、4 番目のフィールドは HashPart4 列に対応します。

MsiFileHash テーブルに入力するハッシュ情報は、 MsiGetFileHash メソッドまたは FileHash メソッドを呼び出すことによって取得する必要があります。 他のメソッドを使用してファイル ハッシュを生成しないでください。

注意

msi.h ヘッダーは、MSIGetFileHash をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP の Windows インストーラー。 Windows インストーラーのバージョン別に必須となる最小 Windows サービス パックに関する詳細については、Windows インストーラーの実行時の要件に関する記事を参照してください。
対象プラットフォーム Windows
ヘッダー msi.h
Library Msi.lib
[DLL] Msi.dll

こちらもご覧ください

既定のファイルのバージョン管理

MSIFILEHASHINFO

MsiFileHash テーブル