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