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
バインド操作の現在の状態。 このパラメーターには、次の値のいずれかを指定できます。
[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 |