функция обратного вызова EXT_ANALYSIS_PLUGIN (extsfns.h)
При написании расширения анализа необходимо реализовать EXT_ANALYSIS_PLUGIN экспортировано как (_EFN_Analyze). При выполнении команды !analyze отладчик вызывает _EFN_Analyze на каждом этапе, чтобы вы могли участвовать в анализе.
Требуется соглашение о вызовах WINAPI (__stdcall). Никакие исключения (noexcept) не должны покидать функцию.
Синтаксис
EXT_ANALYSIS_PLUGIN ExtAnalysisPlugin;
HRESULT ExtAnalysisPlugin(
[in] PDEBUG_CLIENT4 Client,
[in] FA_EXTENSION_PLUGIN_PHASE CallPhase,
[in] PDEBUG_FAILURE_ANALYSIS2 pAnalysis
)
{...}
Параметры
[in] Client
Указатель на интерфейс IDebugClient4 . Используйте этот интерфейс для доступа к отладчику. Используйте QueryInterface для доступа к другим интерфейсам отладчика, таким как устаревшие интерфейсы (IDebug*
), узел отладки (IDebugHost*
), модель данных (IDataModel*
) и т. д.
[in] CallPhase
Значение в перечислении FA_EXTENSION_PLUGIN_PHASE , указывающее, какой этап анализа выполняется в данный момент. Этапы анализа включают инициализацию, анализ стека, предварительное сегментирование и пост-сегментирование.
[in] pAnalysis
Указатель на интерфейс IDebugFailureAnalysis2 . Используйте этот интерфейс для получения и задания свойств анализа. Используйте QueryInterface для доступа к другим интерфейсам !analyze.
Возвращаемое значение
S_OK — внесено изменение.
S_FALSE — изменения не были внесены.
E_* — произошла ошибка. !analyze сообщит об ошибке через ключ/значение, используя строку Plugin.Exception."Phase"."DLL"
ключа и строку значения HRESULT в формате "0x%08x".
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | extsfns.h |
См. также раздел
Написание расширения пользовательского отладчика анализа
Написание подключаемого модуля расширения анализа для расширения !analyze