Compartir vía


Funciones auxiliares de creación de instancias

En versiones anteriores de COM, el mecanismo principal usado para crear una instancia de objeto era la función CoCreateInstance. Esta función encapsula el proceso de creación de un objeto de clase, utilizando para crear una nueva instancia y liberar el objeto de clase. Otra función de este tipo es la oleCreate más específica, el asistente de documentos compuestos OLE que crea un objeto de clase y recupera un puntero a un objeto solicitado.

Para suavizar el proceso de creación de instancias en sistemas distribuidos, COM ha introducido cuatro mecanismos importantes de creación de nuevas instancias:

Un moniker de clase permite identificar la clase de un objeto y se usa normalmente con otro moniker, como un moniker de archivo, para indicar la ubicación del objeto. Esto le permite enlazar a un objeto y especificar el servidor que se va a iniciar para ese objeto. Los monikers de clase también se pueden componer a la derecha de monikers que admiten el enlace a la interfaz de IClassActivator. Para obtener más información, vea clase Monikers.

CoCreateInstanceEx amplía CoCreateInstance para que sea posible crear un único objeto sin inicializar asociado al CLSID especificado en una máquina remota especificada. Además, en lugar de solicitar una sola interfaz y obtener un único puntero a esa interfaz, CoCreateInstanceEx permite consultar varias interfaces y (si están disponibles) recibir punteros a ellos en un solo recorrido de ida y vuelta, lo que permite menos recorridos de ida y vuelta entre máquinas. Esto puede hacer que la interacción de objetos remotos sea mucho más eficaz. Para ello, la función usa una matriz de estructuras MULTI_QI.

La creación de un objeto mediante CoCreateInstanceEx todavía requiere que el objeto se inicialice a través de una llamada a una de las interfaces de inicialización (como IPersistStorage::Load). Las funciones auxiliares CoGetInstanceFromFile y CoGetInstanceFromIStorage encapsulan tanto la potencia de creación de instancias de CoCreateInstanceEx como la inicialización, la primera desde un archivo y la última desde un almacenamiento.

crear un objeto a través de un objeto de clase