Función CoGetInstanceFromIStorage (objbase.h)

Crea un nuevo objeto e inicializa desde un objeto de almacenamiento a través de una llamada interna a IPersistFile::Load.

Sintaxis

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
);

Parámetros

[in, optional] pServerInfo

Puntero a una estructura COSERVERINFO que especifica el equipo en el que se va a crear una instancia del objeto y la configuración de autenticación que se va a usar. Este parámetro puede ser NULL, en cuyo caso se crea una instancia del objeto en el equipo actual, en el equipo especificado en el valor del Registro RemoteServerName de la clase, o en el equipo donde reside el objeto de almacenamiento pstg si se especifica el valor ActivateAtStorage para la clase o no hay ninguna información del Registro local.

[in, optional] pClsid

Puntero al identificador de clase del objeto que se va a crear. Este parámetro puede ser NULL, en cuyo caso hay una llamada a IStorage::Stat para buscar la clase del objeto.

[in, optional] punkOuter

Cuando no es NULL, indica que la instancia se está creando como parte de un agregado, y punkOuter se va a usar como puntero al control IUnknown de la nueva instancia. La agregación no se admite entre procesos ni entre equipos. Al crear una instancia de un objeto fuera del proceso, se devolverá CLASS_E_NOAGGREGATION si punkOuter no es NULL.

[in] dwClsCtx

Valores de la enumeración CLSCTX .

[in] pstg

Puntero al objeto de almacenamiento utilizado para inicializar el objeto con IPersistFile::Load. Este parámetro no puede ser NULL.

[in] dwCount

Número de estructuras en pResults. Este parámetro debe ser mayor que 0.

[in, out] pResults

Matriz de estructuras de MULTI_QI . Cada estructura tiene tres miembros: el identificador de una interfaz solicitada (pIID), la ubicación para devolver el puntero de interfaz (pItf) y el valor devuelto de la llamada a QueryInterface (hr).

Valor devuelto

Esta función puede devolver el valor devuelto estándar E_INVALIDARG, así como los siguientes valores.

Código devuelto Descripción
S_OK
La función recuperó todas las interfaces correctamente.
CO_S_NOTALLINTERFACES
Al menos una, pero no todas las interfaces solicitadas en la matriz pResults se recuperaron correctamente. El miembro hr de cada una de las estructuras de MULTI_QI indica con S_OK o E_NOINTERFACE si se devolvió la interfaz específica.
E_NOINTERFACE
Ninguna de las interfaces solicitadas en la matriz pResults se recuperó correctamente.

Comentarios

CoGetInstanceFromIStorage crea un nuevo objeto y lo inicializa a partir de un objeto de almacenamiento mediante IPersistFile::Load. El resultado de esta función es similar a crear una instancia con una llamada a CoCreateInstanceEx, seguida de una llamada de inicialización a IPersistFile::Load, con las siguientes diferencias importantes:

  • Esta función requiere menos recorridos de ida y vuelta de red al crear instancias de un objeto en un equipo remoto.
  • En el caso de que dwClsCtx se establezca en CLSCTX_REMOTE_SERVER y pServerInfo sea NULL, si la clase está registrada con el valor ActivateAtStorage o no tiene ninguna información del Registro asociada, esta función creará una instancia de un objeto en el equipo donde reside pstg , lo que proporciona el menor tráfico de red posible.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objbase.h
Library Ole32.lib
Archivo DLL Ole32.dll

Consulte también

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromFile