coAddRefServerProcess 函数 (combaseapi.h)

递增全局每进程引用计数。

语法

ULONG CoAddRefServerProcess();

返回值

当前引用计数。

注解

服务器可以调用 CoAddRefServerProcess 来递增每个进程的全局引用计数。 对于使用多个线程(多单元或自由线程)实现的服务器,此函数特别有用。 这些类型的服务器必须协调通过多个线程的激活请求关闭的决定。 调用 CoAddRefServerProcess 会递增每个进程的全局引用计数,而调用 CoReleaseServerProcess 会递减该计数。

当该计数达到零时,OLE 会自动调用 CoSuspendClassObjects,这会阻止新的激活请求传入。 这允许服务器从其各种线程中取消注册其类对象,而无需担心另一个激活请求可能会传入。 新的激活请求会导致启动本地服务器进程的新实例。

本地服务器应用程序使用这些函数的最简单方法是在其每个实例对象的构造函数中调用 CoAddRefServerProcess,并在 fLock 参数为 TRUE 时在其每个 IClassFactory::LockServer 方法中调用 CoAddRefServerProcess。 服务器应用程序还应在销毁其每个实例对象时调用 CoReleaseServerProcess,并在 fLock 参数为 FALSE 时在其每个 LockServer 方法中调用 CoReleaseServerProcess。 最后,服务器应用程序应注意 CoReleaseServerProcess 的返回代码,如果返回 0,则服务器应用程序应启动其清理,对于具有多个线程的服务器,通常意味着它应发出各种线程的信号以退出其消息循环并调用 CoRevokeClassObjectCoUninitialize

如果完全使用这些函数,则必须在对象实例和 LockServer 方法中调用它们,否则服务器应用程序可能会过早关闭。 进程内服务器通常不应调用 CoAddRefServerProcessCoReleaseServerProcess

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 combaseapi.h (包括 Objbase.h)
Library Ole32.lib
DLL Ole32.dll

另请参阅

CoReleaseServerProcess

IClassFactory::LockServer

进程外服务器实现帮助程序