Freigeben über


CoReleaseServerProcess-Funktion (combaseapi.h)

Verringert die globale Referenzanzahl pro Prozess.

Syntax

ULONG CoReleaseServerProcess();

Rückgabewert

Wenn die Serveranwendung die Bereinigung initiieren soll, gibt die Funktion 0 zurück. Andernfalls gibt die Funktion einen Wert ohne Zero zurück.

Hinweise

Server können CoReleaseServerProcess aufrufen, um eine globale Referenzanzahl pro Prozess zu erhöhen, die über einen Aufruf von CoAddRefServerProcess erhöht wurde.

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 im Destruktor jedes ihrer instance-Objekte und in jeder ihrer IClassFactory::LockServer-Methoden aufrufen, wenn der fLock-Parameter FALSE ist. Schließlich muss die Serveranwendung den Rückgabecode von CoReleaseServerProcess überprüfen. wenn 0 zurückgegeben wird, sollte die Serveranwendung die Bereinigung initiieren. Dies bedeutet in der Regel, dass ein Server mit mehreren Threads seine verschiedenen Threads signalisieren sollte, ihre Nachrichtenschleifen zu beenden und CoRevokeClassObject und CoUninitialize aufzurufen.

Wenn diese APIs ü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

CoAddRefServerProcess

CoSuspendClassObjects

IClassFactory::LockServer

Out-of-Process-Serverimplementierungshilfsprogramme