Bagikan melalui


Atribut user_marshal

Atribut [ user_marshal] adalah atribut jenis ACF yang mirip dalam sintaks dengan [ represent_as]. Seperti atribut IDL, [ wire_marshal], ia menawarkan cara yang lebih efisien untuk marshal data di seluruh jaringan. Sebagai atribut ACF, [user_marshal] memungkinkan Anda membuat 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 diubah, gunakan bidang penunjuk daripada array yang sesuai. Atau, Anda dapat menentukan penunjuk ke jenis yang dapat diubah.

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

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

 

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

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

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

Atribut wire_marshal

Aturan Marshaling untuk marshal pengguna dan wire_marshal

user_marshal

wire_marshal

NdrGetUserMarshalInfo