Comparteix a través de


FunctionIDMapper (Función)

Notifica al generador de perfiles que el identificador especificado de una función puede reasignarse a un identificador alternativo que se usará en las devoluciones de llamada FunctionEnter2, FunctionLeave2 y FunctionTailcall2 de esa función. Además, FunctionIDMapper permite al generador de perfiles indicar si desea recibir devoluciones de llamada de esa función.

Sintaxis

UINT_PTR __stdcall FunctionIDMapper (  
    [in]  FunctionID  funcId,
    [out] BOOL       *pbHookFunction  
);  

Parámetros

funcId [in] Identificador de la función que se va a reasignar.

pbHookFunction [out] Puntero a un valor que el generador de perfiles establece en true si quiere recibir devoluciones de llamada FunctionEnter2, FunctionLeave2 y FunctionTailcall2. De lo contrario, establece este valor en false.

Valor devuelto

El generador de perfiles devuelve un valor que el motor de ejecución utiliza como identificador de función alternativo. El valor devuelto no puede ser null a menos que se devuelva false en pbHookFunction. De lo contrario, un valor devuelto NULL generará resultados imprevisibles, que posiblemente incluyan la detención del proceso.

Comentarios

La función FunctionIDMapper es una devolución de llamada. El generador de perfiles la implementa para reasignar un identificador de función a otro identificador que sea más útil para el generador de perfiles. FunctionIDMapper devuelve el identificador alternativo que se usará para cualquier función determinada. El motor de ejecución respeta entonces la solicitud del generador de perfiles pasando este identificador alternativo, además del identificador de función tradicional, de vuelta al generador de perfiles en el parámetro clientData de los enlaces FunctionEnter2, FunctionLeave2 y FunctionTailcall2 a fin de identificar la función para la que se llama al enlace.

Puede usar el método ICorProfilerInfo::SetFunctionIDMapper para especificar la implementación de la función FunctionIDMapper. Solo puedes llamar al método ICorProfilerInfo::SetFunctionIDMapper una vez, y le recomendamos que lo haga en la devolución de llamada ICorProfilerCallback::Initialize.

De forma predeterminada, se supone que un generador de perfiles que establece la marca COR_PRF_MONITOR_ENTERLEAVE mediante ICorProfilerInfo::SetEventMask y que establece enlaces mediante ICorProfilerInfo::SetEnterLeaveFunctionHooks o ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, debe recibir las devoluciones de llamada FunctionEnter2 , FunctionLeave2 y FunctionTailcall2 para cada función. Sin embargo, los generadores de perfiles pueden implementar FunctionIDMapper para evitar de forma selectiva la recepción de estas devoluciones de llamada para determinadas funciones estableciendo pbHookFunction en false.

Los generadores de perfiles deben ser tolerantes a casos en los que varios subprocesos de una aplicación con perfiles llaman simultáneamente al mismo método o función. En tales casos, el generador de perfiles puede recibir varias devoluciones de llamada FunctionIDMapper para el mismo elemento FunctionID. El generador de perfiles debe estar seguro de devolver los mismos valores de esta devolución de llamada cuando se llama varias veces con el mismo elemento FunctionID.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorProf.idl

Biblioteca: CorGuids.lib

Versiones de .NET Framework: está disponible desde la versión 1.0

Consulte también