Função FunctionTailcall3WithInfo
Notifica o gerador de perfis de que a função atualmente em execução está prestes a efetuar uma chamada de cauda para outra função e fornece uma alça que pode ser transmitida para o método ICorProfilerInfo3::GetFunctionTailcall3Info para obter a moldura da pilha.
Sintaxe
void __stdcall FunctionTailcall3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Parâmetros
functionIDOrClientID
[in] O identificador da função atualmente em execução que está prestes a fazer uma chamada de cauda.
eltInfo
[in] Uma alça opaca que representa informações sobre uma determinada moldura de pilha. Esta alça só é válida durante a chamada de retorno para a qual é transmitida.
Observações
O FunctionTailcall3WithInfo
método de chamada de retorno notifica o gerador de perfis como as funções são chamadas e permite que o gerador de perfis utilize o método ICorProfilerInfo3::GetFunctionTailcall3Info para inspecionar a moldura da pilha. Para aceder às informações da moldura da pilha, o COR_PRF_ENABLE_FRAME_INFO
sinalizador tem de ser definido. O gerador de perfis pode utilizar o método ICorProfilerInfo::SetEventMask para definir os sinalizadores de eventos e, em seguida, utilizar o método ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo para registar a implementação desta função.
A FunctionTailcall3WithInfo
função é uma chamada de retorno; tem de implementá-la. A implementação tem de utilizar o __declspec(naked)
atributo de classe de armazenamento.
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 FunctionTailcall3WithInfo
não deve bloquear, uma vez que 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é FunctionTailcall3WithInfo
ser devolvido.
Além disso, a função FunctionTailcall3WithInfo não pode chamar o código gerido ou causar uma alocação de memória gerida de qualquer forma.
Requisitos
Plataformas: Veja Requisitos de Sistema.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
.NET Framework Versões: Disponível desde 2.0