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 pointer 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, dengan memberikan CLSID, dapat dipanggil oleh klien untuk membuat sebuah instans objek dan mendapatkan penunjuknya. 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 mengenumerasi berbagai item, seperti string, struktur penting, moniker, dan pointer antarmuka IUnknown. Cara umum untuk membuat instans enumerator dan mendapatkan pointer ke antarmukanya adalah dengan memanggil metode dari antarmuka lain. Misalnya, antarmukaIDataObjectmendefinisikan dua metode, EnumDAdvise dan EnumFormatEtc, yang mengembalikan penunjuk ke antarmuka pada dua objek enumerasi yang berbeda. Ada banyak contoh lain metode dalam COM yang mengembalikan penunjuk ke objek, seperti antarmuka dokumen majemuk OLE IOleObject::GetClientSite, yang ketika dipanggil pada objek yang disematkan atau ditautkan, mengembalikan penunjuk ke implementasi objek kontainer IOleClientSite.
Menjalankan Objek Lewat Mana Penunjuk Antarmuka Dapat Langsung Diteruskan 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.
Topik terkait