Compartilhar via


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

Função FunctionEnter2

Função FunctionTailcall2

Método ICorProfilerInfo2::SetEnterLeaveFunctionHooks2

Outros recursos

Criação de perfil global estático funções