Compartilhar via


Função de FunctionTailcall3WithInfo

Notifica o criador de perfil que a função atualmente em execução está prestes a realizar uma chamada de cauda para outra função e fornece um identificador que pode ser passado para o o método de ICorProfilerInfo3::GetFunctionTailcall3Info para recuperar o quadro de pilha.

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 um Laço de chamada.

  • eltInfo
    [in] Identificador opaco que representa informações sobre um quadro de pilha determinado. Esse identificador é válido apenas durante o retorno de chamada para o qual é passado.

Comentários

O FunctionTailcall3WithInfo o método de retorno de chamada notifica o profiler à medida que são chamadas de funções e permite que o profiler usar o o método de ICorProfilerInfo3::GetFunctionTailcall3Info para inspecionar o quadro de pilha. Para acessar as informações do quadro de pilha, o COR_PRF_ENABLE_FRAME_INFO sinalizador precisa ser definido. O profiler pode usar o o método de ICorProfilerInfo::SetEventMask para definir os sinalizadores de evento e, em seguida, use o ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo método para registrar a sua implementação desta função.

O FunctionTailcall3WithInfo função é um retorno de chamada; Você deve implementá-la. A implementação deve usar o __declspec(naked) atributo de classe de armazenamento.

O mecanismo de execução não salva qualquer registradores antes de chamar essa função.

  • Na entrada, você deve salvar todos os registros que você utiliza, incluindo aqueles na unidade de ponto flutuante (FPU).

  • Ao sair, você deve restaurar a pilha popping desativar todos os parâmetros que foram enviados pelo seu chamador.

A implementação de FunctionTailcall3WithInfo não deve bloquear, porque ele atrasará a coleta de lixo. A implementação não deve tentar uma coleta de lixo, porque a pilha não pode estar em um estado de amigável de coleta de lixo. Se a tentativa de uma coleta de lixo, o tempo de execução será bloqueado até que FunctionTailcall3WithInfo retorna.

Além disso, a função FunctionTailcall3WithInfo não deve chamar código gerenciado ou causar uma alocação de memória gerenciada de forma alguma.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: Corprof. idl

Biblioteca: CorGuids.lib

.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Referência

FunctionEnter3

FunctionLeave3

FunctionTailcall3

FunctionEnter3WithInfo

FunctionLeave3WithInfo

SetEnterLeaveFunctionHooks3

SetEnterLeaveFunctionHooks3WithInfo

SetFunctionIDMapper

SetFunctionIDMapper2

Outros recursos

A criação de perfil globais funções estáticas

Histórico de alterações

Date

History

Motivo

Outubro de 2010

Adicionado __stdcall a sintaxe.

Comentários do cliente.