Mendapatkan Pointer ke Objek

Karena COM tidak memiliki model kelas yang ketat, ada empat cara agar klien dapat membuat instans atau mendapatkan penunjuk ke antarmuka pada objek:

  • Panggil fungsi pustaka COM yang membuat objek dari jenis yang telah ditentukan; artinya, fungsi akan mengembalikan penunjuk hanya ke satu antarmuka tertentu untuk kelas objek tertentu.
  • Panggil fungsi pustaka COM yang dapat membuat objek berdasarkan pengidentifikasi kelas (CLSID) dan yang mengembalikan semua jenis penunjuk antarmuka yang diminta.
  • Panggil metode dari beberapa antarmuka yang membuat objek lain (atau tersambung ke yang sudah ada) dan mengembalikan penunjuk antarmuka pada objek terpisah tersebut.
  • Terapkan objek dengan antarmuka tempat objek lain meneruskan penunjuk antarmuka mereka ke klien secara langsung.

Untuk informasi tentang mendapatkan penunjuk ke antarmuka lain pada objek setelah Anda memiliki yang pertama, lihat QueryInterface: Menavigasi di Objek.

Membuat Objek Dari Jenis yang Telah Ditentukan

Ada banyak fungsi COM, seperti CoGetMalloc, yang mengembalikan penunjuk ke implementasi antarmuka tertentu. (CoGetMalloc mengambil pointer ke alokator memori COM standar.) Sebagian besar adalah fungsi pembantu, dan sebagian besar fungsi ini dijelaskan di bagian referensi dokumentasi ini, di bawah area tertentu yang terkait dengannya, seperti penyimpanan atau transfer data.

Membuat Objek Berdasarkan CLSID

Ada beberapa fungsi yang, mengingat CLSID, klien dapat memanggil untuk membuat instans objek dan mendapatkan penunjuk ke sana. Semua fungsi ini didasarkan pada fungsi CoGetClassObject, yang membuat objek kelas dan memasok pointer ke antarmuka yang memungkinkan Anda membuat instans kelas tersebut. Meskipun harus ada informasi yang mengatakan sistem mana yang berada di server, tidak perlu informasi tersebut terkandung dalam klien. Klien hanya perlu tahu CLSID dan tidak pernah jalur absolut kode server. Untuk informasi selengkapnya, lihat Membuat Objek Melalui Objek Kelas.

Mengembalikan Pointer ke Objek Terpisah

Di antara banyak metode antarmuka yang mengembalikan penunjuk ke objek terpisah adalah beberapa yang membuat dan mengembalikan penunjuk ke objek enumerator, yang memungkinkan Anda menentukan berapa banyak item dari jenis tertentu yang dipertahankan objek. COM mendefinisikan antarmuka untuk menghitung berbagai item, seperti string, struktur penting, moniker, dan penunjuk antarmuka IUnknown. Cara umum untuk membuat instans enumerator dan mendapatkan pointer ke antarmukanya adalah dengan memanggil metode dari antarmuka lain. Misalnya, antarmuka IDataObject mendefinisikan dua metode, EnumDAdvise dan EnumFormatEtc, yang mengembalikan pointer ke antarmuka pada dua objek enumerasi yang berbeda. Ada banyak contoh lain dalam COM metode yang mengembalikan penunjuk ke objek, seperti antarmuka dokumen majemuk OLE IOleObject::GetClientSite, yang, ketika dipanggil pada objek yang disematkan atau ditautkan, mengembalikan pointer ke implementasi objek kontainer IOleClientSite.

Menerapkan Objek untuk Meneruskan Penunjuk Antarmuka Langsung ke Klien

Ketika dua objek, seperti kontainer dokumen gabungan OLE dan server, membutuhkan komunikasi dua arah, masing-masing mengimplementasikan objek yang berisi metode antarmuka di mana ia dapat meneruskan penunjuk antarmuka ke objek lain. Objek penerapan, yang juga merupakan klien objek yang dibuat, kemudian dapat memanggil metode dan mendapatkan pointer yang diteruskan.

Klien dan Server COM

Tanggung Jawab Server COM