Partilhar via


IHostAssemblyStore::P rovideAssembly Método

Obtém uma referência a uma assembly que não é referenciada pelo ICLRAssemblyReferenceList que é devolvido de IHostAssemblyManager::GetNonHostStoreAssemblies. O runtime de linguagem comum (CLR) 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 [dentro] Um apontador para uma instância AssemblyBindInfo que o anfitrião usa para determinar certas características de ligação, incluindo a presença ou ausência de qualquer política de versão, e a que assembly deve ligar.

pAssemblyId [fora] Um apontador para um identificador único para o conjunto solicitado para este IStream.

pHostContext [fora] Um apontador para dados específicos do host que é usado para determinar a evidência do assembly solicitado sem 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 ser carregada, ou nulo se o assembly não pudesse ser encontrado.

ppStmPDB [fora] Um apontador para o endereço de um IStream que contém a informação de depuração do programa (PDB), ou nulo se o ficheiro .pdb não pudesse ser encontrado.

Valor de retorno

HRESULT Descrição
S_OK ProvideAssembly regressou com sucesso.
HOST_E_CLRNOTAVAILABLE O CLR não foi carregado num processo, ou o CLR está num estado em que não consegue executar código gerido nem processar a chamada com sucesso.
HOST_E_TIMEOUT A chamada expirou.
HOST_E_NOT_OWNER O chamador não é dono da fechadura.
HOST_E_ABANDONED Um evento foi cancelado enquanto um fio ou fibra bloqueada estava à espera.
E_FAIL Ocorreu uma falha catastrófica desconhecida. Quando um método retorna E_FAIL, o CLR deixa de ser utilizado dentro do processo. As chamadas subsequentes para sistemas de alojamento regressam HOST_E_CLRNOTAVAILABLE.
COR_E_FILENOTFOUND (0x80070002) A montagem solicitada não foi possível localizar.
E_NOT_SUFFICIENT_BUFFER O tamanho do buffer especificado por pAssemblyId não é suficientemente grande para conter o identificador que o host pretende devolver.

Observações

O valor de identidade devolvido para pAssemblyId é especificado pelo anfitrião. Os identificadores devem ser únicos dentro da vida útil de um processo. O CLR utiliza este valor como identificador único para o fluxo. Verifica cada valor com os valores devolvidos pAssemblyId por outras chamadas para ProvideAssembly. Se o host devolver o mesmo pAssemblyId valor para outro IStream, o CLR verifica se o conteúdo desse fluxo já foi mapeado. Se sim, o runtime carrega a cópia existente da imagem em vez de mapear uma nova.

Requisitos

Plataformas: Consulte Requisitos do sistema.

Cabeçalho: MSCorEE.h

Biblioteca: Incluído como recurso em MSCorEE.dll

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

Consulte também