Funzione CoAddRefServerProcess (combaseapi.h)

Incrementa un conteggio di riferimento globale per processo.

Sintassi

ULONG CoAddRefServerProcess();

Valore restituito

Numero di riferimenti corrente.

Commenti

I server possono chiamare CoAddRefServerProcess per incrementare un numero di riferimenti globale per processo. Questa funzione è particolarmente utile per i server implementati con più thread, multi-apartmented o thread gratuiti. I server di questi tipi devono coordinare la decisione di arrestare le richieste di attivazione in più thread. La chiamata a CoAddRefServerProcess incrementa un conteggio di riferimento globale per processo e chiama coReleaseServerProcess decrement che conta.

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 nella distruzione di ognuno dei relativi oggetti di istanza e in ognuno dei relativi metodi LockServer quando il parametro fLock è FALSE. Infine, l'applicazione server deve prestare attenzione al codice restituito da CoReleaseServerProcess e, se restituisce 0, l'applicazione server deve avviare la pulizia, che, per un server con più thread, in genere significa che deve segnalare i vari thread per uscire dai cicli dei messaggi e chiamare CoRevokeClassObject e CoUninitialize.

Se queste funzioni 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

CoReleaseServerProcess

IClassFactory::LockServer

Helper di implementazione del server non elaborato