Share via


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
파일 이름을 유니코드로 변환할 수 없습니다.

설명

MapFileAndCheckSum 함수는 파일에 대한 새 체크섬을 계산하고 CheckSum 매개 변수에 반환합니다. 이 함수는 실행 파일 이미지를 만들거나 수정하는 모든 애플리케이션에서 사용됩니다. 체크섬은 커널 모드 드라이버 및 일부 시스템 DLL에 필요합니다. 적절한 링커 스위치를 사용하는 경우 링커는 링크 타임에 원래 체크섬을 계산합니다. 자세한 내용은 링커 설명서를 참조하세요.

모든 이미지에는 유효한 체크섬이 있는 것이 좋습니다. 새로 계산된 체크섬을 매핑된 이미지에 배치하고 파일의 디스크 내 이미지를 업데이트하는 것은 호출자의 책임입니다.

유효한 실행 파일 이미지를 가리키지 않는 Filename 매개 변수를 전달하면 예측할 수 없는 결과가 생성됩니다. 이 함수의 모든 사용자는 유효한 실행 파일 이미지가 전달되고 있는지 확인하는 것이 좋습니다.

이 함수와 같은 모든 ImageHlp 함수는 단일 스레드입니다. 따라서 둘 이상의 스레드에서 이 함수로 호출하면 예기치 않은 동작이나 메모리 손상이 발생할 수 있습니다. 이를 방지하려면 둘 이상의 스레드에서 이 함수로의 모든 동시 호출을 동기화해야 합니다.

참고 이 함수의 유니코드 구현은 ASCII 구현을 호출하므로 코드 페이지가 경로의 문자를 지원하지 않으면 함수가 실패할 수 있습니다. 예를 들어 영어가 아닌 유니코드 파일 경로를 전달하고 기본 코드 페이지가 영어인 경우 인식할 수 없는 영어가 아닌 와이드 문자가 "??"로 변환됩니다. 파일을 열 수 없습니다(함수는 CHECKSUM_OPEN_FAILURE 반환).
 

참고

imagehlp.h 헤더는 MAPFileAndCheckSum을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 imagehlp.h
라이브러리 Imagehlp.lib
DLL Imagehlp.dll

추가 정보

CheckSumMappedFile

ImageHlp 함수