Helperfuncties voor het maken van exemplaren
In eerdere versies van COM was het primaire mechanisme dat werd gebruikt voor het maken van een objectexemplaren de CoCreateInstance functie. Met deze functie wordt het proces voor het maken van een klasseobject ingekapseld, waarbij een nieuw exemplaar wordt gemaakt en het klasseobject wordt vrijgegeven. Een andere functie van dit type is de specifiekere OleCreate-, de OLE-hulp voor samengestelde documenten waarmee een klasseobject wordt gemaakt en een aanwijzer naar een aangevraagd object wordt opgehaald.
Om het proces van het maken van exemplaren op gedistribueerde systemen te vlakken, heeft COM vier belangrijke nieuwe mechanismen voor het maken van exemplaren geïntroduceerd:
- Klasse monikers en IClassActivator
- CoCreateInstanceEx
- CoGetInstanceFromFile-
- CoGetInstanceFromIStorage
Met een klasse-moniker kunt u de klasse van een object identificeren en wordt meestal gebruikt met een andere moniker, zoals een bestands moniker, om de locatie van het object aan te geven. Hiermee kunt u verbinding maken met een object en de server opgeven die voor dat object moet worden gestart. Klasse monikers kunnen ook worden samengesteld aan de rechterkant van monikers die binding met de IClassActivator interface ondersteunen. Zie Class Monikersvoor meer informatie.
CoCreateInstanceEx breidt CoCreateInstance uit om een enkel niet-geïnitialiseerd object te maken dat is gekoppeld aan de opgegeven CLSID op een opgegeven externe computer. Bovendien maakt CoCreateInstanceEx het mogelijk om query's uit te voeren op meerdere interfaces en (indien beschikbaar) pointers naar die interface te ontvangen, zodat er minder retouren tussen machines mogelijk zijn. Dit kan externe objectinteractie veel efficiënter maken. Hiervoor gebruikt de functie een matrix van MULTI_QI structuren.
Het maken van een object via CoCreateInstanceEx vereist nog steeds dat het object wordt geïnitialiseerd via een aanroep naar een van de initialisatie-interfaces (zoals IPersistStorage::Load). De helperfuncties CoGetInstanceFromFile en CoGetInstanceFromIStorage inkapselen van zowel de aanmaakkracht van CoCreateInstanceEx als de initialisatie, de voormalige uit een bestand en de laatste uit een opslag.
Verwante onderwerpen