Compartir a través de


IHostAssemblyStore::ProvideAssembly (Método)

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

Sintaxis

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 que el host usa para determinar determinadas características de enlace, incluida la presencia o ausencia de cualquier directiva de control de versiones, y a qué ensamblado se va a enlazar.

pAssemblyId
[out] Puntero a un identificador único para el ensamblado solicitado para este IStream.

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

ppStmAssemblyImage
[out] Puntero a la dirección de un objeto IStream que contiene la imagen portable ejecutable (PE) que se va a cargar, o null si no se encontró el ensamblado.

ppStmPDB
[out] Puntero a la dirección de un objeto IStream que contiene la información de depuración del programa (PDB) o null si no se encontró el archivo .pdb.

Valor devuelto

HRESULT Descripción
S_OK ProvideAssembly se devolvió correctamente.
HOST_E_CLRNOTAVAILABLE Si se devuelve este valor, significa que Common Language Runtime (CLR) no se ha cargado en un proceso o se encuentra en un estado en el que no puede ejecutar código administrado ni procesar la llamada correctamente.
HOST_E_TIMEOUT Se agotó el tiempo de espera de la llamada.
HOST_E_NOT_OWNER El autor de la llamada no es el propietario del bloqueo.
HOST_E_ABANDONED Se canceló un evento mientras que una fibra o subproceso que estaba bloqueado lo estaba esperando.
E_FAIL Ocurrió un error grave desconocido. Si un método devuelve el valor E_FAIL, el CLR ya no se podrá usar en el proceso. Las llamadas que se hagan a los métodos de hospedaje posteriormente devolverán el valor HOST_E_CLRNOTAVAILABLE.
COR_E_FILENOTFOUND (0x80070002) No se ha podido localizar el conjunto solicitado.
E_NOT_SUFFICIENT_BUFFER El tamaño del búfer especificado por pAssemblyId no es lo suficientemente grande como para contener el identificador que el host quiere devolver.

Comentarios

El host especifica el valor de identidad devuelto para pAssemblyId. Los identificadores deben ser únicos durante la vigencia de un proceso. CLR usa este valor como identificador único para la secuencia. Comprueba cada valor con los valores devueltos a pAssemblyId por otras llamadas a ProvideAssembly. Si el host devuelve el mismo pAssemblyId valor para otro IStream, CLR comprueba si el contenido de esa secuencia ya se ha asignado. Si es así, el runtime carga la copia existente de la imagen en lugar de asignar una nueva.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: MSCorEE.h

Biblioteca: incluida como recurso en MSCorEE.dll

Versiones de .NET Framework: disponible a partir de la versión 2.0

Consulte también