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


Функция StackSnapshotCallback

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

Синтаксис

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] Указатель на структуру Win32 CONTEXT , представляющую состояние ЦП для этого кадра.

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

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

Комментарии

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

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

Требования

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

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

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

платформа .NET Framework версии: доступно с версии 1.0.

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