Bagikan melalui


Fungsi CoDisconnectObject (combaseapi.h)

Memutuskan semua koneksi proses jarak jauh yang dipertahankan atas nama semua penunjuk antarmuka yang menunjuk ke objek tertentu.

Hanya proses yang benar-benar mengelola objek yang harus memanggil CoDisconnectObject.

Sintaks

HRESULT CoDisconnectObject(
  [in] LPUNKNOWN pUnk,
  [in] DWORD     dwReserved
);

Parameter

[in] pUnk

Pointer ke antarmuka apa pun yang berasal dari IUnknown pada objek yang akan terputus.

[in] dwReserved

Parameter ini dicadangkan dan harus 0.

Nilai kembali

Fungsi ini mengembalikan S_OK untuk menunjukkan bahwa semua koneksi ke proses jarak jauh berhasil dihapus.

Keterangan

Fungsi CoDisconnectObject memungkinkan server untuk memutuskan sambungan semua klien eksternal dengan benar ke objek yang ditentukan oleh pUnk.

Ini melakukan tugas-tugas berikut:

  1. Memeriksa untuk melihat apakah objek yang akan diputus mengimplementasikan antarmuka IMarshal . Jika demikian, ia mendapatkan penunjuk ke antarmuka tersebut; jika tidak, ia mendapatkan penunjuk ke implementasi IMarshal marshaler standar (yaitu, COM).
  2. Menggunakan penunjuk antarmuka IMarshal mana pun yang diperolehnya, fungsi kemudian memanggil IMarshal::D isconnectObject untuk memutuskan semua klien yang tidak diproses.
Klien objek tidak memanggil CoDisconnectObject untuk memutuskan sambungan dirinya dari server (klien harus menggunakan IUnknown::Release untuk tujuan ini). Sebaliknya, server OLE memanggil CoDisconnectObject untuk secara paksa memutuskan klien objek, biasanya sebagai respons terhadap pengguna yang menutup aplikasi server.

Demikian pula, kontainer OLE yang mendukung tautan eksternal ke objek yang disematkan dapat memanggil CoDisconnectObject untuk menghancurkan tautan tersebut. Sekali lagi, panggilan ini biasanya dilakukan sebagai respons terhadap pengguna yang menutup aplikasi. Kontainer harus terlebih dahulu memanggil IOleObject::Close untuk semua objek OLE-nya, yang masing-masing harus mengirim pemberitahuan IAdviseSink::OnClose ke berbagai klien mereka. Kemudian kontainer dapat memanggil CoDisconnectObject untuk menutup koneksi yang ada.

CoDisconnectObject tidak selalu segera memutuskan sambungan klien yang tidak diproses. Jika ada panggilan marshaled yang tertunda pada objek server, CoDisconnectObject memutuskan sambungan objek hanya ketika panggilan tersebut telah kembali. Sementara itu, CoDisconnectObject menetapkan bendera yang menyebabkan panggilan marshaled baru kembali CO_E_OBJNOTCONNECTED.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows 2000 Server [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header combaseapi.h (termasuk Objbase.h)
Pustaka Ole32.lib
DLL Ole32.dll

Lihat juga

IAdviseSink::Onclose

IMarshal::D isconnectObject

IOleObject::Close