Método IObjectContext::CreateInstance (comsvcs.h)

Crea un objeto mediante el contexto del objeto actual.

Sintaxis

HRESULT CreateInstance(
  [in]  REFCLSID rclsid,
  [in]  REFIID   riid,
  [out] LPVOID   *ppv
);

Parámetros

[in] rclsid

CLSID del tipo de objeto al que se va a crear una instancia.

[in] riid

Cualquier interfaz implementada por el objeto al que desea crear una instancia.

[out] ppv

Referencia a la interfaz solicitada en el nuevo objeto . Si se produce un error en la creación de instancias, este parámetro se establece en NULL.

Valor devuelto

Este método puede devolver los valores siguientes.

Código devuelto Descripción
S_OK
El método se completó correctamente.
REGDB_E_CLASSNOTREG
El componente especificado por clsid no está registrado como un componente COM.
E_OUTOFMEMORY
No hay suficiente memoria disponible para crear instancias del objeto.
E_INVALIDARG
El argumento pasado en el parámetro ppvObj no es válido.
E_UNEXPECTED
Se ha producido un error inesperado. Esto puede ocurrir si un objeto pasa su puntero IObjectContext a otro objeto y el otro objeto llama a CreateInstance mediante este puntero. Un puntero IObjectContext no es válido fuera del contexto del objeto que lo obtuvo originalmente.

Comentarios

CreateInstance crea un objeto COM. Sin embargo, el objeto solo tendrá contexto si su componente está registrado con COM+.

Cuando se crea un objeto mediante CreateInstance, el contexto del nuevo objeto se deriva de IObjectContext del objeto actual y de las propiedades declarativas del componente del nuevo objeto. El nuevo objeto siempre se ejecuta dentro de la misma actividad que el objeto que lo creó. Si el objeto actual tiene una transacción, el atributo transaction del componente del nuevo objeto determina si el nuevo objeto se ejecuta dentro del ámbito de esa transacción.

Si la configuración del atributo de transacción del componente requiere una transacción o admite transacciones, el nuevo objeto hereda la transacción del creador. Si el atributo de transacción del componente requiere una nueva transacción, COM+ inicia una nueva transacción para el nuevo objeto . Si el atributo transaction del componente no admite transacciones, el nuevo objeto no se ejecuta en ninguna transacción.

CreateInstance siempre devuelve la interfaz IUnknown en el objeto recién creado. Debe convertir inmediatamente el valor devuelto a la interfaz a través de la cual desea comunicarse con el nuevo objeto. El identificador de interfaz que se pasa en el parámetro riid no necesita ser la misma interfaz a la que se convierte el valor devuelto, pero debe ser una interfaz implementada por el objeto en el que se crea una instancia.

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 comsvcs.h

Consulte también

IObjectContext