функция обратного вызова 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 или более поздней версии |