Compartilhar via


Função FunctionEnter3WithInfo

Notifica o criador de perfil de que o controle está sendo passado para uma função e fornece um identificador que pode ser passado para o método ICorProfilerInfo3::GetFunctionEnter3Info para recuperar o registro de ativação e os argumentos de função.

Sintaxe

void __stdcall FunctionEnter3WithInfo(  
               [in] FunctionIDOrClientID functionIDOrClientID,  
               [in] COR_PRF_ELT_INFO eltInfo);  

Parâmetros

functionIDOrClientID [in] O identificador da função para a qual o controle é passado.

eltInfo [in] Um identificador opaco que representa informações sobre um dado registro de ativação. Esse identificador é válido somente durante o retorno de chamada para o qual é transmitido.

Comentários

O método de retorno de chamada FunctionEnter3WithInfo notifica o criador de perfil como as funções são chamadas e permite que ele use o método ICorProfilerInfo3::GetFunctionEnter3Info para inspecionar valores de argumento. Para acessar informações de argumento, o sinalizador COR_PRF_ENABLE_FUNCTION_ARGS precisa ser definido. O criador de perfil pode usar o método ICorProfilerInfo::SetEventMask para definir os sinalizadores de evento e, em seguida, usar o método ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo para registrar sua implementação dessa função.

A função FunctionEnter3WithInfo é um retorno de chamada e você deve implementá-la. A implementação precisa usar o atributo __declspec(naked) da classe de armazenamento.

O mecanismo de execução não salva nenhum registro antes de chamar essa função.

  • Na entrada, você precisa salvar todos os registros usados, incluindo aqueles na FPU (unidade de ponto flutuante).

  • Na saída, você deve restaurar a pilha removendo todos os parâmetros que foram enviados por push pelo chamador.

A implementação de FunctionEnter3WithInfo não deve ser bloqueada porque atrasará a coleta de lixo. A implementação não deve tentar fazer uma coleta de lixo porque a pilha pode não estar em um estado adequado para isso. Se houver uma tentativa de coleta de lixo, o runtime será bloqueado até que FunctionEnter3WithInfo retorne.

A função FunctionEnter3WithInfo não pode chamar o código gerenciado ou causar uma alocação de memória gerenciada de nenhuma maneira.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl

Biblioteca: CorGuids.lib

Versões do .NET Framework: disponíveis desde 2.0

Confira também