Compartilhar via


Método IHostAssemblyStore::ProvideAssembly

Obtém uma referência a um assembly que não é referenciado pelo ICLRAssemblyReferenceList que é retornado de IHostAssemblyManager::GetNonHostStoreAssemblies. O CLR (Common Language Runtime) chama ProvideAssembly para cada assembly que não aparece na lista.

Sintaxe

HRESULT ProvideAssembly (  
    [in]  AssemblyBindInfo *pBindInfo,  
    [out] UINT64           *pAssemblyId,  
    [out] UINT64           *pHostContext,  
    [out] IStream          **ppStmAssemblyImage,  
    [out] IStream          **ppStmPDB  
);  

Parâmetros

pBindInfo
[in] Um ponteiro para uma instância assemblyBindInfo que o host usa para determinar certas características de associação, incluindo a presença ou ausência de qualquer política de controle de versão e a que assembly se associar.

pAssemblyId
[out] Um ponteiro para um identificador exclusivo para o assembly solicitado para esse IStream.

pHostContext
[out] Um ponteiro para dados específicos do host usados para determinar a evidência do assembly solicitado sem a necessidade de uma chamada de invocação de plataforma. pHostContext corresponde à propriedade HostContext da classe Assembly gerenciada.

ppStmAssemblyImage
[out] Um ponteiro para o endereço de um IStream que contém a imagem PE (executável portátil) a ser carregada ou nulo se o assembly não puder ser encontrado.

ppStmPDB
[out] Um ponteiro para o endereço de um IStream que contém as informações de PDB (depuração do programa) ou nulo se o arquivo .pdb não puder ser encontrado.

Valor Retornado

HRESULT Descrição
S_OK ProvideAssembly retornado com êxito.
HOST_E_CLRNOTAVAILABLE O CLR não foi carregado em um processo, ou o CLR está em um estado no qual não pode executar código gerenciado ou processar a chamada com êxito.
HOST_E_TIMEOUT Uma chamada atingiu o tempo limite.
HOST_E_NOT_OWNER O chamador não possui o bloqueio.
HOST_E_ABANDONED Um evento foi cancelado enquanto uma fibra ou um thread bloqueado estava esperando por ele.
E_FAIL Uma falha catastrófica desconhecida ocorreu. Quando um método retorna E_FAIL, o CLR não pode mais ser usado no processo. Chamadas subsequentes para métodos de hospedagem retornam HOST_E_CLRNOTAVAILABLE.
COR_E_FILENOTFOUND (0x80070002) O assembly solicitado não pôde ser encontrado.
E_NOT_SUFFICIENT_BUFFER O tamanho do buffer especificado por pAssemblyId não é grande o suficiente para conter o identificador que o host deseja retornar.

Comentários

O valor de identidade retornado para pAssemblyId é especificado pelo host. Os identificadores devem ser exclusivos dentro do tempo de vida de um processo. O CLR usa esse valor como um identificador exclusivo para o fluxo. Ele verifica cada valor em relação aos valores para pAssemblyId retornados por outras chamadas para ProvideAssembly. Se o host retornar o mesmo valor pAssemblyId para outro IStream, o CLR verificará se o conteúdo desse fluxo já foi mapeado. Nesse caso, o runtime carregará a cópia existente da imagem em vez de mapear uma nova.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: MSCorEE.h

Biblioteca: incluída como um recurso no MSCorEE.dll

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

Confira também