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


Функция CoGetInstanceFromFile (objbase.h)

Создает объект и инициализирует его из файла с помощью IPersistFile::Load.

Синтаксис

HRESULT CoGetInstanceFromFile(
  [in, optional] COSERVERINFO *pServerInfo,
  [in, optional] CLSID        *pClsid,
  [in, optional] IUnknown     *punkOuter,
  [in]           DWORD        dwClsCtx,
  [in]           DWORD        grfMode,
  [in]           OLECHAR      *pwszName,
  [in]           DWORD        dwCount,
  [in, out]      MULTI_QI     *pResults
);

Параметры

[in, optional] pServerInfo

Указатель на структуру COSERVERINFO , указывающий компьютер, на котором создается экземпляр объекта, и используемый параметр проверки подлинности. Этот параметр может иметь значение NULL. В этом случае экземпляр объекта создается на текущем компьютере, на компьютере, указанном в значении реестра RemoteServerName для класса, или на компьютере, где находится файл pwszName , если значение ActivateAtStorage указано для класса или нет сведений локального реестра.

[in, optional] pClsid

Указатель на идентификатор класса создаваемого объекта. Этот параметр может иметь значение NULL. В этом случае выполняется вызов GetClassFile, использующий pwszName в качестве параметра для получения класса объекта, экземпляр которого необходимо создать.

[in, optional] punkOuter

Если значение не равно NULL, указывает, что экземпляр создается как часть статистического выражения, а punkOuter будет использоваться в качестве указателя на управляющий IUnknown нового экземпляра. Агрегирование не поддерживается между процессами или компьютерами. При создании экземпляра объекта вне процесса CLASS_E_NOAGGREGATION будет возвращено, если punkOuter имеет значение, отличное от NULL.

[in] dwClsCtx

Значения из перечисления CLSCTX .

[in] grfMode

Указывает способ открытия файла. См. раздел Константы STGM.

[in] pwszName

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

Комментарии

CoGetInstanceFromFile создает объект и инициализирует его из файла с помощью IPersistFile::Load. Результат этой функции аналогичен созданию экземпляра с вызовом CoCreateInstanceEx, за которым следует инициализирующий вызов IPersistFile::Load со следующими важными различиями:

  • При создании экземпляра объекта на удаленном компьютере эта функция требует меньшего количества сетевых круговых путей.
  • Если для dwClsCtx задано значение CLSCTX_REMOTE_SERVER, а pServerInfo имеет значение NULL, если класс зарегистрирован с помощью подключа ActivateAtStorage или не содержит связанных сведений реестра, эта функция создаст экземпляр объекта на компьютере, где находится pwszName , обеспечивая минимальный сетевой трафик.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objbase.h
Библиотека Ole32.lib
DLL ComBase.dll

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

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromiStorage