menangani atribut
Atribut [handle] menentukan jenis handel yang ditentukan pengguna atau "disesuaikan".
typedef [handle] typename;
handle_t __RPC_USER typename_bind (typename);
void __RPC_USER typename_unbind (typename, handle_t);
-
typename
-
Menentukan nama jenis handel pengikatan yang ditentukan pengguna.
Handel yang ditentukan pengguna memungkinkan pengembang untuk merancang handel yang bermakna bagi aplikasi. Handel yang ditentukan pengguna hanya dapat ditentukan dalam deklarasi jenis, bukan dalam deklarator fungsi.
Parameter jenis yang ditentukan oleh atribut [handle] digunakan untuk menentukan pengikatan untuk panggilan dan ditransmisikan ke prosedur yang disebut.
Pengguna harus menyediakan rutinitas pengikatan dan unbinding untuk mengonversi antara jenis handel primitif dan yang ditentukan pengguna. Mengingat handel typename yang ditentukan pengguna, pengguna harus menyediakan typename_bind dan typename_unbind rutin. Misalnya, jika jenis handel yang ditentukan pengguna diberi nama MYHANDLE, rutinitas diberi nama MYHANDLE_bind dan MYHANDLE_unbind.
Jika berhasil, rutin typename_bind harus mengembalikan handel pengikatan primitif yang valid. Jika tidak berhasil, rutinitas harus mengembalikan NULL. Jika rutinitas mengembalikan NULL, rutin typename_unbind tidak akan dipanggil. Jika rutinitas pengikatan mengembalikan handel pengikatan yang tidak valid berbeda dari NULL, perilaku stub tidak terdefinisi.
Ketika prosedur jarak jauh memiliki handel yang ditentukan pengguna sebagai parameter atau sebagai handel implisit, rintangan klien memanggil rutinitas pengikatan sebelum memanggil prosedur jarak jauh. Rintangan klien memanggil rutinitas yang tidak mengikat setelah panggilan jarak jauh.
Di DCE IDL, parameter dengan atribut [handle] harus muncul sebagai parameter pertama dalam daftar argumen prosedur jarak jauh. Parameter berikutnya, termasuk atribut [handel] lainnya, diperlakukan sebagai parameter biasa. Microsoft mendukung ekstensi ke DCE IDL yang memungkinkan parameter [handle] yang ditentukan pengguna muncul di posisi selain parameter pertama.
typedef [handle] struct
{
char machine[8];
char nmpipe[256];
} h_service;
handle_t __RPC_USER h_service_bind(h_service);
void __RPC_USER h_service_unbind(h_service, handle_t);