Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Fornece métodos que geradores de perfis de código usam para se comunicar com o common linguagem tempo de execução (CLR) para controlar evento monitoramento e solicitação de informações. The ICorProfilerInfo2 interface é uma extensão das ICorProfilerInfo interface. Ou seja, ele oferece novos métodos com suporte no .NET estrutura versão 2.0 e versões posteriores.
interface ICorProfilerInfo2 : ICorProfilerInfo
{
HRESULT DoStackSnapshot(
[in] ThreadID thread,
[in] StackSnapshotCallback *callback,
[in] ULONG32 infoFlags,
[in] void *clientData,
[in, size_is(contextSize), length_is(contextSize)] BYTE context[],
[in] ULONG32 contextSize);
HRESULT SetEnterLeaveFunctionHooks2(
[in] FunctionEnter2 *pFuncEnter,
[in] FunctionLeave2 *pFuncLeave,
[in] FunctionTailcall2 *pFuncTailcall);
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[]);
HRESULT GetStringLayout(
[out] ULONG *pBufferLengthOffset,
[out] ULONG *pStringLengthOffset,
[out] ULONG *pBufferOffset);
HRESULT GetClassLayout(
[in] ClassID classID,
[in, out] COR_FIELD_OFFSET rFieldOffset[],
[in] ULONG cFieldOffset,
[out] ULONG *pcFieldOffset,
[out] ULONG *pulClassSize);
HRESULT GetClassIDInfo2(
[in] ClassID classId,
[out] ModuleID *pModuleId,
[out] mdTypeDef *pTypeDefToken,
[out] ClassID *pParentClassId,
[in] ULONG32 cNumTypeArgs,
[out] ULONG32 *pcNumTypeArgs,
[out] ClassID typeArgs[]);
HRESULT GetCodeInfo2(
[in] FunctionID functionID,
[in] ULONG32 cCodeInfos,
[out] ULONG32 *pcCodeInfos,
[out, size_is(cCodeInfos), length_is(*pcCodeInfos)]
COR_PRF_CODE_INFO codeInfos[]);
HRESULT GetClassFromTokenAndTypeArgs(
[in] ModuleID moduleID,
[in] mdTypeDef typeDef,
[in] ULONG32 cTypeArgs,
[in, size_is(cTypeArgs)] ClassID typeArgs[],
[out] ClassID* pClassID);
HRESULT GetFunctionFromTokenAndTypeArgs(
[in] ModuleID moduleID,
[in] mdMethodDef funcDef,
[in] ClassID classId,
[in] ULONG32 cTypeArgs,
[in, size_is(cTypeArgs)] ClassID typeArgs[],
[out] FunctionID* pFunctionID);
HRESULT EnumModuleFrozenObjects(
[in] ModuleID moduleID,
[out] ICorProfilerObjectEnum** ppEnum);
HRESULT GetArrayObjectInfo(
[in] ObjectID objectId,
[in] ULONG32 cDimensions,
[out, size_is(cDimensions), length_is(cDimensions)] ULONG32 pDimensionSizes[],
[out, size_is(cDimensions), length_is(cDimensions)] int pDimensionLowerBounds[],
[out] BYTE **ppData);
HRESULT GetBoxClassLayout(
[in] ClassID classId,
[out] ULONG32 *pBufferOffset);
HRESULT GetThreadAppDomain(
[in] ThreadID threadId,
[out] AppDomainID *pAppDomainId);
HRESULT GetRVAStaticAddress(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[out] void **ppAddress);
HRESULT GetAppDomainStaticAddress(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[in] AppDomainID appDomainId,
[out] void **ppAddress);
HRESULT GetThreadStaticAddress(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[in] ThreadID threadId,
[out] void **ppAddress);
HRESULT GetContextStaticAddress(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[in] ContextID contextId,
[out] void **ppAddress);
HRESULT GetStaticFieldInfo(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[out] COR_PRF_STATIC_TYPE *pFieldInfo);
HRESULT GetGenerationBounds(
[in] ULONG cObjectRanges,
[out] ULONG *pcObjectRanges,
[out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);
HRESULT GetObjectGeneration(
[in] ObjectID objectId,
[out] COR_PRF_GC_GENERATION_RANGE *range);
HRESULT GetNotifiedExceptionClauseInfo(
[out] COR_PRF_EX_CLAUSE_INFO *pinfo);
}
Métodos
Método |
Descrição |
|---|---|
Examina a pilha do segmento especificado ao relatório gerenciado telefonar quadros para o criador de perfil. |
|
Obtém um enumerador que permite a iteração sobre os objetos congelados no módulo especificado. |
|
Obtém o endereço do campo estático domínio aplicativo especificado que está no escopo do domínio do aplicativo especificado. |
|
Obtém informações detalhadas sobre um objeto de matriz. |
|
Obtém informações sobre o layout de classe para um tipo de valor especificado for in a box. |
|
Obtém o ClassID de um tipo usando o token de metadados especificado e o ClassID valores de quaisquer argumentos de tipo. |
|
Obtém o módulo pai a classe genérica especificada, o token de metadados para a classe, a ClassID de sua classe pai e o ClassID para cada argumento de tipo, se presente, da classe. |
|
Obtém informações sobre o layout na memória, dos campos definidas pela classe especificada. Ou seja, esse método obtém os deslocamentos de campos da classe. |
|
Obtém as extensões de código nativo associado com o especificado FunctionID. |
|
Obtém o endereço do campo de contexto estático especificado está no escopo do contexto especificado. |
|
Obtém o FunctionID de uma função usando o token de metadados especificado, que contém a classe, e ClassID valores de quaisquer argumentos de tipo. |
|
Obtém o pai de classe, o token de metadados e o ClassID de cada argumento de tipo, se presente, de uma função. |
|
Obtém as regiões de memória (segmentos de pilha) que compõem as gerações da heap coletado ao lixo. |
|
Obtém as informações de endereço e o quadro nativas para a cláusula de exceção (catch/finally/filter) que está prestes a ser executada ou foi executada. |
|
Obtém o segmento da pilha que contém o objeto especificado. |
|
Obtém o endereço do especificado relativo endereço virtual (RVA)-campo estático. |
|
Obtém o escopo no qual o campo especificado é estático. |
|
Obtém informações sobre o layout de um objeto de seqüência de caracteres. |
|
Obtém o ID do domínio do aplicativo no qual o thread especificado está sendo atualmente executado código. |
|
Obtém o endereço do campo de thread estático especificado está no escopo do segmento especificado. |
|
Especifica funções implementado criador de perfil a ser chamado em "entrar", "não" e "tailcall" ganchos de funções gerenciadas. |
Comentários
Um criador de perfil chama um método no ICorProfilerInfo2 interface para se comunicar com o CLR informações de solicitação e monitoramento de eventos de controle.
Os métodos do ICorProfilerInfo2 interface são implementados com o CLR usando o modelo de segmentação disponível. Cada método retorna um HRESULT para indicar êxito ou falha. Para obter uma lista de códigos de retorno possíveis, consulte o arquivo CorError.h.
O CLR passa um ICorProfilerInfo2 interface para cada criador de perfil do código durante a inicializar, usando de implementação o criador de perfil do ICorProfilerCallback::inicializar. Um criador de perfil de código, em seguida, pode chamar métodos do ICorProfilerInfo2 interface para obter informações sobre o código gerenciado que está sendo executado sob o controle do CLR.
Requisitos
Plataformas: See Requisitos de sistema do .NET framework.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0