Condividi tramite


Funzione CoReleaseServerProcess (combaseapi.h)

Decrementa il numero di riferimenti globali per processo.

Sintassi

ULONG CoReleaseServerProcess();

Valore restituito

Se l'applicazione server deve avviare la pulizia, la funzione restituisce 0; in caso contrario, la funzione restituisce un valore diverso da zero.

Commenti

I server possono chiamare CoReleaseServerProcess per decrerere un numero di riferimenti globale per processo incrementato tramite una chiamata a CoAddRefServerProcess.

Quando tale conteggio raggiunge zero, OLE chiama automaticamente CoSuspendClassObjects, che impedisce l'arrivo di nuove richieste di attivazione. Ciò consente al server di annullare la registrazione dei relativi oggetti di classe dai vari thread senza preoccuparsi che venga visualizzata un'altra richiesta di attivazione. Le nuove richieste di attivazione comportano l'avvio di una nuova istanza del processo del server locale.

Il modo più semplice per un'applicazione server locale da usare di queste funzioni consiste nel chiamare CoAddRefServerProcess nel costruttore per ognuno dei relativi oggetti di istanza e in ognuno dei relativi metodi IClassFactory::LockServer quando il parametro fLock è TRUE. L'applicazione server deve anche chiamare CoReleaseServerProcess nel distruttore di ognuno dei relativi oggetti di istanza e in ognuno dei relativi metodi IClassFactory::LockServer quando il parametro fLock è FALSE. Infine, l'applicazione server deve controllare il codice restituito da CoReleaseServerProcess; se restituisce 0, l'applicazione server deve avviare la pulizia. Ciò significa in genere che un server con più thread deve segnalare i vari thread per uscire dai cicli dei messaggi e chiamare CoRevokeClassObject e CoUninitialize.

Se queste API vengono usate in tutto, devono essere chiamate sia nelle istanze dell'oggetto che nel metodo LockServer , altrimenti l'applicazione server potrebbe essere arrestata prematuramente. I server in-process in genere non devono chiamare CoAddRefServerProcess o CoReleaseServerProcess.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione combaseapi.h (include Objbase.h)
Libreria Ole32.lib
DLL Ole32.dll

Vedi anche

CoAddRefServerProcess

CoSuspendClassObjects

IClassFactory::LockServer

Helper di implementazione del server non elaborato