Função FunctionTailcall3WithInfo
Notifica o criador de perfil de que a função em execução está prestes a executar uma chamada final para outra função e fornece um identificador que pode ser passado para o método ICorProfilerInfo3::GetFunctionTailcall3Info para recuperar o registro de ativação.
Sintaxe
void __stdcall FunctionTailcall3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Parâmetros
functionIDOrClientID
[in] O identificador da função em execução que está prestes a fazer uma chamada tail.
eltInfo
Um identificador opaco que representa informações sobre um dado registro de ativação. Esse identificador é válido somente durante o retorno de chamada para o qual é transmitido.
Comentários
O método de retorno de chamada FunctionTailcall3WithInfo
notifica o criador de perfil como as funções são chamadas e permite que o criador de perfil use o método ICorProfilerInfo3::GetFunctionTailcall3Info para inspecionar o registro de ativação. Para acessar as informações do registro de ativação, deve ser definido o sinalizador COR_PRF_ENABLE_FRAME_INFO
. O criador de perfil pode usar o método ICorProfilerInfo::SetEventMask para definir os sinalizadores de evento e, em seguida, usar o método ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo para registrar a implementação dessa função.
A função FunctionTailcall3WithInfo
é um retorno de chamada e você deve implementá-la. A implementação precisa usar o atributo __declspec(naked)
da classe de armazenamento.
O mecanismo de execução não salva nenhum registro antes de chamar essa função.
Na entrada, você precisa salvar todos os registros usados, incluindo aqueles na FPU (unidade de ponto flutuante).
Na saída, você deve restaurar a pilha removendo todos os parâmetros que foram enviados por push pelo chamador.
A implementação de FunctionTailcall3WithInfo
não deve ser bloqueada porque atrasará a coleta de lixo. A implementação não deve tentar fazer uma coleta de lixo porque a pilha pode não estar em um estado adequado para isso. Se houver uma tentativa de coleta de lixo, o runtime será bloqueado até retornar FunctionTailcall3WithInfo
.
Além disso, a função FunctionTailcall3WithInfo não deve chamar o código gerenciado ou causar uma alocação de memória gerenciada de forma alguma.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
Versões do .NET Framework: disponíveis desde 2.0