Compartir a través de


FunctionTailcall2 (Función)

Notifica al generador de perfiles que la función que se está ejecutando está a punto de realizar una llamada de cola a otra función y proporciona información sobre el marco de pila.

void __stdcall FunctionTailcall2 (
    [in] FunctionID         funcId, 
    [in] UINT_PTR           clientData, 
    [in] COR_PRF_FRAME_INFO func
);

Parámetros

  • funcId
    [in] El identificador de la función que se está ejecutando y que está a punto de hacer una llamada de cola.

  • clientData
    [in] El identificador de la función reasignada, que el generador de perfiles especificó previamente mediante FunctionIDMapper, de la función que se está ejecutando y que está a punto de hacer una llamada de cola.

  • func
    [in] Valor COR_PRF_FRAME_INFO que señala a información acerca del marco de pila.

    El generador de perfiles debe tratarlo como un identificador opaco que se puede devolver al motor de ejecución en el método ICorProfilerInfo2::GetFunctionInfo2.

Comentarios

La función de destino de la llamada de cola utilizará el marco de pila actual y volverá directamente al llamador de la función que hizo la llamada de cola. Esto significa que no se emitirá una devolución de llamada FunctionLeave2 para una función que sea el destino de una llamada de cola.

El valor del parámetro func no es válido una vez que vuelve la función FunctionTailcall2, porque el valor puede cambiar o destruirse.

La función FunctionTailcall2 es una devolución de llamada; debe implementarla. La implementación debe utilizar el atributo de clase de almacenamiento __declspec(naked).

El motor de ejecución no guarda ningún registro antes de llamar a esta función.

  • En la entrada, debe guardar todos los registros que utilice, incluidos los de la unidad de punto flotante (FPU).

  • Al salir, debe restablecer la pila desactivando todos los parámetros insertados por el llamador.

La implementación de FunctionTailcall2 no debe bloquearse porque retrasaría la recolección de elementos. La implementación no debería intentar realizar la recolección de elementos no utilizados porque es posible que la pila no esté en un estado adecuado para ello. Si se intenta realizar una recolección de elementos, el motor en tiempo de ejecución se suspende hasta que se devuelva FunctionTailcall2

Asimismo, la función FunctionTailcall2 no debe llamar a código administrado ni provocar de ninguna forma una asignación de memoria administrada.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: CorProf.idl

Biblioteca: CorGuids.lib

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Referencia

FunctionEnter2 (Función)

FunctionLeave2 (Función)

ICorProfilerInfo2::SetEnterLeaveFunctionHooks2 (Método)

Otros recursos

Funciones estáticas globales para generación de perfiles

Historial de cambios

Fecha

Historial

Motivo

Octubre de 2010

Se agregó __stdcall a la sintaxis.

Comentarios de los clientes.