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


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