Partilhar via


Função FunctionTailcall

Notifica o gerador de perfis de que a função atualmente em execução está prestes a executar uma chamada de cauda para outra função.

Nota

A FunctionTailcall função foi preterida no .NET Framework versão 2.0. Continuará a funcionar, mas implicará uma penalização de desempenho. Em alternativa, utilize a função FunctionTailcall2 .

Sintaxe

void __stdcall FunctionTailcall (  
    [in] FunctionID funcID  
);  

Parâmetros

funcID [in] O identificador da função atualmente em execução que está prestes a fazer uma chamada de cauda.

Observações

A função de destino da chamada de cauda utilizará a moldura de pilha atual e regressará diretamente ao chamador da função que efetuou a chamada de cauda. Isto significa que não será emitida uma chamada de retorno FunctionLeave para uma função que seja o destino de uma chamada de cauda.

A FunctionTailcall função é uma chamada de retorno; tem de implementá-la. A implementação tem de utilizar o __declspecatributo da classe de armazenamento (naked).

O motor de execução não guarda quaisquer registos antes de chamar esta função.

  • À entrada, tem de guardar todos os registos que utiliza, incluindo os da unidade de vírgula flutuante (FPU).

  • Ao sair, tem de restaurar a pilha ao retirar todos os parâmetros que foram emitidos pelo autor da chamada.

A implementação de FunctionTailcall não deve bloquear porque atrasará a libertação da memória. A implementação não deve tentar uma libertação da memória porque a pilha pode não estar num estado amigável de libertação da memória. Se for tentada uma libertação da memória, o runtime bloqueará até FunctionTailcall ser devolvido.

Além disso, a FunctionTailcall função não pode chamar para código gerido ou, de qualquer forma, causar uma alocação de memória gerida.

Requisitos

Plataformas: Veja Requisitos de Sistema.

Cabeçalho: CorProf.idl

Biblioteca: CorGuids.lib

.NET Framework Versões: 1.1, 1.0

Ver também