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


Метод IHostAssemblyStore::ProvideAssembly

Обновлен: Ноябрь 2007

Получает ссылку на сборку, на которую не ссылается объект 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 не загружена в процесс или находится в состоянии, в котором ей не удается выполнить управляемый код или успешно обработать вызов.

HOST_E_TIMEOUT

Время ожидания вызова истекло.

HOST_E_NOT_OWNER

Вызывающий объект не владеет блокировкой.

HOST_E_ABANDONED

Событие, которого ожидал заблокированный поток или нить, было отменено.

E_FAIL

Произошел неизвестный разрушительный сбой. Если метод вернет значение E_FAIL, среду CLR более нельзя будет использовать в данном процессе. Последующие вызовы методов размещения возвращают значение HOST_E_CLRNOTAVAILABLE.

ERROR_FILE_NOT_FOUND

Не удается найти запрашиваемую сборку.

ERROR_INSUFFICIENT_BUFFER

Размер буфера, заданный параметром pAssemblyId, недостаточно велик для расположения в нем идентификатора, который нужно возвратить основному приложению.

Заметки

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

Требования

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

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

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

Версии платформы .NET Framework: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

См. также

Ссылки

Интерфейс ICLRAssemblyReferenceList

Интерфейс IHostAssemblyManager

Интерфейс IHostAssemblyStore