CoReleaseServerProcess
Decrements
the global per-process reference count
ULONG CoReleaseServerProcess(void);
Return Values
S_OK
The CLSID was
retrieved successfully.
Remarks
Servers can
call CoReleaseServerProcess to decrement a global per-process reference
count incremented through a call to CoAddRefServerProcess
When that
count reaches zero, OLE automatically calls CoSuspendClassObjects
The simplest
way for a local server application to make use of these API functions is to
call CoAddRefServerProcess in the constructor for each of its instance
objects, and in each of its IClassFactory::LockServer methods when the fLock
parameter is TRUE. The server application should also call CoReleaseServerProcess
in the destruction of each of its instance objects, and in each of its IClassFactory::LockServer
methods when the fLock parameter is FALSE. Finally, the server
application must check the return code from CoReleaseServerProcess; if
it returns 0, the server application should initiate its cleanup. This
typically means that a server with multiple threads should signal its various
threads to exit their message loops and call CoRevokeClassObject and CoUninitialize.
If these APIs
are used at all, they must be called in both the object instances and the LockServer
method, otherwise the server application may be shutdown prematurely.
In-process Servers typically should not call CoAddRefServerProcess or CoReleaseServerProcess.
See Also