Метод 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.