Функция FunctionEnter3WithInfo
Уведомляет профилировщика о том, что элемент управления передается в функцию, и предоставляет дескриптор, который может быть передан методу ICorProfilerInfo3::GetFunctionEnter3Info для получения кадра стека и аргументов функции.
Синтаксис
void __stdcall FunctionEnter3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Параметры
functionIDOrClientID
[in] Идентификатор функции, в которую передается элемент управления.
eltInfo
[in] Непрозрачный дескриптор, представляющий сведения о заданном кадре стека. Этот дескриптор действителен только во время обратного вызова, которому он передается.
Комментарии
Метод обратного FunctionEnter3WithInfo
вызова уведомляет профилировщик при вызове функций и позволяет профилировщику использовать метод ICorProfilerInfo3::GetFunctionEnter3Info для проверки значений аргументов. Чтобы получить доступ к сведениям о аргументах COR_PRF_ENABLE_FUNCTION_ARGS
, необходимо установить флаг . Профилировщик может использовать метод ICorProfilerInfo::SetEventMask для задания флагов событий, а затем использовать метод ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo для регистрации реализации этой функции.
Функция FunctionEnter3WithInfo
является обратным вызовом; ее необходимо реализовать. Реализация должна использовать __declspec(naked)
атрибут класса хранения.
Подсистема выполнения не сохраняет регистры перед вызовом этой функции.
При записи необходимо сохранить все регистры, которые вы используете, включая регистры в единице С плавающей запятой (FPU).
При выходе необходимо восстановить стек, вырвав все параметры, которые были отправлены вызывающим элементом.
Реализация FunctionEnter3WithInfo
не должна блокироваться, так как это приведет к задержке сборки мусора. Реализация не должна пытаться выполнить сборку мусора, так как стек может не находиться в состоянии, удобном для сборки мусора. При попытке сборки мусора среда выполнения будет блокироваться до возврата FunctionEnter3WithInfo
.
Функция FunctionEnter3WithInfo
не должна вызывать управляемый код или каким-либо образом вызывать выделение управляемой памяти.
Требования
Платформы: см. раздел Требования к системе.
Заголовка: CorProf.idl
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с версии 2.0.