IObjectContext::CreateInstance-Methode (comsvcs.h)
Erstellt ein -Objekt mithilfe des Kontexts des aktuellen Objekts.
Syntax
HRESULT CreateInstance(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID *ppv
);
Parameter
[in] rclsid
Die CLSID des Typs des zu instanziierenden Objekts.
[in] riid
Jede Schnittstelle, die von dem Objekt implementiert wird, das Sie instanziieren möchten.
[out] ppv
Ein Verweis auf die angeforderte Schnittstelle für das neue Objekt. Wenn die Instanziierung fehlschlägt, wird dieser Parameter auf NULL festgelegt.
Rückgabewert
Diese Methode kann die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich abgeschlossen. |
|
Die von clsid angegebene Komponente wird nicht als COM-Komponente registriert. |
|
Es ist nicht genügend Arbeitsspeicher verfügbar, um das Objekt zu instanziieren. |
|
Das im ppvObj-Parameter übergebene Argument ist ungültig. |
|
Ein unerwarteter Fehler ist aufgetreten. Dies kann passieren, wenn ein Objekt seinen IObjectContext-Zeiger an ein anderes Objekt übergibt und das andere Objekt CreateInstance mit diesem Zeiger aufruft. Ein IObjectContext-Zeiger ist außerhalb des Kontexts des Objekts, das ihn ursprünglich abgerufen hat, ungültig. |
Hinweise
CreateInstance erstellt ein COM-Objekt. Das Objekt verfügt jedoch nur dann über Kontext, wenn seine Komponente bei COM+ registriert ist.
Wenn Sie ein Objekt mithilfe von CreateInstance erstellen, wird der Kontext des neuen Objekts vom IObjectContext des aktuellen Objekts und den deklarativen Eigenschaften der Komponente des neuen Objekts abgeleitet. Das neue Objekt wird immer innerhalb derselben Aktivität ausgeführt wie das Objekt, das es erstellt hat. Wenn das aktuelle Objekt über eine Transaktion verfügt, bestimmt das Transaktionsattribute der Komponente des neuen Objekts, ob das neue Objekt innerhalb des Bereichs dieser Transaktion ausgeführt wird.
Wenn die Transaktionsattributeeinstellung der Komponente entweder eine Transaktion erfordert oder Transaktionen unterstützt, erbt das neue Objekt die Transaktion des Erstellers. Wenn das Transaktionsattribute der Komponente eine neue Transaktion erfordert, initiiert COM+ eine neue Transaktion für das neue Objekt. Wenn das Transaktionsattribute der Komponente keine Transaktionen unterstützt, wird das neue Objekt unter keiner Transaktion ausgeführt.
CreateInstance gibt immer die IUnknown-Schnittstelle für das neu instanziierte Objekt zurück. Sie sollten den zurückgegebenen Wert sofort in die Schnittstelle umwandeln, über die Sie mit dem neuen Objekt kommunizieren möchten. Die Schnittstellen-ID, die Sie im riid-Parameter übergeben, muss nicht dieselbe Schnittstelle sein wie die Schnittstelle, in die Sie den zurückgegebenen Wert umwandeln, aber es muss eine Schnittstelle sein, die von dem Objekt implementiert wird, das Sie instanziieren.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | comsvcs.h |