次の方法で共有


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) になります。

関数が失敗した場合、戻り値は次のいずれかになります。

リターン コード/値 Description
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 関数