Compartir a través de


IHostAssemblyStore::ProvideAssembly (Método)

Obtiene una referencia a un ensamblado al que no hace referencia la ICLRAssemblyReferenceList devuelta por IHostAssemblyManager::GetNonHostStoreAssemblies. Common Language Runtime (CLR) llama a ProvideAssembly para cada ensamblado que no aparece en la lista.

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

Parámetros

  • pBindInfo
    [in] Puntero a una instancia de AssemblyBindInfo utilizada por el host para determinar ciertas características de enlace, incluida la presencia o ausencia de directivas de control de versiones, así como el ensamblado al que se va a realizar el enlace.

  • pAssemblyId
    [out] Puntero a un identificador único para el ensamblado solicitado para esta instancia de IStream.

  • pHostContext
    [out] Puntero a unos datos específicos del host que se usan para determinar la existencia del ensamblado solicitado sin necesidad de realizar una llamada de invocación de plataforma. pHostContext corresponde a la propiedad HostContext de la clase Assembly administrada.

  • ppStmAssemblyImage
    [out] Puntero a la dirección de una instancia de IStream que contiene la imagen portable ejecutable (PE) que se va a cargar, o null si no se pudo encontrar el ensamblado.

  • ppStmPDB
    [out] Puntero a la dirección de una instancia de IStream que contiene la información de depuración del programa (PDB), o null si no se pudo encontrar el archivo .pdb.

Valor devuelto

HRESULT

Descripción

S_OK

ProvideAssembly finalizó correctamente.

HOST_E_CLRNOTAVAILABLE

CLR no se ha cargado en un proceso o está en un estado en el que no puede ejecutar el código administrado o procesar la llamada correctamente.

HOST_E_TIMEOUT

Se agotó el tiempo de espera de la llamada.

HOST_E_NOT_OWNER

El llamador no posee el bloqueo.

HOST_E_ABANDONED

Se canceló un evento mientras una fibra o un subproceso bloqueado estaba esperándole.

E_FAIL

Se ha producido un error catastrófico desconocido. Si un método devuelve E_FAIL, CLR no se puede seguir utilizando en el proceso. Las llamadas subsiguientes a métodos de hospedaje devuelven HOST_E_CLRNOTAVAILABLE.

COR_E_FILENOTFOUND (0x80070002)

No se pudo localizar el ensamblado solicitado.

ERROR_INSUFFICIENT_BUFFER

El tamaño de búfer especificado por pAssemblyId no es lo suficientemente grande como para almacenar el identificador que desea devolver el host.

Comentarios

El host especifica el valor de identidad devuelto para pAssemblyId. Los identificadores deben ser únicos dentro del período de duración de un proceso. CLR utiliza este valor como identificador único de la secuencia. Compara cada valor con los valores para pAssemblyId devueltos por otras llamadas a ProvideAssembly. Si el host devuelve el mismo valor de pAssemblyId para otra instancia de IStream, CLR comprueba si el contenido de esa secuencia ya se ha asignado. En ese caso, el motor en tiempo de ejecución carga la copia existente de la imagen en lugar de asignar una nueva.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: MSCorEE.h

Biblioteca: Se incluye como recurso en MsCorEE.dll

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Referencia

ICLRAssemblyReferenceList (Interfaz)

IHostAssemblyManager (Interfaz)

IHostAssemblyStore (Interfaz)

Historial de cambios

Fecha

Historial

Motivo

Junio de 2010

Se corrigió el valor HRESULT devuelto cuando no se puede localizar el ensamblado.

Comentarios de los clientes.