Função FunctionTailcall2
Notifica o criador de perfil que a função atualmente em execução está prestes a executar uma telefonar de cauda para outra função e fornece informações sobre o registro de ativação.
void FunctionTailcall2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func
);
Parâmetros
funcId
[in] O identificador da função atualmente em execução que é Sobre para tornar uma cauda de telefonar.clientData
[in] O identificador de função remapeados, o criador de perfil especificado anteriormente por meio de FunctionIDMapper, da função atualmente em execução que está prestes a fazer uma cauda de telefonar.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.
Comentários
A função de destino da telefonar de Laço usará o registro de ativação corrente e retornará diretamente para o chamador da função feita na cauda de telefonar. Isso significa que um FunctionLeave2 retorno de telefonar não poderá ser emitido para uma função que é o destino de uma telefonar tail.
O valor de func o parâmetro inválido após o FunctionTailcall2 função retorna porque o valor pode ser alterado ou ser destruído.
The FunctionTailcall2 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 FunctionTailcall2 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é FunctionTailcall2 Retorna.
Além disso, a FunctionTailcall2 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