Freigeben über


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.

Wert Bedeutung
BindOutOfMemory
0
Nicht genügend Arbeitsspeicher. Der Parameterwert ist die Anzahl der Bytes beim Zuordnungsversuch.
BindRvaToVaFailed
1
Die relative virtuelle Adresse ist für das Image ungültig. Der Parameterwert wird nicht verwendet.
BindNoRoomInImage
2
Kein Platz im Bild für eine neue Formatimporttabelle. Der Parameterwert wird nicht verwendet.
BindImportModuleFailed
3
Fehler beim Modulimport. Der Parameterwert wird nicht verwendet.
BindImportProcedureFailed
4
Fehler beim Prozedurimport. Der Parameterwert ist der Name der Funktion.
BindImportModule
5
Der Modulimport wird gestartet. Der Parameterwert wird nicht verwendet.
BindImportProcedure
6
Der Prozedurimport wird gestartet. Der Parameterwert ist der Name der Funktion.
BindForwarder
7
Der Parameterwert ist der Name der weitergeleiteten Funktion.
BindForwarderNOT
8
Der Parameterwert ist der Name der Funktion, die nicht weitergeleitet wird.
BindImageModified
9
Bild geändert. Der Parameterwert wird nicht verwendet.
BindExpandFileHeaders
10
Dateiheader erweitert. Der Parameterwert ist die Anzahl der Bytes.
BindImageComplete
11
Die Bindung ist abgeschlossen. Weitere Informationen zum Parameterwert finden Sie im abschnitt Hinweise.
BindMismatchedSymbols
12
Die Prüfsumme stimmte nicht überein. Der Parameterwert ist der Name der Symboldatei.
BindSymbolsNotUpdated
13
Die Symboldatei wurde nicht aktualisiert. Der Parameterwert ist der Name der nicht aktualisierten Symboldatei.

[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

Weitere Informationen

BindImageEx

ImageHlp-Funktionen