Fungsi CoUnmarshalInterface (combaseapi.h)

Menginisialisasi proksi yang baru dibuat menggunakan data yang ditulis ke dalam aliran oleh panggilan sebelumnya ke fungsi CoMarshalInterface , dan mengembalikan penunjuk antarmuka ke proksi tersebut.

Sintaks

HRESULT CoUnmarshalInterface(
  [in]  LPSTREAM pStm,
  [in]  REFIID   riid,
  [out] LPVOID   *ppv
);

Parameter

[in] pStm

Penunjuk ke aliran tempat antarmuka akan dilepaskan.

[in] riid

Referensi ke pengidentifikasi antarmuka yang akan dilepaskan namanya. Untuk IID_NULL, antarmuka yang dikembalikan adalah antarmuka yang ditentukan oleh aliran, objref.iid.

[out] ppv

Alamat variabel pointer yang menerima pointer antarmuka yang diminta dalam riid. Setelah berhasil kembali, *ppv berisi penunjuk antarmuka yang diminta untuk antarmuka yang tidak dinamai.

Nilai kembali

Fungsi ini dapat mengembalikan nilai pengembalian standar E_FAIL, kesalahan yang dikembalikan oleh CoCreateInstance, dan nilai berikut.

Menampilkan kode Deskripsi
S_OK
Penunjuk antarmuka berhasil disembunyikan.
STG_E_INVALIDPOINTER
pStm adalah penunjuk yang tidak valid.
CO_E_NOTINITIALIZED
Fungsi CoInitialize atau OleInitialize tidak dipanggil pada utas saat ini sebelum fungsi ini dipanggil.
CO_E_OBJNOTCONNECTED
Aplikasi objek telah terputus dari sistem jarak jauh (misalnya, sebagai akibat dari panggilan ke fungsi CoDisconnectObject ).
REGDB_E_CLASSNOTREG
Terjadi kesalahan saat membaca database pendaftaran.
E_NOINTERFACE
QueryInterface akhir fungsi ini untuk antarmuka yang diminta dikembalikan E_NOINTERFACE.

Keterangan

Penting  

Catatan Keamanan: Memanggil metode ini dengan data yang tidak tepercaya adalah risiko keamanan. Panggil metode ini hanya dengan data tepercaya.

 
Fungsi CoUnmarshalInterface melakukan tugas-tugas berikut:
  1. Membaca dari aliran CLSID yang akan digunakan untuk membuat instans proksi.
  2. Mendapatkan penunjuk IMarshal ke proksi yang melakukan unmarshaling. Jika objek menggunakan implementasi marshaling default COM, pointer yang diperoleh adalah ke instans objek proksi generik. Jika marshaling terjadi di antara dua utas dalam proses yang sama, penunjuk adalah untuk instans marshaler utas gratis dalam proses. Jika objek menyediakan kode marshaling sendiri, CoUnmarshalInterface memanggil fungsi CoCreateInstance , meneruskan CLSID yang dibacanya dari aliran marshaling. CoCreateInstance membuat instans proksi objek dan mengembalikan penunjuk antarmuka IMarshal ke proksi.
  3. Menggunakan penunjuk antarmuka IMarshal mana pun yang telah diperolehnya, fungsi kemudian memanggil IMarshal::UnmarshalInterface dan, jika sesuai, IMarshal::ReleaseMarshalData.
Pemanggil utama fungsi ini adalah COM itu sendiri, dari dalam proksi antarmuka atau tikungan yang membatalkan nama penunjuk antarmuka. Namun, ada beberapa situasi di mana Anda mungkin memanggil CoUnmarshalInterface. Misalnya, jika Anda menerapkan lonjakan, implementasi Anda akan memanggil CoUnmarshalInterface ketika stub menerima pointer antarmuka sebagai parameter dalam panggilan metode.

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

Lihat juga

CoMarshalInterface

IMarshal::UnmarshalInterface