Condividi tramite


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.

Osservazioni

La funzione MapFileAndCheckSum calcola un nuovo checksum per il file e la 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 genererà risultati imprevedibili. Qualsiasi utente di questa funzione è incoraggiato a assicurarsi che venga passata un'immagine eseguibile valida.

Tutte le funzioni ImageHlp, ad esempio questa, sono a thread singolo. Pertanto, le chiamate da più thread a questa funzione genereranno probabilmente 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 in inglese e la tabella codici predefinita è inglese, i caratteri 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 non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
piattaforma di destinazione Finestre
intestazione imagehlp.h
libreria Imagehlp.lib
dll Imagehlp.dll

Vedere anche

CheckSumMappedFile

Funzioni ImageHlp