Hilfsfunktionen für die Instanzerstellung
In früheren Versionen von COM war der primäre Mechanismus zum Erstellen eines Objekts instance die CoCreateInstance-Funktion. Diese Funktion kapselt den Prozess zum Erstellen eines Klassenobjekts, mit dem ein neues instance erstellt und das Klassenobjekt freigegeben wird. Eine weitere Funktion dieser Art ist die spezifischere OleCreate, das Ole-Verbunddokumenthilfsprogramm, das ein Klassenobjekt erstellt und einen Zeiger auf ein angefordertes Objekt abruft.
Um den Prozess der instance Erstellung verteilter Systeme zu glätten, hat COM vier wichtige neue instance-Erstellungsmechanismen eingeführt:
- Klassenmoniker und IClassActivator
- CoCreateInstanceEx
- CoGetInstanceFromFile
- CoGetInstanceFromIStorage
Mit einem Klassenmoniker können Sie die Klasse eines Objekts identifizieren und wird in der Regel mit einem anderen Moniker wie einem Dateimoniker verwendet, um den Speicherort des Objekts anzugeben. Dadurch können Sie eine Bindung an ein Objekt herstellen und den Server angeben, der für dieses Objekt gestartet werden soll. Klassenmoniker können auch rechts von Monikern zusammengesetzt werden, die die Bindung an die IClassActivator-Schnittstelle unterstützen. Weitere Informationen finden Sie unter Klassenmoniker.
CoCreateInstanceEx erweitert CoCreateInstance , um es zu ermöglichen, ein einzelnes nicht initialisiertes Objekt zu erstellen, das der angegebenen CLSID auf einem angegebenen Remotecomputer zugeordnet ist. Darüber hinaus ermöglicht CoCreateInstanceEx , anstatt eine einzelne Schnittstelle anzufordern und einen einzelnen Zeiger auf diese Schnittstelle zu erhalten, mehrere Schnittstellen abzufragen und (falls verfügbar) zeiger darauf in einem einzelnen Roundtrip zu empfangen, wodurch weniger Roundtrips zwischen Computern möglich sind. Dies kann die Interaktion mit Remoteobjekten wesentlich effizienter machen. Dazu verwendet die Funktion ein Array von MULTI_QI Strukturen.
Zum Erstellen eines Objekts über CoCreateInstanceEx muss das Objekt weiterhin über einen Aufruf einer der Initialisierungsschnittstellen (z . B. IPersistStorage::Load) initialisiert werden. Die Hilfsfunktionen CoGetInstanceFromFile und CoGetInstanceFromIStorage kapseln sowohl die instance-Erstellungsleistung von CoCreateInstanceEx als auch die Initialisierung, ersteres aus einer Datei und letzteres aus einem Speicher.
Zugehörige Themen