共用方式為


CoAddRefServerProcess 函式 (combaseapi.h)

遞增全域每個進程參考計數。

Syntax

ULONG CoAddRefServerProcess();

傳回值

目前的參考計數。

備註

伺服器可以呼叫 CoAddRefServerProcess 來遞增全域每個進程參考計數。 此函式特別適用於使用多線程實作的伺服器,不論是多 Apartmented 或 free-threaded。 這些類型的伺服器必須協調決策,以在多個線程之間關閉啟用要求。 呼叫 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)
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

CoReleaseServerProcess

IClassFactory::LockServer

跨進程伺服器實作協助程式