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


Функция StackSnapshotCallback

Предоставляет профилировщику сведения о каждом управляемом кадре и каждом запуске неуправляемых кадров в стеке при прохождении стека, который инициируется методом ICorProfilerInfo2::DoStackSnapshot.

HRESULT __stdcall StackSnapshotCallback (
    [in] FunctionID funcId,
    [in] UINT_PTR ip,
    [in] COR_PRF_FRAME_INFO frameInfo,
    [in] ULONG32 contextSize,
    [in] BYTE context[],
    [in] void *clientData
);

Параметры

  • funcId
    [in] Если это значение равно нулю, данный обратный вызов предназначен для выполнения неуправляемых кадров; в противном случае, оно является идентификатором управляемой функции и данный обратный вызов предназначен для управляемого кадра.

  • ip
    [in] Значение указателя инструкций машинного кода в кадре.

  • frameInfo
    [in] Структура COR_PRF_FRAME_INFO, ссылающаяся на сведения о кадре стека. Это значение допустимо использовать только во время обратного вызова.

  • contextSize
    [in] Размер структуры CONTEXT, на которую ссылается параметр context.

  • context
    [in] Указатель на структуру CONTEXT для Win32, которая представляет состояние ЦП для данного кадра.

    Параметр context допустим, только если в метод ICorProfilerInfo2::DoStackSnapshot был передан флаг COR_PRF_SNAPSHOT_CONTEXT.

  • clientData
    [in] Указатель на клиентские данные, которые были переданы непосредственно из метода ICorProfilerInfo2::DoStackSnapshot.

Заметки

Функция StackSnapshotCallback реализуется средством записи профилировщика. Сложность работы, выполняемой функцией StackSnapshotCallback, следует ограничить. Например, при использовании метода ICorProfilerInfo2::DoStackSnapshot в асинхронном режиме, целевой поток может находиться в состоянии блокировки. Если коду в функции StackSnapshotCallback требуются те же блокировки, можно гарантировать взаимоблокировку.

Метод ICorProfilerInfo2::DoStackSnapshot вызывает функцию StackSnapshotCallback по очереди для каждого управляемого кадра или один раз при запуске неуправляемых кадров. Если функция StackSnapshotCallback вызывается для запуска неуправляемых кадров, профилировщик может воспользоваться контекстом регистра (на который ссылается параметр context) для самостоятельного обхода неуправляемого стека. В этом случае структура CONTEXT для Win32 представляет состояние ЦП для самого последнего кадра, принудительно запущенного при выполнении кадров неуправляемого кода. Хотя структура CONTEXT для Win32 включает значения для всех регистров, использоваться будут значения регистра указателя стека, регистра указателя кадра, регистра указателя инструкции, постоянные (хранимые) регистры целых чисел.

Требования

Платформы: см. раздел Требования к системе для .NET Framework.

Заголовок: CorProf.idl

Библиотека: CorGuids.lib

Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0, 1.1, 1.0

См. также

Ссылки

Метод ICorProfilerInfo2::DoStackSnapshot

Другие ресурсы

Глобальные статические функции профилирования