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 |
---|---|
|
La función recuperó todas las interfaces correctamente. |
|
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. |
|
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 |