Fungsi CoMarshalInterface (combaseapi.h)
Menulis ke dalam aliran data yang diperlukan untuk menginisialisasi objek proksi dalam beberapa proses klien.
Sintaks
HRESULT CoMarshalInterface(
[in] LPSTREAM pStm,
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags
);
Parameter
[in] pStm
Penunjuk ke aliran yang akan digunakan selama marshaling. Lihat IStream.
[in] riid
Referensi ke pengidentifikasi antarmuka yang akan dinamai. Antarmuka ini harus berasal dari antarmuka IUnknown .
[in] pUnk
Penunjuk ke antarmuka yang akan dinamai marshal. Antarmuka ini harus berasal dari antarmuka IUnknown .
[in] dwDestContext
Konteks tujuan di mana antarmuka yang ditentukan tidak akan diubah. Nilai yang mungkin berasal dari enumerasi MSHCTX. Saat ini, unmarshaling dapat terjadi di apartemen lain dari proses saat ini (MSHCTX_INPROC), dalam proses lain pada komputer yang sama dengan proses saat ini (MSHCTX_LOCAL), atau dalam proses pada komputer yang berbeda (MSHCTX_DIFFERENTMACHINE).
[in, optional] pvDestContext
Parameter ini dicadangkan dan harus NULL.
[in] mshlflags
Bendera yang menentukan apakah data yang akan dinamai akan ditransmisikan kembali ke proses klien (kasus umum) atau ditulis ke tabel global, di mana data dapat diambil oleh beberapa klien. Nilai yang mungkin berasal dari enumerasi MSHLFLAGS .
Menampilkan nilai
Fungsi ini dapat mengembalikan nilai pengembalian standar E_FAIL, E_OUTOFMEMORY, dan E_UNEXPECTED, nilai kesalahan akses aliran yang dikembalikan oleh IStream, serta nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
HRESULT berhasil dijadikan marshal. |
|
Fungsi CoInitialize atau OleInitialize tidak dipanggil pada utas saat ini sebelum fungsi ini dipanggil. |
Keterangan
Fungsi CoMarshalInterface marshals antarmuka yang dimaksud oleh riid pada objek yang implementasi IUnknown-nya diacu oleh pUnk. Untuk melakukannya, fungsi CoMarshalInterface melakukan tugas-tugas berikut:
- Mengkueri objek untuk penunjuk ke antarmuka IMarshal . Jika objek tidak mengimplementasikan IMarshal, yang berarti mengandalkan COM untuk memberikan dukungan marshaling, CoMarshalInterface mendapatkan penunjuk ke implementasi default COM dari IMarshal.
- Mendapatkan CLSID proksi objek dengan memanggil IMarshal::GetUnmarshalClass, menggunakan pointer antarmuka IMarshal mana pun yang telah dikembalikan.
- Menulis CLSID proksi ke aliran yang akan digunakan untuk marshaling.
- Marshals penunjuk antarmuka dengan memanggil IMarshal::MarshalInterface.
Jika Anda menerapkan antarmuka COM yang ada atau menentukan antarmuka Anda sendiri menggunakan Microsoft Interface Definition Language (MIDL), proksi dan stub yang dihasilkan MIDL memanggil CoMarshalInterface untuk Anda. Jika Anda menulis proksi dan stub Anda sendiri, kode proksi dan kode stub Anda masing-masing harus memanggil CoMarshalInterface untuk mengarahkan penunjuk antarmuka marshal dengan benar. Memanggil IMarshal langsung dari kode proksi dan stub Anda tidak disarankan.
Jika Anda menulis implementasi IMarshal Anda sendiri, dan proksi Anda memerlukan akses ke objek privat, Anda dapat menyertakan penunjuk antarmuka ke objek tersebut sebagai bagian dari data yang Anda tulis ke aliran. Dalam situasi seperti itu, jika Anda ingin menggunakan implementasi marshaling default COM saat melewati penunjuk antarmuka, Anda dapat memanggil CoMarshalInterface pada objek untuk melakukannya.
Persyaratan
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk