Compartilhar via


ICorProfilerCallback6::Método GetAssemblyReferences

[Com suporte no .NET Framework 4.5.2 e versões posteriores]

Notifica o criador de perfis de que um assembly está em um estágio inicial de carregamento, quando o Common Language Runtime realiza um exame de fechamento da referência do assembly.

Sintaxe

HRESULT GetAssemblyReferences(        [in, string] const WCHAR* wszAssemblyPath,  
        [in] ICorProfilerAssemblyReferenceProvider* pAsmRefProvider  
);  

Parâmetros

wszAssemblyPath
[in] O caminho e o nome do assembly cujos metadados serão modificados.

pAsmRefProvider
[in] Um ponteiro para o endereço de uma interface ICorProfilerAssemblyReferenceProvider que especifica as referências de assembly a serem adicionadas.

Valor Retornado

Os valores retornados desse retorno de chamada são ignorados.

Comentários

Esse retorno de chamada é controlado definindo o sinalizador de máscara de evento COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES ao chamar o método ICorProfilerCallback5::SetEventMask2. Se o criador de perfis se inscrever para o método de retorno de chamada ICorProfilerCallback6::GetAssemblyReferences, o tempo de execução transmitirá o caminho e o nome do assembly a ser carregado, juntamente com um ponteiro para um objeto de interface ICorProfilerAssemblyReferenceProvider para aquele método. O criador de perfil pode então chamar o método ICorProfilerAssemblyReferenceProvider::AddAssemblyReference com um objeto COR_PRF_ASSEMBLY_REFERENCE_INFO para cada assembly de destino que planeja fazer referência do assembly especificado no retorno de chamada GetAssemblyReferences.

Use o retorno de chamada GetAssemblyReferences apenas se for necessário ao criador de perfis modificar os metadados de um assembly para adicionar referências de assembly. (Mas observe que a modificação real dos metadados de um assembly é feita no método de retorno de chamada ICorProfilerCallback::ModuleLoadFinished.) O criador de perfil deve implementar o método de retorno de chamada GetAssemblyReferences para informar ao Common Language Runtime (CLR) que as referências de assembly serão adicionadas quando o módulo for carregado. Isso ajuda a garantir que decisões de compartilhamento de assembly tomadas pelo CLR durante esse estágio inicial permanecem válidas apesar de o criador de perfis planejar modificar as referências de metadados do assembly mais tarde. Isso pode evitar algumas instâncias nas quais as modificações de metadados do criador de perfis causam um erro de SECURITY_E_INCOMPATIBLE_SHARE.

O criador de perfil usa o objeto ICorProfilerAssemblyReferenceProvider fornecido por esse método para adicionar referências de assembly ao caminhante de fechamento de referência de assembly CLR. O objeto ICorProfilerAssemblyReferenceProvider deve ser usado somente de dentro desse retorno de chamada. As chamadas para o método ICorProfilerAssemblyReferenceProvider::AddAssemblyReference desse retorno de chamada não resultam em metadados modificados, mas apenas em uma caminhada de fechamento de referência de assembly modificada. O criador de perfil ainda terá que usar um objeto IMetaDataAssemblyEmit para adicionar explicitamente referências de assembly de dentro do retorno de chamada ICorProfilerCallback::ModuleLoadFinished para o assembly de referência, mesmo que ele implemente o retorno de chamada GetAssemblyReferences.

O criador de perfil deve estar preparado para receber chamadas duplicadas para esse retorno de chamada para o mesmo assembly e deve responder de forma idêntica para cada chamada duplicada (fazendo o mesmo conjunto de chamadas ICorProfilerAssemblyReferenceProvider::AddAssemblyReference).

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: disponíveis desde 4.5.2

Confira também