PIMAGEHLP_STATUS_ROUTINEコールバック関数 (imagehlp.h)

BindImageEx 関数で使用されるアプリケーション定義のコールバック関数。 状態ルーチンは、イメージ バインドの処理中に呼び出されます。

PIMAGEHLP_STATUS_ROUTINE型は、このコールバック関数へのポインターを定義します。 StatusRoutine は、アプリケーション定義関数名のプレースホルダーです。

構文

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
)
{...}

パラメーター

[in] Reason

バインド操作の現在の状態。 このパラメーターには、次の値のいずれかを指定できます。

意味
BindOutOfMemory
0
メモリが不足しています。 Parameter 値は、割り当て試行のバイト数です。
BindRvaToVaFailed
1
イメージの相対仮想アドレスが無効です。 Parameter 値は使用されません。
BindNoRoomInImage
2
新しい形式のインポート テーブル用のスペースがイメージにありません。 Parameter 値は使用されません。
BindImportModuleFailed
3
モジュールのインポートに失敗しました。 Parameter 値は使用されません。
BindImportProcedureFailed
4
プロシージャのインポートに失敗しました。 Parameter 値は関数の名前です。
BindImportModule
5
モジュールのインポートが開始されています。 Parameter 値は使用されません。
BindImportProcedure
6
プロシージャのインポートが開始されています。 Parameter 値は関数の名前です。
BindForwarder
7
Parameter 値は、転送される関数の名前です。
BindForwarderNOT
8
Parameter 値は、転送されない関数の名前です。
BindImageModified
9
イメージが変更されました。 Parameter 値は使用されません。
BindExpandFileHeaders
10
ファイル ヘッダーが展開されました。 Parameter 値はバイト数です
BindImageComplete
11
バインドが完了しました。 パラメーター値の詳細については、次の「解説」セクションを参照してください。
BindMismatchedSymbols
12
チェックサムが一致しませんでした。 Parameter 値はシンボル ファイルの名前です。
BindSymbolsNotUpdated
13
シンボル ファイルが更新されませんでした。 Parameter 値は、更新されていないシンボル ファイルの名前です。

[in] ImageName

バインドするファイルの名前。 この値には、ファイル名、部分パス、または完全パスを指定できます。

[in] DllName

DLL の名前。

[in] Va

計算された仮想アドレス。

[in] Parameter

追加の状態情報。 この値は 、Reason パラメーターの値によって異なります。 詳細については、次の「解説」セクションのコード フラグメントを参照してください。

戻り値

関数が成功した場合、戻り値は TRUE になります

関数が失敗した場合、戻り値は FALSE になります。 拡張エラー情報を取得するには、 GetLastError を呼び出します。

注釈

ImageHlp 関数 (この関数など) はすべてシングル スレッドです。 そのため、複数のスレッドからこの関数を呼び出すと、予期しない動作やメモリ破損が発生する可能性があります。 これを回避するには、複数のスレッドからのすべての同時呼び出しをこの関数に同期する必要があります。

次のコード フラグメントでは、状態が BindImageComplete の場合に Va 値を使用する方法について説明します。

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;

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー imagehlp.h

こちらもご覧ください

BindImageEx

ImageHlp 関数