Win32 API 日本語リファレンス
ホーム › System.Diagnostics.Debug › PSYMBOL_REGISTERED_CALLBACK

PSYMBOL_REGISTERED_CALLBACK

コールバック

シグネチャ

BOOL PSYMBOL_REGISTERED_CALLBACK(
    HANDLE hProcess,
    DWORD ActionCode,
    void* CallbackData,
    void* UserContext
);

パラメーター

フィールド型説明
hProcessHANDLESymInitialize 関数に最初に渡されたプロセスのハンドルです。
ActionCodeDWORD

コールバックコードです。このパラメーターには、次のいずれかの値を指定できます。

値 意味
CBA_DEBUG_INFO
0x10000000
詳細情報を表示します。

CallbackData パラメーターは、文字列へのポインターです。

CBA_DEFERRED_SYMBOL_LOAD_CANCEL
0x00000007
遅延シンボル読み込みが開始されました。シンボルの読み込みを取り消すには、TRUE を返します。

CallbackData パラメーターは、 IMAGEHLP_DEFERRED_SYMBOL_LOAD64 構造体へのポインターです。

CBA_DEFERRED_SYMBOL_LOAD_COMPLETE
0x00000002
遅延シンボル読み込みが完了しました。

CallbackData パラメーターは、 IMAGEHLP_DEFERRED_SYMBOL_LOAD64 構造体へのポインターです。

CBA_DEFERRED_SYMBOL_LOAD_FAILURE
0x00000003
遅延シンボル読み込みが失敗しました。

CallbackData パラメーターは、 IMAGEHLP_DEFERRED_SYMBOL_LOAD64 構造体へのポインターです。コールバック関数がこの構造体の FileName メンバーを設定した場合、シンボルハンドラーはシンボルの読み込みを再試行します。

CBA_DEFERRED_SYMBOL_LOAD_PARTIAL
0x00000020
遅延シンボル読み込みが部分的に完了しました。シンボルローダーは、イメージファイルからも指定されたモジュールからもイメージヘッダーを読み取れません。

CallbackData パラメーターは、 IMAGEHLP_DEFERRED_SYMBOL_LOAD64 構造体へのポインターです。コールバック関数がこの構造体の FileName メンバーを設定した場合、シンボルハンドラーはシンボルの読み込みを再試行します。

DbgHelp 5.1: この値はサポートされていません。

CBA_DEFERRED_SYMBOL_LOAD_START
0x00000001
遅延シンボル読み込みが開始されました。

CallbackData パラメーターは、 IMAGEHLP_DEFERRED_SYMBOL_LOAD64 構造体へのポインターです。

CBA_DUPLICATE_SYMBOL
0x00000005
重複するシンボルが見つかりました。この理由は、COFF 形式または CodeView 形式の場合にのみ使用されます。

CallbackData パラメーターは、 IMAGEHLP_DUPLICATE_SYMBOL64 構造体へのポインターです。どのシンボルを使用するかを指定するには、この構造体の SelectedSymbol メンバーを設定します。

CBA_EVENT
0x00000010
詳細情報を表示します。このイベントを処理しない場合、その情報は CBA_DEBUG_INFO イベントとして再度送られます。

CallbackData パラメーターは、 IMAGEHLP_CBA_EVENT 構造体へのポインターです。

CBA_READ_MEMORY
0x00000006
読み込まれたイメージが読み取られました。

CallbackData パラメーターは、 IMAGEHLP_CBA_READ_MEMORY 構造体へのポインターです。コールバック関数は、bytes メンバーで指定されたバイト数を buf メンバーで指定されたバッファーに読み取り、それに応じて bytesread メンバーを更新する必要があります。

CBA_SET_OPTIONS
0x00000008
シンボルオプションが更新されました。現在のオプションを取得するには、 SymGetOptions 関数を呼び出します。

CallbackData パラメーターは無視してください。

CBA_SRCSRV_EVENT
0x40000000
ソースサーバーの詳細情報を表示します。このイベントを処理しない場合、その情報は CBA_DEBUG_INFO イベントとして再度送られます。

CallbackData パラメーターは、 IMAGEHLP_CBA_EVENT 構造体へのポインターです。

DbgHelp 6.6 以前: この値はサポートされていません。

CBA_SRCSRV_INFO
0x20000000
ソースサーバーの詳細情報を表示します。

CallbackData パラメーターは、文字列へのポインターです。

DbgHelp 6.6 以前: この値はサポートされていません。

CBA_SYMBOLS_UNLOADED
0x00000004
シンボルがアンロードされました。

CallbackData パラメーターは無視してください。

CallbackDatavoid*

操作用のデータです。このデータの形式は、ActionCode パラメーターの値によって異なります。

コールバック関数が SymRegisterCallbackW64 で登録された場合、データは Unicode の文字列またはデータ構造体になります。それ以外の場合、データは ANSI 形式になります。

UserContextvoid*SymRegisterCallback64 で指定されたユーザー定義の値、または NULL です。通常、このパラメーターは、コールバック関数が何らかのコンテキストを確立できるようにするために、アプリケーションがデータ構造体へのポインターを渡す目的で使用します。

公式ドキュメント

SymRegisterCallback64 関数とともに使用される、アプリケーション定義のコールバック関数です。シンボルハンドラーによって呼び出されます。

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

戻り値

コードの処理に成功したことを示すには、TRUE を返します。

コードの処理に失敗したことを示すには、FALSE を返します。特定のコードを処理しない場合も、FALSE を返してください。(この場合に TRUE を返すと、意図しない結果を招くおそれがあります。)

解説(Remarks)

呼び出し元のアプリケーションは、シンボルハンドラー関数のいずれかを別途呼び出した結果として、登録されたコールバック関数を通じて呼び出されます。呼び出し元のアプリケーションは、これによって生じ得る副作用に備えておく必要があります。アプリケーションが 1 つのコールバック関数を複数のスレッドで使用している場合は、コールバック関数のコンテキスト内で一部の種類のデータアクセスを同期する必要が生じることがあります。

このコールバック関数は、PSYMBOL_REGISTERED_CALLBACK コールバック関数に代わるものです。PSYMBOL_REGISTERED_CALLBACK は、Dbghelp.h で次のように定義されています。

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
#else
typedef BOOL
(CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
    __in HANDLE hProcess,
    __in ULONG ActionCode,
    __in_opt PVOID CallbackData,
    __in_opt PVOID UserContext
    );
#endif

より詳細な例については、通知の受け取りを参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)