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:
- 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).
- Menggunakan penunjuk antarmuka IMarshal mana pun yang diperolehnya, fungsi kemudian memanggil IMarshal::D isconnectObject untuk memutuskan semua klien yang tidak diproses.
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 |