Compartir a través de


Función CoGetInstanceFromFile (objbase.h)

Crea un nuevo objeto e lo inicializa a partir de un archivo mediante IPersistFile::Load.

Sintaxis

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

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 para la clase, o en el equipo donde reside el archivo pwszName 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 GetClassFile, usando pwszName como parámetro para obtener la clase del objeto al que se va a crear una instancia.

[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] grfMode

Especifica cómo se va a abrir el archivo. Consulte Constantes STGM.

[in] pwszName

Archivo usado 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

CoGetInstanceFromFile crea un nuevo objeto e inicializa a partir de un archivo 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 caso de que dwClsCtx esté establecido en CLSCTX_REMOTE_SERVER y pServerInfo sea NULL, si la clase está registrada con la sub-clave ActivateAtStorage o no tiene información del Registro asociada, esta función creará una instancia de un objeto en el equipo donde reside pwszName , 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 ComBase.dll

Consulte también

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromIStorage