ICorProfilerInfo2::GetFunctionInfo2 (Método)
Obtiene la clase primaria, el símbolo (token) de metadatos y el valor de ClassID de cada argumento de tipo, si lo hay, de una función.
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 obtendrá la clase primaria y otra información.frameInfo
[in] Valor COR_PRF_FRAME_INFO que señala 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 símbolo (token) de metadatos de la función.cTypeArgs
[in] Tamaño de la matriz de typeArgs.pcTypeArgs
[out] Un puntero al número total de valores de 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 devuelve un resultado, typeArgs contendrá algunos o todos los valores de ClassID.
Comentarios
El código del generador de perfiles puede llamar a ICorProfilerInfo::GetModuleMetaData para obtener una interfaz de metadatos para un módulo determinado. El símbolo (token) de metadatos que se devuelve a la ubicación a la que hace referencia pToken puede utilizarse para obtener acceso a los metadatos de la función.
Los argumentos de tipo e identificador de clase que se devuelven a través de 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 |
---|---|
Valor COR_PRF_FRAME_INFO que se obtuvo de una devolución de llamada FunctionEnter2 |
El valor de ClassID devuelto en la ubicación a la que hace referencia pClassId, y todos los argumentos de tipo, devueltos en la matriz typeArgs, serán exactos. |
COR_PRF_FRAME_INFO obtenido de un origen que no es una devolución de llamada FunctionEnter2 |
No se pueden determinar los argumentos de tipo y ClassID exactos. Es decir, ClassID podría ser NULL y algunos argumentos de tipo podrían regresar como Object. |
Cero |
No se pueden determinar los argumentos de tipo y ClassID exactos. Es decir, ClassID podría ser NULL y algunos argumentos de tipo podrían regresar como Object. |
Después de que GetFunctionInfo2 devuelva un resultado, debe comprobar que el búfer de typeArgs era suficientemente grande para contener todos los valores de ClassID. Para ello, compare el valor al que señala pcTypeArgs con el valor del parámetro cTypeArgs. Si pcTypeArgs señala a un valor mayor que es mayor que cTypeArgs dividido por el tamaño de un valor de ClassID, asigne un búfer de pcTypeArgs mayor, actualice cTypeArgs con el nuevo tamaño y llame de nuevo a GetFunctionInfo2.
Otra opción es llamar primero a GetFunctionInfo2 con un búfer de pcTypeArgs de longitud cero para obtener el tamaño de búfer correcto. A continuación, puede establecer el tamaño del búfer en el valor devuelto en pcTypeArgs dividido por el tamaño de un valor de ClassID y llamar de nuevo a GetFunctionInfo2.
Para obtener más información sobre estos dos enfoques, vea Convenciones de los métodos de la API de generación de perfiles.
Requisitos
Plataformas: vea Requisitos de sistema de .NET Framework.
Encabezado: CorProf.idl, CorProf.h
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
Otros recursos
Interfaces para generación de perfiles
Generación de perfiles (Referencia de la API no administrada)