Partilhar via


Método IHostAssemblyStore::P rovideAssembly

Obtém uma referência a uma assemblagem que não é referenciada pelo ICLRAssemblyReferenceList que é devolvido de IHostAssemblyManager::GetNonHostStoreAssemblies. O runtime de linguagem comum (CLR) chama ProvideAssembly cada assemblagem 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 anfitrião utiliza para determinar determinadas características de enlace, incluindo a presença ou ausência de qualquer política de controlo de versões e a que assemblagem se vincular.

pAssemblyId
[fora] Um ponteiro para um identificador exclusivo para a assemblagem pedida para esta IStream.

pHostContext
[fora] Um ponteiro para dados específicos do anfitrião que são utilizados para determinar a evidência da assemblagem pedida sem a necessidade de uma chamada de invocação de plataforma. pHostContext corresponde à HostContext propriedade da classe gerida Assembly .

ppStmAssemblyImage
[fora] Um ponteiro para o endereço de um IStream que contém a imagem executável portátil (PE) a carregar ou nulo se não for possível localizar a assemblagem.

ppStmPDB
[fora] Um ponteiro para o endereço de um IStream que contém as informações de depuração do programa (PDB) ou nulo se não for possível localizar o ficheiro .pdb.

Devolver Valor

HRESULT Description
S_OK ProvideAssembly devolvido com êxito.
HOST_E_CLRNOTAVAILABLE O CLR não foi carregado para um processo ou o CLR está num estado em que não pode executar o código gerido ou processar a chamada com êxito.
HOST_E_TIMEOUT A chamada excedeu o limite de tempo.
HOST_E_NOT_OWNER O autor da chamada não é o proprietário do bloqueio.
HOST_E_ABANDONED Um evento foi cancelado enquanto um thread ou fibra bloqueado estava à espera.
E_FAIL Ocorreu uma falha catastrófica desconhecida. Quando um método devolve E_FAIL, o CLR já não é utilizável no processo. As chamadas subsequentes para métodos de alojamento devolvem HOST_E_CLRNOTAVAILABLE.
COR_E_FILENOTFOUND (0x80070002) Não foi possível localizar a assemblagem pedida.
E_NOT_SUFFICIENT_BUFFER O tamanho da memória intermédia especificado por pAssemblyId não é grande o suficiente para conter o identificador que o anfitrião quer devolver.

Observações

O valor de identidade devolvido para pAssemblyId é especificado pelo anfitrião. Os identificadores têm de ser exclusivos durante a duração de um processo. O CLR utiliza este valor como um identificador exclusivo para o fluxo. Verifica cada valor em relação aos valores devolvidos pAssemblyId por outras chamadas para ProvideAssembly. Se o anfitrião devolver o mesmo pAssemblyId valor para outro IStream, o CLR verifica se o conteúdo desse fluxo já foi mapeado. Se for o caso, o runtime carrega a cópia existente da imagem em vez de mapear uma nova.

Requisitos

Plataformas: Veja Requisitos de Sistema.

Cabeçalho: MSCorEE.h

Biblioteca: Incluído como um recurso no MSCorEE.dll

.NET Framework Versões: Disponível desde 2.0

Ver também