ホーム › System.Diagnostics.Debug › PIMAGEHLP_STATUS_ROUTINE
PIMAGEHLP_STATUS_ROUTINE
コールバックシグネチャ
BOOL PIMAGEHLP_STATUS_ROUTINE(
IMAGEHLP_STATUS_REASON Reason,
LPSTR ImageName,
LPSTR DllName,
UINT_PTR Va,
UINT_PTR Parameter
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| Reason | IMAGEHLP_STATUS_REASON | バインド操作の現在の状態です。このパラメーターには、次のいずれかの値を指定できます。 |
| ImageName | LPSTR | バインド対象のファイルの名前です。この値には、ファイル名、部分的なパス、またはフルパスを指定できます。 |
| DllName | LPSTR | DLL の名前です。 |
| Va | UINT_PTR | 計算された仮想アドレスです。 |
| Parameter | UINT_PTR | 追加の状態情報です。この値は Reason パラメーターの値によって異なります。詳細については、次の「解説」セクションにあるコード断片を参照してください。 |
公式ドキュメント
アプリケーション定義のコールバック関数であり、 BindImageEx 関数と共に使用されます。このステータスルーチンは、イメージのバインド処理の途中で呼び出されます。
PIMAGEHLP_STATUS_ROUTINE 型は、このコールバック関数へのポインターを定義します。 StatusRoutine は、アプリケーション定義の関数名のプレースホルダーです。
戻り値
関数が成功した場合、戻り値は TRUE です。
関数が失敗した場合、戻り値は FALSE です。拡張エラー情報を取得するには、 GetLastError を呼び出します。
解説(Remarks)
この関数を含むすべての 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;
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)