共用方式為


IMarshal::D isconnectObject 方法 (objidl.h)

釋放物件的所有連接。 對象的伺服器會在關閉之前呼叫對象的這個方法實作。

語法

HRESULT DisconnectObject(
  [in] DWORD dwReserved
);

參數

[in] dwReserved

此參數是保留的,而且必須是 0。

傳回值

如果方法成功,傳回值會S_OK。 否則,它會E_FAIL。

備註

這個方法是在 對象上實作,而不是 Proxy。

來電者附註

當終端使用者強制關閉一或多個實作 IMarshal 物件的 COM 伺服器時,通常會呼叫這個方法。 在關閉之前,伺服器會呼叫 CoDisconnectObject 函式,以釋放其所有執行中物件的外部連線。 不過,對於實作 IMarshal 的每個物件,此函式會呼叫 DisconnectObject ,讓管理自己的封送處理的每個物件可以採取步驟,通知其 Proxy 即將關閉。

實作者的注意事項

做為其正常關機程式代碼的一部分,伺服器應該呼叫 CoDisconnectObject,進而呼叫 DisconnectObject,在每個實作 IMarshal 的執行中物件上。

此方法的任何實作結果應該是讓 Proxy 傳回RPC_E_DISCONNECTED或CO_E_OBJNOTCONNECTED,而不是嘗試將呼叫轉送至原始物件,以回應其用戶端的所有後續呼叫。 用戶端可以終結 Proxy。

如果您要為不可變的物件實作這個方法,例如Moniker,則實作不需要執行任何動作,因為這類物件通常會複製到用戶端的位址空間中。 因此,它們沒有 Proxy 或與原始對象的連接。 如需封送處理不可變物件的詳細資訊,請參閱 IMarshal 主題的一節。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 objidl.h (包含 ObjIdl.h)

另請參閱

CoDisconnectObject

IMarshal