PSYMBOL_FUNCENTRY_CALLBACK コールバック関数 (dbghelp.h)
SymRegisterFunctionEntryCallback64 関数で使用されるアプリケーション定義のコールバック関数。 スタック ウォーキング プロシージャによって呼び出されます。
PSYMBOL_FUNCENTRY_CALLBACK64型は、このコールバック関数へのポインターを定義します。 SymRegisterFunctionEntryCallbackProc64 は、アプリケーション定義関数名のプレースホルダーです。
構文
PSYMBOL_FUNCENTRY_CALLBACK PsymbolFuncentryCallback;
PVOID PsymbolFuncentryCallback(
[in] HANDLE hProcess,
[in] DWORD AddrBase,
[in, optional] PVOID UserContext
)
{...}
パラメーター
[in] hProcess
最初に StackWalk64 関数に渡されたプロセスへのハンドル。
[in] AddrBase
コールバック関数が関数テーブル エントリを返す命令のアドレス。
[in, optional] UserContext
SymRegisterFunctionEntryCallback64 または NULL で指定されたユーザー定義値。 通常、このパラメーターは、コールバック関数がコンテキストを確立できるようにするデータ構造へのポインターを渡すためにアプリケーションによって使用されます。
戻り値
使用可能な関数テーブル エントリがない場合は、 値 NULL を 返します。
成功した場合は、 IMAGE_RUNTIME_FUNCTION_ENTRY 構造体へのポインターを返します。 この関数の定義については、ヘッダー ファイル WinNT.h を参照してください。
注釈
構造体は、デバッグ中のプロセスに存在する形式で返される必要があります。 一部のメンバーは、プロセス アドレス空間内の他の場所へのポインターである場合があります。 ReadProcessMemoryProc64 コールバック関数を呼び出して、これらの場所の情報を取得できます。
呼び出し元のアプリケーションは、 StackWalk64 関数の呼び出しの結果として、登録済みのコールバック関数を介して呼び出されます。 呼び出し元のアプリケーションは、これが引き起こす可能性のある副作用に備える必要があります。 アプリケーションに複数のスレッドで使用されているコールバック関数が 1 つだけある場合は、コールバック関数のコンテキストで一部の種類のデータ アクセスを同期する必要がある場合があります。
この関数は、 FunctionTableAccessProc64 コールバック関数に似ています。 違いは、 FunctionTableAccessProc64 は IMAGE_FUNCTION_ENTRY 構造体を返し、この関数は IMAGE_RUNTIME_FUNCTION_ENTRY 構造体を返します。
このコールバック関数は、 PSYMBOL_FUNCENTRY_CALLBACK コールバック関数よりも優先されます。 PSYMBOL_FUNCENTRY_CALLBACK は、Dbghelp.h で次のように定義されます。
#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
#endif
typedef
PVOID
(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(
__in HANDLE hProcess,
__in DWORD AddrBase,
__in_opt PVOID UserContext
);
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | dbghelp.h |
再頒布可能パッケージ | DbgHelp.dll 5.1 以降 |