次の方法で共有


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 コールバック関数に似ています。 違いは、 FunctionTableAccessProc64IMAGE_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 以降

こちらもご覧ください

DbgHelp 関数

SymRegisterFunctionEntryCallback64