Fungsi CoGetStandardMarshal (combaseapi.h)

Membuat objek marshaling default, atau standar dalam proses klien atau proses server, tergantung pada pemanggil, dan mengembalikan pointer ke implementasi IMarshal objek tersebut.

Sintaks

HRESULT CoGetStandardMarshal(
  [in]           REFIID    riid,
  [in]           LPUNKNOWN pUnk,
  [in]           DWORD     dwDestContext,
  [in, optional] LPVOID    pvDestContext,
  [in]           DWORD     mshlflags,
  [out]          LPMARSHAL *ppMarshal
);

Parameter

[in] riid

Referensi ke pengidentifikasi antarmuka yang penunjuknya akan dijadikan marshal. Antarmuka ini harus berasal dari antarmuka IUnknown .

[in] pUnk

Penunjuk ke antarmuka yang akan dinamai marshal.

[in] dwDestContext

Konteks tujuan di mana antarmuka yang ditentukan tidak akan diubah. Nilai berasal dari enumerasi MSHCTX. Unmarshaling dapat terjadi baik di apartemen lain dari proses saat ini (MSHCTX_INPROC) atau dalam proses lain pada komputer yang sama dengan proses saat ini (MSHCTX_LOCAL).

[in, optional] pvDestContext

Parameter ini dicadangkan dan harus NULL.

[in] mshlflags

Menunjukkan apakah data yang akan dijadikan marsekal akan ditransmisikan kembali ke proses klien (kasus normal) atau ditulis ke tabel global tempat data dapat diambil oleh beberapa klien. Nilai berasal dari enumerasi MSHLFLAGS .

[out] ppMarshal

Alamat variabel pointer IMarshal* yang menerima penunjuk antarmuka ke marshaler standar.

Nilai kembali

Fungsi ini dapat mengembalikan nilai pengembalian standar E_FAIL, E_OUTOFMEMORY, dan E_UNEXPECTED, serta nilai berikut.

Menampilkan kode Deskripsi
S_OK
Instans IMarshal berhasil dikembalikan.
CO_E_NOTINITIALIZED
Sebelum fungsi ini dapat dipanggil, fungsi CoInitialize atau OleInitialize harus dipanggil pada utas saat ini.

Keterangan

Fungsi CoGetStandardMarshal membuat objek marshaling default, atau standar dalam proses klien atau proses server, karena mungkin diperlukan, dan mengembalikan penunjuk IMarshal objek tersebut ke pemanggil. Jika Anda menerapkan IMarshal, Anda mungkin ingin implementasi Anda memanggil CoGetStandardMarshal sebagai cara mendelegasikan ke implementasi default COM konteks tujuan apa pun yang tidak sepenuhnya Anda pahami atau ingin tangani. Jika tidak, Anda dapat mengabaikan fungsi ini, yang dipanggil COM sebagai bagian dari prosedur marshaling internalnya.

Ketika pustaka COM dalam proses klien menerima penunjuk antarmuka marshaled, ia mencari CLSID untuk digunakan dalam membuat proksi untuk tujuan membatalkan nama paket. Jika paket tidak berisi CLSID untuk proksi, COM memanggil CoGetStandardMarshal, melewati nilai pUnkNULL. Fungsi ini membuat proksi standar dalam proses klien dan mengembalikan pointer ke implementasi IMarshal proksi tersebut. COM menggunakan pointer ini untuk memanggil CoUnmarshalInterface untuk mengambil pointer ke antarmuka yang diminta.

Jika implementasi IMarshal aplikasi server OLE Anda memanggil CoGetStandardMarshal, Anda harus meneruskan IID (riid), dan pointer ke (pUnk), antarmuka yang diminta.

Fungsi ini melakukan tugas-tugas berikut:

  1. Menentukan apakah pUnk ADALAH NULL.
  2. Jika pUnk adalah NULL, membuat proksi antarmuka standar dalam proses klien untuk riid yang ditentukan dan mengembalikan penunjuk IMarshal proksi.
  3. Jika pUnk bukan NULL, memeriksa untuk melihat apakah marshaler untuk objek sudah ada, membuat yang baru jika perlu, dan mengembalikan penunjuk IMarshal marshaler .

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

IMarshal