Função FunctionEnter2
Notifica o criador de perfil que o controle está sendo passado para uma função e fornece informações sobre o registro de ativação e argumentos de função.
void FunctionEnter2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_INFO *argumentInfo
);
Parâmetros
funcId
[in] O identificador da função à qual o controle é passado.clientData
[in] O identificador de função remapeados, o criador de perfil especificado anteriormente via o FunctionIDMapper função.func
[in] A COR_PRF_FRAME_INFO valor que aponta para informações sobre o registro de ativação.O criador de perfil deve tratar isso sistema autônomo um identificador opaco, que pode ser passado de volta para o mecanismo de execução no ICorProfilerInfo2::GetFunctionInfo2 método.
argumentInfo
[in] Um ponteiro para um COR_PRF_FUNCTION_ARGUMENT_INFO estrutura que especifica os locais na memória de argumentos da função.Para acessar informações de argumento, a COR_PRF_ENABLE_FUNCTION_ARGS sinalizar deve ser definido. O criador de perfil pode usar o ICorProfilerInfo::SetEventMask método para conjunto os sinalizadores de evento.
Comentários
Os valores do func e argumentInfo parâmetros inválido são válido após a FunctionEnter2 função retorna porque os valores podem ser alterados ou ser destruídos.
The FunctionEnter2 função é um retorno de chamada; você precisa implementá-lo. A implementação deve utilizar o __declspec(naked) atributo de classe de armazenamento.
O mecanismo de execução não salva os registros antes de chamar essa função.
Na entrada, você deve salvar todos os registradores usar, inclusive aqueles em unidade de ponto flutuante (FPU).
Ao sair, você deve restauração a pilha por exibir Desativar todos os parâmetros que foram enviados pelo seu chamador.
A implementação de FunctionEnter2 não deve bloquear porque ele atrasará lixo coleção. A implementação não deve tentar um lixo coleção porque a pilha pode não ser um lixo coleção-estado amigável. Se um lixo coleção é tentada, o tempo de execução será bloqueado até FunctionEnter2 Retorna.
Além disso, a FunctionEnter2 função não deve chamar código gerenciado ou em qualquer forma de causa uma alocação de memória gerenciada.
Requisitos
Plataformas: See Requisitos de sistema do .NET framework.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
Consulte também
Referência
Método ICorProfilerInfo2::SetEnterLeaveFunctionHooks2