atribut transmit_as

Atribut [transmit_as] menginstruksikan pengkompilasi untuk mengaitkan type-id*,* yang merupakan jenis yang disajikan yang dimanipulasi klien dan aplikasi server, dengan jenis xmit-type yang ditransmisikan.

typedef [transmit_as(xmit-type) [[ , type-attribute-list ]] ] type-specifier declarator-list; 

void __RPC_USER type-id_to_xmit (
  type-id __RPC_FAR *,
  xmit-type __RPC_FAR * __RPC_FAR *);
void __RPC_USER type-id_from_xmit (
  xmit-type __RPC_FAR *,
  type-id __RPC_FAR *);
void __RPC_USER type-id_free_inst (
  type-id __RPC_FAR *);
void __RPC_USER type-id_free_xmit (
  xmit-type__RPC_FAR *);

Parameter

jenis xmit

Menentukan jenis data yang ditransmisikan antara klien dan server.

type-attribute-list

Menentukan satu atau beberapa atribut yang berlaku untuk jenis tersebut. Atribut jenis yang valid termasuk [handle], [switch_type]; atribut pointer [ref], [unique], atau [ptr]; dan atribut penggunaan [string] dan [abaikan]. Pisahkan beberapa atribut dengan koma.

type-specifier

Menentukan jenis dasar, struct, union, enum type, atau type identifier. Spesifikasi penyimpanan opsional dapat mendahului penentu jenis.

daftar deklarator

Menentukan deklarator C standar, seperti pengidentifikasi, deklarator pointer, dan deklarator array. Untuk informasi selengkapnya, lihat Array dan Sized-Pointer Atribut, array, dan Array dan Pointer. Daftar deklarator terdiri dari satu atau beberapa deklarator yang dipisahkan oleh koma. Deklarator parameter dalam deklarator fungsi, seperti nama parameter, bersifat opsional.

type-id

Menentukan nama jenis data yang disajikan ke aplikasi klien dan server.

Keterangan

Untuk menggunakan atribut [transmit_as] , pengguna harus menyediakan rutinitas yang mengonversi data antara jenis yang disajikan dan yang dikirimkan; rutinitas ini juga harus membebaskan memori yang digunakan untuk menyimpan data yang dikonversi. Atribut [transmit_as] menginstruksikan rintangan untuk memanggil rutinitas konversi yang disediakan pengguna.

Jenis xmit yang ditransmisikan harus diselesaikan ke jenis dasar MIDL, jenis yang telah ditentukan sebelumnya, atau pengidentifikasi jenis. Untuk informasi selengkapnya, lihat Jenis Dasar MIDL.

Pengguna harus menyediakan rutinitas berikut.

Nama rutin Deskripsi
type-id**_to_xmit** Mengonversi data dari jenis yang disajikan ke jenis yang dikirimkan. Rutinitas ini mengalokasikan memori untuk jenis yang dikirimkan dan untuk data apa pun yang dirujuk oleh pointer dalam jenis yang dikirimkan.
type-id**_from_xmit** Mengonversi data dari jenis yang dikirimkan ke jenis yang disajikan. Rutinitas ini bertanggung jawab untuk mengalokasikan memori untuk data yang direferensikan oleh pointer dalam jenis yang disajikan. RPC mengalokasikan memori untuk jenis itu sendiri.
type-id**_free_inst** Mengosongkan memori yang dialokasikan untuk data yang direferensikan oleh pointer dalam jenis yang disajikan. RPC membebaskan memori untuk jenis itu sendiri.
type-id**_free_xmit** Membebaskan penyimpanan yang digunakan oleh penelepon untuk jenis yang dikirimkan dan untuk data yang dirujuk oleh pointer dalam jenis yang dikirimkan.

 

 

Stub klien memanggil type-id**_to_xmit** untuk mengalokasikan ruang untuk jenis yang dikirimkan dan untuk menerjemahkan data ke dalam objek jenis xmit-type. Stub server mengalokasikan ruang untuk jenis data asli dan memanggil type-id**_from_xmit** untuk menerjemahkan data dari jenis yang dikirimkan ke jenis yang disajikan.

Setelah kembali dari kode aplikasi, stub server memanggil type-id**_free_inst** untuk membatalkan alokasi penyimpanan untuk type-id di sisi server. Stub klien memanggil type-id**_free_xmit** untuk membatalkan alokasi penyimpanan jenis xmit di sisi klien.

Jenis berikut tidak boleh memiliki atribut [transmit_as ]:

  • Handel konteks (jenis dengan atribut jenis [context_handle] dan jenis yang digunakan sebagai parameter dengan atribut [context_handle ])
  • Jenis yang merupakan pipa atau berasal dari pipa
  • Jenis data yang digunakan sebagai jenis dasar definisi pipa
  • Parameter yang merupakan penunjuk atau mengatasi penunjuk
  • Parameter yang sesuai, bervariasi, atau terbuka array
  • Struktur yang berisi array yang sesuai
  • Jenis yang telah ditentukan sebelumnya handle_t, batal

Jenis yang dikirimkan harus sesuai dengan batasan berikut:

  • Mereka tidak boleh pointer atau penunjuk kontainer.
  • Mereka tidak boleh pipa atau berisi pipa.

Contoh

typedef struct _TREE_NODE_TYPE 
{ 
    unsigned short data; 
    struct _TREE_NODE_TYPE * left; 
    struct _TREE_NODE_TYPE * right; 
} TREE_NODE_TYPE; 
 
typedef [transmit_as(TREE_XMIT_TYPE)] TREE_NODE_TYPE * TREE_TYPE; 
 
void __RPC_USER TREE_TYPE_to_xmit( 
    TREE_TYPE __RPC_FAR * , 
    TREE_XMIT_TYPE __RPC_FAR * __RPC_FAR *); 
 
void __RPC_USER TREE_TYPE_from_xmit ( 
    TREE_XMIT_TYPE __RPC_FAR *, 
    TREE_TYPE __RPC_FAR *); 
 
void __RPC_USER TREE_TYPE_free_inst( 
    TREE_TYPE __RPC_FAR *); 
 
void __RPC_USER TREE_TYPE_free_xmit( 
    TREE_XMIT_TYPE __RPC_FAR *);

Lihat juga

Array

Jenis Dasar MIDL

context_handle

Enum

Menangani

handle_t

File Definisi Antarmuka (IDL)

Mengabaikan

Ptr

Ref

string

struktur

switch_type

typedef

union

Unik

batal