IDiaAddressMap::set_imageHeaders
Définit les en-têtes d’image pour activer la traduction d’adresses virtuelles relatives.
Syntaxe
HRESULT set_imageHeaders (
DWORD cbData,
BYTE data[],
BOOL originalHeaders
);
Paramètres
cbData
[in] Nombre d’octets de données d’en-tête. Doit être n*sizeof(IMAGE_SECTION_HEADER)
où n
correspond au nombre d’en-têtes de section dans l’exécutable.
data[]
[in] Tableau de structures IMAGE_SECTION_HEADER
à utiliser comme en-têtes d’image.
originalHeaders
[in] Défini sur la valeur FALSE
si les en-têtes d’image proviennent de la nouvelle image, et défini sur TRUE
si elles reflètent l’image d’origine avant une mise à niveau. En règle générale, cette valeur est définie sur TRUE
uniquement en combinaison avec les appels à la méthode IDiaAddressMap::set_addressMap.
Valeur renvoyée
En cas de réussite, retourne S_OK
, sinon, retourne un code d'erreur.
Remarques
La structure IMAGE_SECTION_HEADER
est déclarée dans Winnt.h et représente le format d’en-tête de section image de l’exécutable.
Les calculs d’adresse virtuelle relative dépendent des valeurs IMAGE_SECTION_HEADER
. En règle générale, le DIA récupère ces données à partir du fichier de base de données du programme (.pdb). Si ces valeurs sont manquantes, le DIA ne peut pas calculer les adresses virtuelles relatives et la méthode IDiaAddressMap::get_relativeVirtualAddressEnabled retourne FALSE
. Le client doit ensuite appeler la méthode IDiaAddressMap::p ut_relativeVirtualAddressEnabled pour activer les calculs d’adresse virtuelle relative après avoir fourni les en-têtes d’image manquants de l’image elle-même.