Freigeben über


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
S_OK
Die Methode wurde erfolgreich abgeschlossen.
REGDB_E_CLASSNOTREG
Die von clsid angegebene Komponente wird nicht als COM-Komponente registriert.
E_OUTOFMEMORY
Es ist nicht genügend Arbeitsspeicher verfügbar, um das Objekt zu instanziieren.
E_INVALIDARG
Das im ppvObj-Parameter übergebene Argument ist ungültig.
E_UNEXPECTED
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

Weitere Informationen

IObjectContext