Função FunctionLeave2
Notifica o criador de perfil que uma função está prestes a retornar para o chamador e fornece informações sobre o pilha quadro e a função valor retornado.
void FunctionLeave2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_RANGE *retvalRange
);
Parâmetros
funcId
[in] O identificador da função está retornando.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.
retvalRange
[in] Um ponteiro para um COR_PRF_FUNCTION_ARGUMENT_RANGE estrutura que especifica o local de memória do valor retornado da função.Para acessar informações de valor retornado, o COR_PRF_ENABLE_FUNCTION_RETVAL sinalizar deve ser conjunto. O criador de perfil pode usar o ICorProfilerInfo::SetEventMask método para conjunto os sinalizadores de evento.
Comentários
Os valores do func e retvalRange parâmetros inválido são válido após a FunctionLeave2 função retorna porque os valores podem ser alterados ou ser destruídos.
The FunctionLeave2 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 FunctionLeave2 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é FunctionLeave2 Retorna.
Além disso, a FunctionLeave2 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