Funções auxiliares de criação de instância
Em versões anteriores do COM, o principal mecanismo usado para criar uma instância de objeto era o função CoCreateInstance. Essa função encapsula o processo de criação de um objeto de classe, usando-o para criar uma nova instância e liberando o objeto de classe. Outra função desse tipo é a mais específica OleCreate, o auxiliar de documento composto OLE que cria um objeto de classe e recupera um ponteiro para um objeto solicitado.
Para facilitar o processo de criação de instâncias em sistemas distribuídos, a COM introduziu quatro novos mecanismos importantes de criação de instâncias:
- Apelidos de classe e IClassActivator
- CoCreateInstanceEx
- CoGetInstanceFromFile
- CoGetInstanceFromIStorage
Um moniker de classe permite que você identifique a classe de um objeto e normalmente é usado com outro moniker, como um moniker de arquivo, para indicar o local do objeto. Isso permite que você se associe a um objeto e especifique o servidor que será iniciado para esse objeto. Os monikers de classe também podem ser compostos à direita de monikers que suportam a ligação à interfaceIClassActivator. Para obter mais informações, consulte Class Monikers.
CoCreateInstanceEx estende CoCreateInstance para tornar possível criar um único objeto não inicializado associado ao CLSID fornecido em uma máquina remota especificada. Além disso, em vez de solicitar uma única interface e obter um único ponteiro para essa interface, CoCreateInstanceEx torna possível consultar várias interfaces e (se disponível) receber ponteiros para elas em uma única viagem de ida e volta, permitindo assim menos viagens de ida e volta entre máquinas. Isso pode tornar a interação remota de objetos muito mais eficiente. Para fazer isso, a função usa uma matriz de MULTI_QI estruturas.
A criação de um objeto por meio CoCreateInstanceEx ainda requer que o objeto seja inicializado por meio de uma chamada para uma das interfaces de inicialização (como IPersistStorage::Load). As funções auxiliares CoGetInstanceFromFile e CoGetInstanceFromIStorage encapsulam o poder de criação de instância de CoCreateInstanceEx e a inicialização, a primeira de um arquivo e a segunda de um armazenamento.
Tópicos relacionados