Поделиться через


функция обратного вызова 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 . Вызывающее приложение должно быть подготовлено к возможным побочным эффектам, которые это может вызвать. Если приложение имеет только одну функцию обратного вызова, используемую несколькими потоками, может потребоваться синхронизировать некоторые типы доступа к данным в контексте функции обратного вызова.

Эта функция аналогична функции обратного вызова 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
Header dbghelp.h
Распространяемые компоненты DbgHelp.dll 5.1 или более поздней версии

См. также раздел

Функции DbgHelp

SymRegisterFunctionEntryCallback64