Bagikan melalui


Fungsi CoGetMarshalSizeMax (combaseapi.h)

Mengembalikan batas atas pada jumlah byte yang diperlukan untuk marshal penunjuk antarmuka yang ditentukan ke objek yang ditentukan.

Sintaks

HRESULT CoGetMarshalSizeMax(
  [out]          ULONG     *pulSize,
  [in]           REFIID    riid,
  [in]           LPUNKNOWN pUnk,
  [in]           DWORD     dwDestContext,
  [in, optional] LPVOID    pvDestContext,
  [in]           DWORD     mshlflags
);

Parameter

[out] pulSize

Penunjuk ke nilai terikat atas pada ukuran, dalam byte, paket data yang akan ditulis ke aliran marshaling. Jika parameter ini adalah 0, ukuran paket tidak diketahui.

[in] riid

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

[in] pUnk

Penunjuk ke antarmuka yang akan dijadikan marshal. Antarmuka ini harus berasal dari antarmuka IUnknown .

[in] dwDestContext

Konteks tujuan di mana antarmuka yang ditentukan akan dilepaskan namanya. Nilai untuk dwDestContext berasal dari enumerasi MSHCTX.

[in, optional] pvDestContext

Parameter ini dicadangkan dan harus NULL.

[in] mshlflags

Menunjukkan apakah data yang akan di-marshalasi akan ditransmisikan kembali ke proses klien kasus normal atau ditulis ke tabel global, di mana data tersebut dapat diambil oleh beberapa klien. Nilai berasal dari enumerasi MSHLFLAGS.

Nilai kembali

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

Menampilkan kode Deskripsi
S_OK
Batas atas berhasil dikembalikan.
CO_E_NOTINITIALIZED
Sebelum fungsi ini dapat dipanggil, fungsi CoInitialize atau OleInitialize harus dipanggil.

Keterangan

Fungsi ini melakukan tugas-tugas berikut:

  1. Mengkueri objek untuk penunjuk IMarshal atau, jika objek tidak mengimplementasikan IMarshal, mendapatkan penunjuk ke marshaler standar COM.
  2. Menggunakan penunjuk yang diperoleh dalam item sebelumnya, memanggil IMarshal::GetMarshalSizeMax.
  3. Menambahkan ke nilai yang dikembalikan oleh panggilan ke GetMarshalSizeMax ukuran header data marshaling dan, mungkin, bahwa dari proxy CLSID untuk mendapatkan ukuran maksimum dalam byte dari jumlah data yang akan ditulis ke aliran marshaling.
Anda tidak secara eksplisit memanggil fungsi ini kecuali Anda mengimplementasikan IMarshal, dalam hal ini stub marshaling Anda harus memanggil fungsi ini untuk mendapatkan ukuran paket data yang benar untuk dirusak.

Nilai yang dikembalikan oleh metode ini dijamin valid hanya selama status internal objek yang di-marshal tidak berubah. Oleh karena itu, marshaling aktual harus dilakukan segera setelah fungsi ini kembali, atau stub menjalankan risiko bahwa objek, karena beberapa perubahan status, mungkin memerlukan lebih banyak memori untuk marshal daripada yang ditunjukkan awalnya.

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::GetMarshalSizeMax