Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk membuat instans handler Anda, jika itu adalah salah satu yang tidak mendapatkan data server tambahan, server harus menerapkan IStdMarshalInfo tetapi bukan IMarshal. IStdMarshalInfo memiliki satu metode, GetClassForHandler, yang mengambil CLSID dari handler objek yang akan digunakan dalam proses tujuan. COM memanggil ini ketika memanggil CoMarshalInterface untuk Anda dan mengaktifkan handler di sisi klien.
Selanjutnya, implementasi server dan handler harus memanggil fungsi CoGetStdMarshalEx. Fungsi ini membuat marshaler standar di setiap sisi (disebut manajer proksi di sisi klien dan manajer stub di sisi server).
Server memanggil CoGetStdMarshalEx, meneruskan bendera SMEXF_SERVER. Ini menciptakan marshaler standar sisi server (manajer stub). Struktur sisi server diperlihatkan dalam ilustrasi berikut:

Struktur Sisi Server
Handler memanggil CoGetStdMarshalEx, meneruskan bendera SMEXF_HANDLER. Ini membuat marshaler standar sisi klien (manajer proksi) dan menggabungkannya dengan handler di sisi klien. Masa pakai keduanya dikelola oleh objek identitas pengontrol (mengimplementasikan IUnknown) yang diterapkan sistem ketika handler memanggil CoGetStdMarshalEx. Struktur sisi klien diperlihatkan dalam ilustrasi berikut.

Struktur Sisi Klien
Seperti yang ditunjukkan pada ilustrasi sebelumnya, handler sebenarnya diapit antara manajer proksi dan identitas/pengontrol yang tidak diketahui. Ini memberikan kontrol sistem atas masa pakai objek sambil memberikan kontrol handler atas antarmuka yang terekspos. Garis putus-putus antara Identity dan Proxy Manager menunjukkan bahwa keduanya berbagi integrasi yang ketat melalui antarmuka privat internal.
Ketika COM memanggil CoUnmarshalInterface untuk klien, COM membuat instans handler, menggabungkannya dengan Identitas. Handler akan membuat marshaler standar (melalui panggilan ke CoGetStdMarshalEx, meneruskan pengontrol yang tidak diketahui yang diterimanya ketika dibuat). Handler tidak mengimplementasikan IMarshal tetapi hanya mengembalikan IMarshal dari marshaler standar. Bahkan jika handler memang mengimplementasikan IMarshal, itu tidak akan dipanggil selama unmarshal.
Jika dua utas secara bersamaan membatalkan nama objek yang sama untuk pertama kalinya, dimungkinkan bagi dua handler untuk dibuat sementara. Satu kemudian akan dirilis.
Topik terkait