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

Confira também