atribut pipa
Konstruktor jenis pipa memungkinkan untuk mengirimkan aliran data yang ditik terbuka di seluruh panggilan prosedur jarak jauh.
typedef pipe element-type pipe-declarator;
-
jenis elemen
-
Menentukan ukuran elemen tunggal dalam buffer transfer. Jenis elemen dapat berupa jenis dasar, predefined_type, struct, enum 32b, atau pengidentifikasi jenis. Beberapa pembatasan berlaku untuk element_types, seperti yang dijelaskan dalam Keterangan, di bawah ini.
-
deklarator pipa
-
Menentukan satu atau beberapa pengidentifikasi atau penunjuk ke pengidentifikasi. Pisahkan beberapa deklarator dengan koma.
Anda dapat menggunakan konstruktor jenis pipa untuk mengirimkan data ke kedua arah. Parameter pipa [in] memungkinkan server untuk menarik aliran data dari klien selama panggilan prosedur jarak jauh. Parameter alur [out] memungkinkan server untuk mendorong aliran data kembali ke klien. Anda menyediakan rutinitas sisi klien untuk mendorong dan menarik aliran data dan mengalokasikan buffer global untuk data. Klien dan server stub rutin marshal dan data unmarshal dan meneruskan referensi ke buffer kembali ke aplikasi.
Pembatasan berikut berlaku untuk pipa:
- Elemen pipe tidak boleh atau berisi pointer, array yang sesuai atau bervariasi, handel, atau handel konteks. Selain itu, dalam implementasi pipa Microsoft, elemen pipa tidak boleh atau berisi gabungan, enum 16b, atau __int3264.
- Anda tidak dapat menerapkan atribut [transmit_as], [represent_as], [wire_marshal], atau [user_marshal] ke jenis pipa atau ke jenis elemen.
- Jenis pipa tidak dapat menjadi anggota struktur atau union, target pointer, atau jenis dasar array.
- Jenis data yang dinyatakan sebagai jenis pipa hanya dapat digunakan sebagai parameter panggilan jarak jauh.
- Anda dapat meneruskan parameter pipa ke arah berdasarkan nilai atau berdasarkan referensi ([ref] pointer). Namun Anda tidak dapat menerapkan atribut [ptr] ke pipa yang diteruskan oleh referensi. Anda tidak dapat menentukan parameter pipa dengan [unik] atau penunjuk penuh, terlepas dari arahnya.
- Anda tidak dapat menggunakan pipa di antarmuka[objek].
- Anda tidak dapat menerapkan atribut [idempotent] ke rutinitas yang memiliki parameter pipa.
- Anda tidak dapat menggunakan atribut serialisasi, [encode] dan [dekode] dengan pipa.
- Anda tidak dapat menggunakan handel otomatis, baik secara default, atau dengan atribut [auto_handle] , dengan pipa.
Catatan
Pengkompilasi MIDL hanya mendukung pipa dalam mode /Oif .
Untuk informasi selengkapnya tentang menerapkan rutinitas dengan parameter pipa, lihat Pipa di Panduan dan Referensi Programmer RPC.
typedef pipe unsigned char UCHAR_PIPE1, UCHAR_PIPE2;
//SIMPLE_STRUCT defined elsewhere
typedef pipe SIMPLE_STRUCT SIMPLE_STRUCT_PIPE;