PIMAGEHLP_STATUS_ROUTINE Rückruffunktion (imagehlp.h)
Eine anwendungsdefinierte Rückruffunktion, die mit der BindImageEx-Funktion verwendet wird. Die status Routine wird während des Prozesses der Bildbindung aufgerufen.
Der PIMAGEHLP_STATUS_ROUTINE-Typ definiert einen Zeiger auf diese Rückruffunktion. StatusRoutine ist ein Platzhalter für den anwendungsdefinierte Funktionsnamen.
Syntax
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
)
{...}
Parameter
[in] Reason
Der aktuelle status des Bindungsvorgangs. Dieser Parameter kann einen der folgenden Werte annehmen.
[in] ImageName
Der Name der datei, die gebunden werden soll. Dieser Wert kann ein Dateiname, ein partieller Pfad oder ein vollständiger Pfad sein.
[in] DllName
Der Name der DLL.
[in] Va
Die berechnete virtuelle Adresse.
[in] Parameter
Alle zusätzlichen status Informationen. Dieser Wert hängt vom Wert des Reason-Parameters ab. Weitere Informationen finden Sie im Codefragment im abschnitt Hinweise.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE.
Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen abzurufen.
Hinweise
Alle ImageHlp-Funktionen, z. B. diese, sind single threaded. Daher führen an diese Funktion gerichtete Aufrufe mehrerer Threads wahrscheinlich zu unerwartetem Verhalten oder einer Beschädigung des Speichers. Um dies zu vermeiden, müssen Sie alle an diese Funktion gerichteten gleichzeitigen Aufrufe mehrerer Threads synchronisieren.
Das folgende Codefragment beschreibt die Verwendung des Va-Werts, wenn der status BindImageComplete ist.
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;
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | imagehlp.h |