PSYMBOL_REGISTERED_CALLBACK
コールバックシグネチャ
BOOL PSYMBOL_REGISTERED_CALLBACK(
HANDLE hProcess,
DWORD ActionCode,
void* CallbackData,
void* UserContext
);パラメーター
| フィールド | 型 | 説明 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hProcess | HANDLE | SymInitialize 関数に最初に渡されたプロセスのハンドルです。 | ||||||||||||||||||||||||||||
| ActionCode | DWORD | コールバックコードです。このパラメーターには、次のいずれかの値を指定できます。
| ||||||||||||||||||||||||||||
| CallbackData | void* | 操作用のデータです。このデータの形式は、ActionCode パラメーターの値によって異なります。 コールバック関数が SymRegisterCallbackW64 で登録された場合、データは Unicode の文字列またはデータ構造体になります。それ以外の場合、データは ANSI 形式になります。 | ||||||||||||||||||||||||||||
| UserContext | void* | 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 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)