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