Compartilhar via


Função de FunctionEnter2

Notifica o criador de perfil que o controle está sendo passado para uma função e fornece informações sobre a pilha de argumentos de função e de quadro. Esta função substitui a FunctionEnter função.

void __stdcall FunctionEnter2 (
    [in]  FunctionID                       funcId, 
    [in]  UINT_PTR                         clientData, 
    [in]  COR_PRF_FRAME_INFO               func, 
    [in]  COR_PRF_FUNCTION_ARGUMENT_INFO  *argumentInfo
);

Parâmetros

  • funcId
    [in] O identificador da função à qual o controle é passado.

  • clientData
    [in] O identificador de função remapeados, o criador de perfil especificado anteriormente usando o FunctionIDMapper função.

  • func
    [in] A COR_PRF_FRAME_INFO valor que aponta para informações sobre o quadro de pilha.

    O profiler deve tratar isso como um identificador opaco que pode ser passado de volta para o mecanismo de execução na ICorProfilerInfo2::GetFunctionInfo2 método.

  • argumentInfo
    [in] Um ponteiro para uma COR_PRF_FUNCTION_ARGUMENT_INFO estrutura que especifica os locais na memória dos argumentos da função.

    Para acessar informações de argumento, o COR_PRF_ENABLE_FUNCTION_ARGS sinalizador deve ser definido. O profiler pode usar o ICorProfilerInfo::SetEventMask método para definir os sinalizadores de evento.

Comentários

Os valores a func e argumentInfo parâmetros não são válidos após a FunctionEnter2 função retorna porque os valores podem ser alterados ou destruídos.

O FunctionEnter2 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 FunctionEnter2 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 FunctionEnter2 retorna.

Além disso, o FunctionEnter2 função não deve chamar código gerenciado ou em qualquer causa de forma uma alocação de memória gerenciada.

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

Função de FunctionLeave2

Função de FunctionTailcall2

Método de ICorProfilerInfo2::SetEnterLeaveFunctionHooks2

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.