Função FunctionIDMapper
Notifica o criador de perfil de que o identificador determinado de uma função pode ser remapeado para uma ID alternativa a ser usada nos retornos de chamada FunctionEnter2, FunctionLeave2 e FunctionTailcall2 para essa função. FunctionIDMapper
também permite que o criador de perfil indique se deseja receber retornos de chamada para essa função.
Sintaxe
UINT_PTR __stdcall FunctionIDMapper (
[in] FunctionID funcId,
[out] BOOL *pbHookFunction
);
Parâmetros
funcId
[in] O identificador de função a ser remapeado.
pbHookFunction
[out] Um ponteiro para um valor que o criador de perfil define para true
se quiser receber retornos de chamada FunctionEnter2
, FunctionLeave2
e FunctionTailcall2
; do contrário, ele define esse valor para false
.
Valor Retornado
O criador de perfil retorna um valor que o mecanismo de execução usa como um identificador de função alternativa. O valor retornado não pode ser nulo, a menos que false
seja retornado em pbHookFunction
. Caso contrário, um valor de retorno nulo produzirá resultados imprevisíveis, incluindo possivelmente a interrupção do processo.
Comentários
A função FunctionIDMapper
é um retorno de chamada. Ela é implementada pelo criador de perfil para remapear uma ID de função para algum outro identificador que seja mais útil para o criador de perfil. O FunctionIDMapper
retorna a ID alternativa a ser usada para qualquer função específica. Em seguida, o mecanismo de execução atende à solicitação do criador de perfil passando essa ID alternativa, além da ID de função tradicional, de volta para o criador de perfil no parâmetro clientData
dos ganchos FunctionEnter2
, FunctionLeave2
e FunctionTailcall2
, para identificar a função para a qual o gancho está sendo chamado.
Você pode usar o método ICorProfilerInfo::SetFunctionIDMapper para especificar a implementação da função FunctionIDMapper
. Você pode chamar o método ICorProfilerInfo::SetFunctionIDMapper
apenas uma vez e recomendamos que você faça isso no retorno de chamada ICorProfilerCallback::Initialize .
Por padrão, supõe-se que um criador de perfil que define o sinalizador COR_PRF_MONITOR_ENTERLEAVE usando ICorProfilerInfo::SetEventMask e que define ganchos por meio de ICorProfilerInfo::SetEnterLeaveFunctionHooks ou ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, deve receber os retornos de chamada FunctionEnter2
, FunctionLeave2
e FunctionTailcall2
para cada função. No entanto, os criadores de perfil podem implementar FunctionIDMapper
para evitar seletivamente receber esses retornos de chamada para determinadas funções definindo pbHookFunction
como false
.
Os profilers devem ser tolerantes a casos em que vários threads de um aplicativo com perfil estão chamando o mesmo método/função simultaneamente. Nesses casos, o criador de perfil pode receber vários FunctionIDMapper
retornos de chamada para o mesmo FunctionID
. O criador de perfil deve ter certeza de retornar os mesmos valores desse retorno de chamada quando ele for chamado várias vezes com o mesmo FunctionID
.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
Versões do .NET Framework: Disponíveis desde a versão 1.0