Поделиться через


Метод IHostAssemblyStore::ProvideAssembly

Возвращает ссылку на сборку, на которую не ссылается ICLRAssemblyReferenceList , возвращаемый из IHostAssemblyManager::GetNonHostStoreAssemblies. Среда CLR вызывает ProvideAssembly для каждой сборки, которая не отображается в списке.

Синтаксис

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

Параметры

pBindInfo
[in] Указатель на экземпляр AssemblyBindInfo , который узел использует для определения определенных характеристик привязки, включая наличие или отсутствие какой-либо политики управления версиями, а также сборку для привязки.

pAssemblyId
[out] Указатель на уникальный идентификатор запрошенной сборки для данного IStreamобъекта .

pHostContext
[out] Указатель на данные, относящиеся к конкретному узлу, который используется для определения свидетельства запрошенной сборки без необходимости вызова вызова платформы. pHostContext соответствует свойству HostContext управляемого Assembly класса.

ppStmAssemblyImage
[out] Указатель на адрес объекта , который содержит загружаемый IStream образ переносимого исполняемого файла (PE), или значение NULL, если сборку не удалось найти.

ppStmPDB
[out] Указатель на адрес IStream объекта , который содержит сведения об отладке программы (PDB), или значение NULL, если не удалось найти PDB-файл.

Возвращаемое значение

HRESULT Описание:
S_OK ProvideAssembly возвращено успешно.
HOST_E_CLRNOTAVAILABLE Среда CLR не была загружена в процесс или среда CLR находится в состоянии, в котором она не может выполнить управляемый код или обработать вызов успешно.
HOST_E_TIMEOUT Время ожидания звонка истекло.
HOST_E_NOT_OWNER Вызывающий объект не владеет блокировкой.
HOST_E_ABANDONED Событие было отменено во время ожидания заблокированного потока или волокна.
E_FAIL Произошла неизвестная катастрофическая ошибка. Когда метод возвращает E_FAIL, среда CLR больше не используется в рамках процесса. Последующие вызовы методов размещения возвращают HOST_E_CLRNOTAVAILABLE.
COR_E_FILENOTFOUND (0x80070002) Не удалось найти запрошенную сборку.
E_NOT_SUFFICIENT_BUFFER Размер буфера, указанный параметром pAssemblyId , недостаточно велик для хранения идентификатора, который хочет вернуть узел.

Комментарии

Значение идентификатора, возвращаемое для pAssemblyId , задается узлом. Идентификаторы должны быть уникальными в течение времени существования процесса. Среда CLR использует это значение в качестве уникального идентификатора для потока. Он проверяет каждое значение со значениями, pAssemblyId возвращаемыми другими вызовами .ProvideAssembly Если узел возвращает то же pAssemblyId значение для другого IStream, среда CLR проверяет, сопоставлено ли содержимое этого потока. Если это так, среда выполнения загружает существующую копию образа, а не сопоставляет новую.

Требования

Платформы: см. раздел Требования к системе.

Заголовка: MSCorEE.h

Библиотека: Включается в качестве ресурса в MSCorEE.dll

версии платформа .NET Framework: доступно с версии 2.0.

См. также раздел