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,則伺服器應用程式應該起始其清除,這通常是針對具有多個線程的伺服器,通常表示應該發出各種線程的訊號以結束其訊息迴圈,並呼叫 CoRevokeClassObject 和 CoUninitialize。
如果完全使用這些函式,則必須在物件實例和 LockServer 方法中呼叫它們,否則伺服器應用程式可能會提前關閉。 同進程伺服器通常不應該呼叫 CoAddRefServerProcess 或 CoReleaseServerProcess。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | combaseapi.h (包含 Objbase.h) |
程式庫 | Ole32.lib |
Dll | Ole32.dll |