Freigeben über


MapFileAndCheckSumA-Funktion (imagehlp.h)

Berechnet die Prüfsumme der angegebenen Datei.

Syntax

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

Parameter

[in] Filename

Der Dateiname der Datei, für die die Prüfsumme berechnet werden soll.

[out] HeaderSum

Ein Zeiger auf eine Variable, die die ursprüngliche Prüfsumme aus der Bilddatei empfängt, oder null, wenn ein Fehler vorliegt.

[out] CheckSum

Ein Zeiger auf eine Variable, die die berechnete Prüfsumme empfängt.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert CHECKSUM_SUCCESS (0).

Wenn die Funktion fehlschlägt, ist der Rückgabewert einer der folgenden.

Zurückgeben von Code/Wert Beschreibung
CHECKSUM_MAP_FAILURE
2
Die Datei konnte nicht zugeordnet werden.
CHECKSUM_MAPVIEW_FAILURE
3
Eine Ansicht der Datei konnte nicht zugeordnet werden.
CHECKSUM_OPEN_FAILURE
1
Die Datei konnte nicht geöffnet werden.
CHECKSUM_UNICODE_FAILURE
4
Der Dateiname konnte nicht in Unicode konvertiert werden.

Bemerkungen

Die MapFileAndCheckSum--Funktion berechnet eine neue Prüfsumme für die Datei und gibt sie im parameter CheckSum zurück. Diese Funktion wird von jeder Anwendung verwendet, die ein ausführbares Bild erstellt oder ändert. Prüfsummen sind für Kernelmodustreiber und einige System-DLLs erforderlich. Der Linker berechnet die ursprüngliche Prüfsumme zur Linkzeit, wenn Sie den entsprechenden Linkerschalter verwenden. Weitere Details finden Sie in der Linkerdokumentation.

Es wird empfohlen, dass alle Bilder über gültige Prüfsummen verfügen. Es liegt in der Verantwortung des Aufrufers, die neu berechnete Prüfsumme in das zugeordnete Image zu setzen und das Image auf dem Datenträger der Datei zu aktualisieren.

Das Übergeben eines Filename- Parameters, der nicht auf ein gültiges ausführbares Bild verweist, führt zu unvorhersehbaren Ergebnissen. Jeder Benutzer dieser Funktion wird ermutigt, sicherzustellen, dass ein gültiges ausführbares Bild übergeben wird.

Alle ImageHlp-Funktionen, z. B. diese, sind single threaded. Daher führen Aufrufe von mehr als einem Thread zu dieser Funktion wahrscheinlich zu unerwartetem Verhalten oder Speicherbeschädigung. Um dies zu vermeiden, müssen Sie alle gleichzeitigen Aufrufe von mehr als einem Thread mit dieser Funktion synchronisieren.

Hinweis Die Unicode-Implementierung dieser Funktion ruft die ASCII-Implementierung auf und infolgedessen kann die Funktion fehlschlagen, wenn die Codepage die Zeichen im Pfad nicht unterstützt. Wenn Sie beispielsweise einen nicht englischen Unicode-Dateipfad übergeben und die Standardcodepage Englisch ist, werden die nicht erkannten nicht englischen breiten Zeichen in "??" konvertiert. und die Datei kann nicht geöffnet werden (die Funktion gibt CHECKSUM_OPEN_FAILURE zurück).
 

Anmerkung

Der imagehlp.h-Header definiert MapFileAndCheckSum als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- imagehlp.h
Library Imagehlp.lib
DLL- Imagehlp.dll

Siehe auch

CheckSumMappedFile-

ImageHlp-Funktionen