Функция CoGetInstanceFromIStorage (objbase.h)
Создает объект и инициализирует его из объекта хранилища с помощью внутреннего вызова IPersistFile::Load.
Синтаксис
HRESULT CoGetInstanceFromIStorage(
[in, optional] COSERVERINFO *pServerInfo,
[in, optional] CLSID *pClsid,
[in, optional] IUnknown *punkOuter,
[in] DWORD dwClsCtx,
[in] IStorage *pstg,
[in] DWORD dwCount,
[in, out] MULTI_QI *pResults
);
Параметры
[in, optional] pServerInfo
Указатель на структуру COSERVERINFO , указывающий компьютер, на котором создается экземпляр объекта, и используемый параметр проверки подлинности. Этот параметр может иметь значение NULL. В этом случае экземпляр объекта создается на текущем компьютере, на компьютере, указанном в значении реестра RemoteServerName для класса, или на компьютере, где находится объект хранилища pstg , если для класса указано значение ActivateAtStorage или отсутствуют сведения о локальном реестре.
[in, optional] pClsid
Указатель на идентификатор класса создаваемого объекта. Этот параметр может иметь значение NULL. В этом случае выполняется вызов метода IStorage::Stat для поиска класса объекта .
[in, optional] punkOuter
Если значение не равно NULL, указывает, что экземпляр создается как часть статистического выражения, а punkOuter будет использоваться в качестве указателя на управляющий IUnknown нового экземпляра. Агрегирование не поддерживается между процессами или компьютерами. При создании экземпляра объекта вне процесса CLASS_E_NOAGGREGATION будет возвращено, если punkOuter имеет значение, отличное от NULL.
[in] dwClsCtx
Значения из перечисления CLSCTX .
[in] pstg
Указатель на объект хранилища, используемый для инициализации объекта с помощью IPersistFile::Load. Этот параметр не может иметь значение NULL.
[in] dwCount
Количество структур в pResults. Этот параметр должен быть больше 0.
[in, out] pResults
Массив структур MULTI_QI . Каждая структура имеет три элемента: идентификатор запрошенного интерфейса (pIID), расположение для возврата указателя интерфейса (pItf) и возвращаемое значение вызова QueryInterface (hr).
Возвращаемое значение
Эта функция может возвращать стандартное возвращаемое значение E_INVALIDARG, а также следующие значения.
Код возврата | Описание |
---|---|
|
Функция успешно извлекла все интерфейсы. |
|
По крайней мере один, но не все интерфейсы, запрошенные в массиве pResults , были успешно получены. Элемент hr каждой из MULTI_QI структур указывает с помощью S_OK или E_NOINTERFACE, был ли возвращен определенный интерфейс. |
|
Ни один из интерфейсов, запрошенных в массиве pResults , не был успешно извлечен. |
Комментарии
CoGetInstanceFromIStorage создает новый объект и инициализирует его из объекта хранилища с помощью IPersistFile::Load. Результат этой функции аналогичен созданию экземпляра с вызовом CoCreateInstanceEx, за которым следует инициализирующий вызов IPersistFile::Load со следующими важными различиями:
- При создании экземпляра объекта на удаленном компьютере эта функция требует меньшего количества сетевых круговых путей.
- Если dwClsCtx имеет значение CLSCTX_REMOTE_SERVER а pServerInfo имеет значение NULL, если класс зарегистрирован со значением ActivateAtStorage или не содержит связанных сведений реестра, эта функция создаст экземпляр объекта на компьютере, где находится pstg , обеспечивая минимальный сетевой трафик.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | objbase.h |
Библиотека | Ole32.lib |
DLL | Ole32.dll |