atribut represent_as
Atribut ACF [represent_as] mengaitkan jenis lokal bernama dalam jenis repr bahasa target dengan jenis transfer bernama-type yang ditransfer antara klien dan server.
typedef [represent_as(repr-type) [[ , type-attribute-list ]] ] named-type;
void __RPC_USER named-type_from_local (
repr-type __RPC_FAR * ,
named-type __RPC_FAR * __RPC_FAR * );
void __RPC_USER named-type_to_local (
named-type __RPC_FAR * ,
repr-type __RPC_FAR * ); void __RPC_USER named-type _free_inst ( named-type __RPC_FAR * ); void __RPC_USER named-type _free_local ( repr-type __RPC_FAR * );
-
jenis-bernama
-
Menentukan jenis data transfer bernama yang ditransfer antara klien dan server.
-
type-attribute-list
-
Menentukan satu atau beberapa atribut yang berlaku untuk jenis tersebut. Pisahkan beberapa atribut dengan koma.
-
jenis repr
-
Menentukan jenis lokal yang diwakili dalam bahasa target yang disajikan ke aplikasi klien dan server.
Saat menggunakan [represent_as], Anda harus menyediakan rutinitas yang mengonversi antara jenis lokal dan transfer dan memori kosong yang digunakan untuk menyimpan data yang dikonversi. Atribut [represent_as] menginstruksikan stub untuk memanggil rutinitas konversi yang disediakan pengguna.
Jenis yang ditransfer bernama-type harus diselesaikan ke jenis dasar MIDL, jenis yang telah ditentukan sebelumnya, atau ke pengidentifikasi jenis. Untuk informasi selengkapnya, lihat Jenis Dasar MIDL.
Anda harus menyediakan rutinitas berikut:
Nama rutin | Deskripsi |
---|---|
named_type**_from_local** | Mengonversi data dari jenis lokal ke jenis jaringan. Rutinitas mengalokasikan memori untuk jenis data jaringan, termasuk memori untuk data apa pun yang dirujuk oleh pointer dalam jenis data jaringan. |
named_type**_to_local** | Mengonversi data dari jenis jaringan ke jenis lokal. Rutinitas bertanggung jawab untuk mengalokasikan memori untuk data yang dirujuk oleh pointer dalam jenis lokal. RPC mengalokasikan memori untuk jenis lokal itu sendiri. |
named_type**_free_local** | Membebaskan memori yang dialokasikan untuk data yang dirujuk oleh pointer dalam jenis lokal. RPC membebaskan memori untuk jenis itu sendiri |
named_type**_free_inst** | Membebaskan memori yang dialokasikan untuk data yang dirujuk oleh pointer dalam jenis jaringan dan untuk jenis jaringan itu sendiri. |
Stub klien memanggil named-type**_from_local** untuk mengalokasikan ruang untuk jenis yang dikirimkan dan untuk menerjemahkan data dari jenis lokal ke jenis jaringan. Stub server mengalokasikan ruang untuk jenis data asli dan panggilan bernama-type**_to_local** untuk menerjemahkan data dari jenis jaringan ke jenis lokal.
Setelah kembali dari kode aplikasi, klien dan server stubs memanggil named-type**_free_inst** untuk membatalkan alokasi penyimpanan untuk jenis jaringan. Stub klien memanggil named-type**_free_local** untuk membatalkan alokasi penyimpanan yang dikembalikan oleh rutinitas.
Jenis berikut tidak boleh memiliki atribut [represent_as] :
- Array yang sesuai, bervariasi, atau sesuai
- Struktur di mana anggota terakhir adalah array yang sesuai (struktur yang sesuai)
- Penunjuk atau jenis yang berisi penunjuk
- Pipa atau jenis yang berisi pipa
- Jenis yang digunakan sebagai jenis dasar untuk pipa
- Jenis yang telah ditentukan sebelumnya handle_t, batal
- Jenis yang memiliki atribut [handle]
//these data types defined in .IDL or elsewhere
typedef struct _lbox
{
long data;
struct _lbox *next;
} lbox;
typedef [ref] lbox *PBOX_LOC;
typedef long LONG4[4];
//in .ACF file :
interface iface
{
typedef [ represent_as(PBOX_LOC) ] LONG4;
}