CoAddRefServerProcess-Funktion (combaseapi.h)

Erhöht eine globale Referenzanzahl pro Prozess.

Syntax

ULONG CoAddRefServerProcess();

Rückgabewert

Die aktuelle Referenzanzahl.

Hinweise

Server können CoAddRefServerProcess aufrufen, um eine globale Referenzanzahl pro Prozess zu erhöhen. Diese Funktion ist besonders hilfreich für Server, die mit mehreren Threads implementiert werden, entweder mit mehreren Oder mit Freethreads. Server dieser Art müssen die Entscheidung zum Herunterfahren mit Aktivierungsanforderungen über mehrere Threads hinweg koordinieren. Beim Aufrufen von CoAddRefServerProcess wird eine globale Referenzanzahl pro Prozess erhöht, und beim Aufrufen von CoReleaseServerProcess wird diese Anzahl verringert.

Wenn diese Anzahl 0 erreicht, ruft OLE automatisch CoSuspendClassObjects auf, wodurch verhindert wird, dass neue Aktivierungsanforderungen eingehen. Dadurch kann der Server die Registrierung seiner Klassenobjekte aus den verschiedenen Threads aufheben, ohne sich Sorgen machen zu müssen, dass eine weitere Aktivierungsanforderung eintreffen könnte. Neue Aktivierungsanforderungen führen zum Starten einer neuen instance des lokalen Serverprozesses.

Die einfachste Möglichkeit für eine lokale Serveranwendung, diese Funktionen zu nutzen, besteht darin, CoAddRefServerProcess im Konstruktor für jedes seiner instance-Objekte und in jeder ihrer IClassFactory::LockServer-Methoden aufzurufen, wenn der fLock-ParameterTRUE ist. Die Serveranwendung sollte auch CoReleaseServerProcess aufrufen, um jedes ihrer instance-Objekte zu zerstören, und in jeder ihrer LockServer-Methoden, wenn der fLock-ParameterFALSE ist. Schließlich sollte die Serveranwendung auf den Rückgabecode von CoReleaseServerProcess achten, und wenn sie 0 zurückgibt, sollte die Serveranwendung ihre Bereinigung initiieren, was für einen Server mit mehreren Threads in der Regel bedeutet, dass sie die verschiedenen Threads signalisieren sollte, ihre Nachrichtenschleifen zu beenden und CoRevokeClassObject und CoUninitialize aufzurufen.

Wenn diese Funktionen überhaupt verwendet werden, müssen sie sowohl in den Objektinstanzen als auch in der LockServer-Methode aufgerufen werden, andernfalls wird die Serveranwendung möglicherweise vorzeitig heruntergefahren. Prozessinterne Server sollten in der Regel nicht CoAddRefServerProcess oder CoReleaseServerProcess aufrufen.

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 combaseapi.h (include Objbase.h)
Bibliothek Ole32.lib
DLL Ole32.dll

Weitere Informationen

CoReleaseServerProcess

IClassFactory::LockServer

Out-of-Process-Serverimplementierungshilfsprogramme