Função FunctionTailcall
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.
Observação: |
---|
O FunctionTailcall função está obsoleto no .NET estrutura versão 2.0. Ele continuará a funcionar, mas serão em uma penalidade de desempenho. Use o FunctionTailcall2 funcionar em vez disso. |
void FunctionTailcall (
[in] FunctionID funcID
);
Parâmetros
- funcID
[in] O identificador da função atualmente em execução que é Sobre para tornar uma cauda de telefonar.
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 FunctionLeave retorno de telefonar não poderá ser emitido para uma função que é o destino de uma telefonar tail.
The FunctionTailcall 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 FunctionTailcall 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é FunctionTailcall Retorna.
Além disso, a FunctionTailcall 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
Versões do .NET estrutura: 1.1, 1.0
Consulte também
Referência
Método ICorProfilerInfo2::SetEnterLeaveFunctionHooks2