Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Notifica o gerador de perfis de que o controlo está a ser transmitido para uma função e fornece informações sobre os argumentos da moldura da pilha e da função. Esta função substitui a função FunctionEnter .
Sintaxe
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 para a qual o controlo é transmitido.
clientData [in] O identificador de função remapado, que o gerador de perfis especificou anteriormente com a função FunctionIDMapper .
func [in] Um COR_PRF_FRAME_INFO valor que aponta para informações sobre a moldura da pilha.
O gerador de perfis deve tratar isto como uma alça opaca que pode ser transmitida de volta para o motor de execução no método ICorProfilerInfo2::GetFunctionInfo2 .
argumentInfo [in] Um ponteiro para uma estrutura COR_PRF_FUNCTION_ARGUMENT_INFO que especifica as localizações na memória dos argumentos da função.
Para aceder às informações do argumento, o COR_PRF_ENABLE_FUNCTION_ARGS sinalizador tem de ser definido. O gerador de perfis pode utilizar o método ICorProfilerInfo::SetEventMask para definir os sinalizadores de eventos.
Observações
Os valores dos func parâmetros e argumentInfo não são válidos após a FunctionEnter2 função ser devolvida porque os valores podem ser alterados ou destruídos.
A FunctionEnter2 função é uma chamada de retorno; tem de implementá-la. A implementação tem de utilizar o __declspecatributo da classe de armazenamento (naked).
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 FunctionEnter2 não deve bloquear porque 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é FunctionEnter2 ser devolvido.
Além disso, a FunctionEnter2 função não pode chamar para código gerido ou, de qualquer forma, causar uma alocação de memória gerida.
Requisitos
Plataformas: Veja Requisitos de Sistema.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
.NET Framework Versões: Disponível desde 2.0