PIMAGEHLP_STATUS_ROUTINE fonction de rappel (imagehlp.h)
Fonction de rappel définie par l’application utilisée avec la fonction BindImageEx . La routine status est appelée pendant le processus de liaison d’image.
Le type PIMAGEHLP_STATUS_ROUTINE définit un pointeur vers cette fonction de rappel. StatusRoutine est un espace réservé pour le nom de fonction défini par l’application.
Syntaxe
PIMAGEHLP_STATUS_ROUTINE PimagehlpStatusRoutine;
BOOL PimagehlpStatusRoutine(
[in] IMAGEHLP_STATUS_REASON Reason,
[in] PCSTR ImageName,
[in] PCSTR DllName,
[in] ULONG_PTR Va,
[in] ULONG_PTR Parameter
)
{...}
Paramètres
[in] Reason
Status actuelle de l’opération de liaison. Ce paramètre peut prendre les valeurs suivantes.
[in] ImageName
Nom du fichier à lier. Cette valeur peut être un nom de fichier, un chemin d’accès partiel ou un chemin d’accès complet.
[in] DllName
Nom de la DLL.
[in] Va
Adresse virtuelle calculée.
[in] Parameter
Toutes les informations status supplémentaires. Cette valeur dépend de la valeur du paramètre Reason . Pour plus d’informations, consultez le fragment de code dans la section Remarques suivante.
Valeur retournée
Si la fonction réussit, la valeur de retour est TRUE.
Si la fonction échoue, la valeur de retour est FALSE. Pour récupérer des informations d’erreur étendues, appelez GetLastError.
Remarques
Toutes les fonctions ImageHlp, telles que celle-ci, sont à thread unique. Par conséquent, les appels de plusieurs threads à cette fonction entraîneront probablement un comportement inattendu ou une altération de la mémoire. Pour éviter cela, vous devez synchroniser tous les appels simultanés de plusieurs threads vers cette fonction.
Le fragment de code suivant décrit comment utiliser la valeur Va lorsque le status est BindImageComplete.
case BindImageComplete:
if (fVerbose) {
fprintf(stderr, "BIND: Details of binding %s\n", ImageName );
NewImports = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)Va;
NewImport = NewImports;
while (NewImport->OffsetModuleName) {
fprintf( stderr, " Import from %s [%x]",
(LPSTR)NewImports + NewImport->OffsetModuleName,
NewImport->TimeDateStamp
);
if (NewImport->NumberOfModuleForwarderRefs != 0) {
fprintf( stderr, " with %u forwarders", NewImport->
NumberOfModuleForwarderRefs );
}
fprintf( stderr, "\n" );
NewForwarder = (PIMAGE_BOUND_FORWARDER_REF)(NewImport+1);
for (i=0; i<NewImport->NumberOfModuleForwarderRefs; i++)
{
fprintf( stderr, " Forward to %s [%x]\n",
(LPSTR)NewImports + NewForwarder->OffsetModuleName,
NewForwarder->TimeDateStamp);
NewForwarder += 1;
}
NewImport = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)NewForwarder;
}
}
break;
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | imagehlp.h |