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
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. |