Partager via


CoReleaseServerProcess, fonction (combaseapi.h)

Décrémente le nombre global de références par processus.

Syntaxe

ULONG CoReleaseServerProcess();

Valeur de retour

Si l’application serveur doit lancer son nettoyage, la fonction retourne 0 ; sinon, la fonction retourne une valeur différente de zéro.

Remarques

Les serveurs peuvent appeler CoReleaseServerProcess pour décrémenter un nombre global de références par processus incrémenté via un appel à CoAddRefServerProcess.

Lorsque ce nombre atteint zéro, OLE appelle automatiquement CoSuspendClassObjects, ce qui empêche l’arrivée de nouvelles demandes d’activation. Cela permet au serveur de désinscrire ses objets de classe de ses différents threads sans craindre qu’une autre demande d’activation puisse arriver. Les nouvelles demandes d’activation entraînent le lancement d’une nouvelle instance du processus du serveur local.

Le moyen le plus simple pour une application serveur local d’utiliser ces fonctions consiste à appeler CoAddRefServerProcess dans le constructeur pour chacun de ses objets instance, et dans chacune de ses méthodes IClassFactory ::LockServer lorsque le paramètre fLock a la valeur TRUE. L’application serveur doit également appeler CoReleaseServerProcess dans le destructeur de chacun de ses objets instance et dans chacune de ses méthodes IClassFactory ::LockServer lorsque le paramètre fLock a la valeur FALSE. Enfin, l’application serveur doit case activée le code de retour de CoReleaseServerProcess ; si elle retourne 0, l’application serveur doit lancer son nettoyage. Cela signifie généralement qu’un serveur avec plusieurs threads doit signaler à ses différents threads de quitter leurs boucles de message et appeler CoRevokeClassObject et CoUninitialize.

Si ces API sont utilisées, elles doivent être appelées à la fois dans les instances d’objet et dans la méthode LockServer , sinon, l’application serveur risque d’être arrêtée prématurément. Les serveurs in-process ne doivent généralement pas appeler CoAddRefServerProcess ou CoReleaseServerProcess.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête combaseapi.h (inclure Objbase.h)
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

CoAddRefServerProcess

CoSuspendClassObjects

IClassFactory ::LockServer

Helpers d’implémentation de serveur hors processus