CoReleaseServerProcess 函式 (combaseapi.h)
遞減全域每個進程參考計數。
Syntax
ULONG CoReleaseServerProcess();
傳回值
如果伺服器應用程式應該起始清除,則函式會傳回 0;否則,函式會傳回非零值。
備註
伺服器可以呼叫 CoReleaseServerProcess ,以遞減透過 對 CoAddRefServerProcess 的呼叫遞增的全域個別進程參考計數。
當計數達到零時,OLE 會自動呼叫 CoSuspendClassObjects,這可防止新的啟用要求傳入。 這可讓伺服器從其各種線程取消註冊其類別物件,而不必擔心另一個啟用要求可能會發生。 新的啟用要求會導致啟動本機伺服器進程的新實例。
使用這些函式的本機伺服器應用程式最簡單的方式,就是呼叫每個實例物件的建構函式中的CoAddRefServerProcess,並在 fLock 參數為 TRUE 時,在每個 IClassFactory::LockServer 方法中呼叫 CoAddRefServerProcess。 當 fLock 參數為 FALSE 時,伺服器應用程式也應該在其每個實例物件的解構函式中呼叫 CoReleaseServerProcess,並在其每個 IClassFactory::LockServer 方法中呼叫 CoReleaseServerProcess。 最後,伺服器應用程式必須檢查 來自 CoReleaseServerProcess 的傳回碼;如果傳回 0,伺服器應用程式應該起始其清除。 這通常表示具有多個線程的伺服器應該發出各種線程的訊號,以結束其訊息迴圈,並呼叫 CoRevokeClassObject 和 CoUninitialize。
如果完全使用這些 API,則必須在物件實例和 LockServer 方法中呼叫它們,否則伺服器應用程式可能會提前關閉。 同進程伺服器通常不應該呼叫 CoAddRefServerProcess 或 CoReleaseServerProcess。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | combaseapi.h (包含 Objbase.h) |
程式庫 | Ole32.lib |
Dll | Ole32.dll |