Функция 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, а также следующие значения.

Код возврата Описание
S_OK
Функция успешно извлекла все интерфейсы.
CO_S_NOTALLINTERFACES
По крайней мере один, но не все интерфейсы, запрошенные в массиве pResults , были успешно получены. Элемент hr каждой из MULTI_QI структур указывает с помощью S_OK или E_NOINTERFACE, был ли возвращен определенный интерфейс.
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

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

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromFile