Atribut user_marshal

Atribut [ user_marshal] adalah atribut jenis ACF yang mirip dengan sintaks [ represent_as]. Seperti halnya atribut IDL, [ wire_marshal], ia menawarkan cara yang lebih efisien untuk marshal data di seluruh jaringan. Sebagai atribut ACF, [user_marshal] memungkinkan Anda marshal jenis data kustom yang tidak diketahui oleh MIDL. Setiap jenis khusus aplikasi memiliki jenis yang dapat ditransmisikan yang sesuai yang menentukan representasi kawat.

Jenis khusus aplikasi Anda bisa menjadi jenis sederhana, komposit, atau penunjuk. Pembatasan utama adalah bahwa instans jenis harus memiliki ukuran memori tetap dan terdefinisi dengan baik. Jika ukuran instans jenis Anda perlu berubah, gunakan bidang penunjuk daripada array yang sesuai. Atau, Anda dapat menentukan penunjuk ke jenis yang dapat diubah.

Seperti atribut [wire_marshal] , Anda menyediakan rutinitas untuk ukuran, marshaling, unmarshaling, dan freeing pass. Tabel berikut ini menjelaskan empat nama rutin yang disediakan pengguna. Jenisnya <> adalah jenis pengguna yang ditentukan dalam definisi jenis [user_marshal].

Rutin Deskripsi
<jenis>_UserSize Mengukur buffer data RPC sebelum marshaling di sisi klien atau server.
<jenis>_UserMarshal Marshals data di sisi klien atau server.
<jenis>_UserUnmarshal Membatalkan nama data di sisi klien atau server.
<jenis>_UserFree Membebaskan data di sisi server.

 

Rutinitas yang disediakan pengguna ini disediakan oleh klien atau aplikasi server, berdasarkan atribut arah.

Jika parameternya adalah [ in] saja, klien mengirimkan ke server. Klien memerlukan <fungsi jenis>_UserSize dan <jenis>_UserMarshal . Server memerlukan <jenis>_UserUnmarshal dan <jenis>_UserFree fungsi.

Untuk parameter [ out]-only, server mengirimkan ke klien. Server memerlukan <fungsi jenis>_UserSize dan <jenis>_UserMarshal , sementara klien memerlukan <fungsi jenis>_UserMarshal .

Atribut wire_marshal

Aturan Marsekal untuk marshal pengguna dan wire_marshal

user_marshal

wire_marshal

NdrGetUserMarshalInfo