Função FunctionLeave3WithInfo
Notifica o criador de perfil de que o controle está retornando de uma função e fornece um identificador que pode ser passado para o método ICorProfilerInfo3::GetFunctionLeave3Info para recuperar um registro de ativação e o valor de retorno.
Sintaxe
void __stdcall FunctionLeave3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Parâmetros
functionIDOrClientID
[in] O identificador da função da qual o controle é retornado.
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 FunctionLeave3WithInfo
notifica o criador de perfil como as funções são chamadas e permite que ele use o método ICorProfilerInfo3::GetFunctionLeave3Info para inspecionar o valor de retorno. Para acessar informações de valor de retorno, o sinalizador COR_PRF_ENABLE_FUNCTION_RETVAL
precisa ser definido. 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 sua implementação dessa função.
A função FunctionLeave3WithInfo
é 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 FunctionLeave3WithInfo
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é que FunctionLeave3WithInfo
retorne.
A função FunctionLeave3WithInfo
não pode chamar o código gerenciado ou causar uma alocação de memória gerenciada de nenhuma maneira.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
Versões do .NET Framework: disponíveis desde 4