Funzione MapFileAndCheckSumA (imagehlp.h)

Calcola il checksum del file specificato.

Sintassi

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

Parametri

[in] Filename

Nome file del file per il quale deve essere calcolato il checksum.

[out] HeaderSum

Puntatore a una variabile che riceve il checksum originale dal file di immagine oppure zero se si verifica un errore.

[out] CheckSum

Puntatore a una variabile che riceve il checksum calcolato.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è CHECKSUM_SUCCESS (0).

Se la funzione ha esito negativo, il valore restituito è uno dei seguenti.

Codice/valore restituito Descrizione
CHECKSUM_MAP_FAILURE
2
Impossibile eseguire il mapping del file.
CHECKSUM_MAPVIEW_FAILURE
3
Impossibile eseguire il mapping di una visualizzazione del file.
CHECKSUM_OPEN_FAILURE
1
Impossibile aprire il file.
CHECKSUM_UNICODE_FAILURE
4
Impossibile convertire il nome del file in Unicode.

Commenti

La funzione MapFileAndCheckSum calcola un nuovo checksum per il file e lo restituisce nel parametro CheckSum . Questa funzione viene usata da qualsiasi applicazione che crea o modifica un'immagine eseguibile. I checksum sono necessari per i driver in modalità kernel e alcune DLL di sistema. Il linker calcola il checksum originale in fase di collegamento, se si usa l'opzione del linker appropriata. Per altri dettagli, vedere la documentazione del linker.

È consigliabile che tutte le immagini abbiano checksum validi. È responsabilità del chiamante inserire il checksum appena calcolato nell'immagine mappata e aggiornare l'immagine su disco del file.

Il passaggio di un parametro Filename che non punta a un'immagine eseguibile valida produrrà risultati imprevedibili. Qualsiasi utente di questa funzione è incoraggiato a verificare che venga passata un'immagine eseguibile valida.

Tutte le funzioni ImageHlp, ad esempio questa, sono a thread singolo. Di conseguenza, le chiamate da più thread a questa funzione genereranno un comportamento imprevisto o un danneggiamento della memoria. Per evitare questo problema, è necessario sincronizzare tutte le chiamate simultanee da più thread a questa funzione.

Nota L'implementazione Unicode di questa funzione chiama l'implementazione ASCII e, di conseguenza, la funzione può avere esito negativo se la tabella codici non supporta i caratteri nel percorso. Ad esempio, se si passa un percorso di file Unicode non inglese e la tabella codici predefinita è inglese, i caratteri wide non riconosciuti non in inglese vengono convertiti in "??" e il file non può essere aperto (la funzione restituisce CHECKSUM_OPEN_FAILURE).
 

Nota

L'intestazione imagehlp.h definisce MapFileAndCheckSum come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione imagehlp.h
Libreria Imagehlp.lib
DLL Imagehlp.dll

Vedi anche

CheckSumMappedFile

Funzioni ImageHlp