Freigeben über


CoEnterServiceDomain-Funktion (comsvcs.h)

Wird verwendet, um Code einzugeben, der dann COM+-Dienste verwenden kann.

Syntax

HRESULT CoEnterServiceDomain(
  [in] IUnknown *pConfigObject
);

Parameter

[in] pConfigObject

Ein Zeiger auf die IUnknown-Schnittstelle des Objekts, das aus der CServiceConfig-Klasse erstellt wurde und die Konfigurationsinformationen für die Dienste enthält, die innerhalb des eingeschlossenen Codes verwendet werden sollen.

Rückgabewert

Diese Methode kann die Standardrückgabewerte E_INVALIDARG, E_OUTOFMEMORY und E_FAIL sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.
CO_E_SXS_CONFIG
Die parallele Assemblykonfiguration des CServiceConfig-Objekts ist ungültig.
CO_E_THREADPOOL_CONFIG
Die Threadpoolkonfiguration des CServiceConfig-Objekts ist ungültig. Das Thread-Apartmentmodell kann nicht durch Aufrufen von CoEnterServiceDomain neu konfiguriert werden.
CO_E_TRACKER_CONFIG
Die Nachverfolgungskonfiguration des CServiceConfig-Objekts ist ungültig.
COMADMIN_E_PARTITION_ACCESSDENIED
Der Aufrufer verfügt nicht über Zugriffsberechtigungen für die COM+-Partition.

Hinweise

Code, der zwischen Aufrufen von CoEnterServiceDomain und CoLeaveServiceDomain eingeschlossen ist, wird in einem eigenen Kontext ausgeführt und verhält sich so, als wäre es eine Methode, die für ein im Kontext erstelltes Objekt aufgerufen wird. CoEnterServiceDomain kann nicht zu einem anderen Apartmentmodell wechseln, sodass der eingeschlossene Code in der Wohnung des Aufrufers und im Thread des Aufrufers ausgeführt wird. Es ist ein Fehler, beim Aufrufen von CoEnterServiceDomain zu versuchen, das Apartmentmodell über das CServiceConfig-Objekt zu ändern.

CoEnterServiceDomain erstellt zunächst einen Kontext, der gemäß der Angabe durch das CServiceConfig-Objekt konfiguriert wird, das als pConfigObject-Parameter übergeben wird. Richtlinien auf Client- und Serverseite werden dann ausgelöst, als ob ein Methodenaufruf stattgefunden hätte. Der neue Kontext wird dann in einen Kontextstapel gepusht und wird zum aktuellen Kontext.

Aufgrund ihres effizienten Entwurfs und weil kein Threadmarshalling erforderlich ist, ist die Verwendung von CoEnterServiceDomain und CoLeaveServiceDomain im Vergleich zu einem äquivalenten Methodenaufruf deutlich geringer.

CoEnterServiceDomain und CoLeaveServiceDomain sind besonders nützlich in Anwendungen, die diese Funktionen verwenden können, um auf COM+-Dienste zuzugreifen, ohne dafür eine Komponente erstellen zu müssen.

Die Paare CoEnterServiceDomain und CoLeaveServiceDomain können geschachtelt werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile comsvcs.h
Bibliothek ComSvcs.lib
DLL ComSvcs.dll

Weitere Informationen

COM+-Dienste ohne Komponenten

CServiceConfig

CoCreateActivity

CoLeaveServiceDomain