Comparteix a través de


ICorProfilerInfo2::GetFunctionInfo2 (Método)

Obtiene la clase primaria, el token de metadatos y el ClassID de cada argumento de tipo, si está presente, de una función.

Sintaxis

HRESULT GetFunctionInfo2(  
    [in]  FunctionID funcId,  
    [in]  COR_PRF_FRAME_INFO frameInfo,  
    [out] ClassID *pClassId,  
    [out] ModuleID *pModuleId,  
    [out] mdToken *pToken,  
    [in]  ULONG32 cTypeArgs,  
    [out] ULONG32 *pcTypeArgs,  
    [out] ClassID typeArgs[]);  

Parámetros

funcId
[in] Identificador de la función para la que se va a obtener la clase primaria y otra información.

frameInfo
[in] Valor COR_PRF_FRAME_INFO que apunta a información acerca de un marco de pila.

pClassId
[out] Puntero a la clase primaria de la función.

pModuleId
[out] Puntero al módulo en el que se define la clase primaria de la función.

pToken
[out] Puntero al token de metadatos para la función.

cTypeArgs
[in] Tamaño de la matriz typeArgs.

pcTypeArgs
[out] Puntero al número total de valores ClassID.

typeArgs
[out] Matriz de valores ClassID, cada uno de los cuales es el identificador de un argumento de tipo de la función. Cuando el método vuelve, typeArgs contendrá algunos o todos los valores ClassID.

Comentarios

El código del generador de perfiles puede llamar al método ICorProfilerInfo::GetModuleMetaData a fin de obtener una interfaz de metadatos para un módulo determinado. Después, el token de metadatos que se devuelve a la ubicación a la que pToken hace referencia puede usarse para acceder a los metadatos de la función.

El identificador de clase y los argumentos de tipo que se devuelven mediante los parámetros pClassId y typeArgs dependen del valor que se pasa en el parámetro frameInfo, como se muestra en la tabla siguiente.

Valor del parámetro frameInfo Resultado
Un valor COR_PRF_FRAME_INFO que se obtiene de una devolución de llamada FunctionEnter2 El ClassID que se devuelve en la ubicación a la que pClassId hace referencia y todos los argumentos de tipo que se devuelven en la matriz typeArgs serán exactos.
Un valor COR_PRF_FRAME_INFO que se obtiene de un origen que no es una devolución de llamada FunctionEnter2 El ClassID y los argumentos de tipo no se puede determinar exactamente. Es decir, ClassID podría ser NULL y algunos argumentos de tipo podrían volver como Object.
Cero El ClassID y los argumentos de tipo no se puede determinar exactamente. Es decir, ClassID podría ser NULL y algunos argumentos de tipo podrían volver como Object.

Después de que GetFunctionInfo2 vuelva, debe comprobar que el búfer typeArgs era lo suficientemente grande como para contener todos los valores ClassID. Para ello, compare el valor al que pcTypeArgs apunta con el valor del parámetro cTypeArgs. Si pcTypeArgs apunta a un valor mayor que cTypeArgs dividido por el tamaño de un valor ClassID, asigne un búfer pcTypeArgs mayor, actualice cTypeArgs con el nuevo tamaño y vuelva a llamar a GetFunctionInfo2.

También tiene la opción de llamar primero a GetFunctionInfo2 con un búfer pcTypeArgs de longitud de cero para obtener el tamaño de búfer correcto. Después, establezca el tamaño del búfer en el valor devuelto en pcTypeArgs, dividido por el tamaño de un valor ClassID y vuelva a llamar a GetFunctionInfo2.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: disponible a partir de la versión 2.0

Consulte también