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 |