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