次の方法で共有


MapFileAndCheckSumA 関数 (imagehlp.h)

指定したファイルのチェックサムを計算します。

構文

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

パラメーター

[in] Filename

チェックサムを計算する対象のファイルのファイル名。

[out] HeaderSum

イメージ ファイルから元のチェックサムを受け取る変数へのポインター。エラーがある場合は 0。

[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 関数など、すべての ImageHlp 関数はシングル スレッドです。 そのため、複数のスレッドからこの関数を呼び出すと、予期しない動作やメモリ破損が発生する可能性があります。 これを回避するには、複数のスレッドからのすべての同時呼び出しをこの関数に同期する必要があります。

メモ この関数の Unicode 実装は ASCII 実装を呼び出します。その結果、コード ページがパス内の文字をサポートしていない場合、関数は失敗する可能性があります。 たとえば、英語以外の Unicode ファイル パスを渡し、既定のコード ページが英語の場合、認識できない英語以外のワイド文字は "??" に変換されます。 ファイルを開くことができません (関数はCHECKSUM_OPEN_FAILUREを返します)。
 

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー imagehlp.h
ライブラリ Imagehlp.lib
DLL Imagehlp.dll

関連項目

CheckSumMappedFile の

imageHlp 関数 の