Bagikan melalui


Microsoft RPC Binding-Handle Extensions

Ekstensi Microsoft ke bahasa IDL mendukung beberapa parameter handel yang muncul di posisi selain parameter pertama, paling kiri, . Langkah-langkah berikut menjelaskan urutan yang dilalui pengkompilasi MIDL untuk menyelesaikan parameter penanganan pengikatan dalam mode kompatibilitas DCE (/osf), dan dalam mode default (Diperluas Microsoft).

Mode kompatibilitas DCE

  • Handel pengikatan yang muncul di posisi pertama.
  • Parameter [in, context_handle] paling kiri.
  • Handel pengikatan implisit yang ditentukan oleh [implicit_handle] atau [auto_handle].
  • Jika tidak ada ACF, default untuk menggunakan [auto_handle].

Mode default

  • Handel pengikatan eksplisit paling kiri.
  • Handel pengikatan implisit yang ditentukan oleh [implicit_handle] atau [auto_handle].
  • Jika tidak ada ACF, default untuk menggunakan [auto_handle].

Pengkompilasi IDL DCE mencari handel pengikatan eksplisit sebagai parameter pertama. Ketika parameter pertama bukan handel pengikatan dan satu atau beberapa handel konteks ditentukan, handel konteks paling kiri digunakan sebagai handel pengikatan. Ketika parameter pertama bukan handel dan tidak ada handel konteks, prosedur menggunakan pengikatan implisit menggunakan atribut ACF [implicit_handle] atau [auto_handle].

Ekstensi Microsoft ke IDL memungkinkan handel pengikatan berada dalam posisi selain parameter pertama. Parameter [in] explicit-handle paling kiri–baik itu handel primitif, terdefinisi programmer, atau konteks–adalah handel pengikatan. Ketika tidak ada parameter handel, prosedur menggunakan pengikatan implisit menggunakan atribut ACF [implicit_handle] atau [auto_handle].

Aturan berikut berlaku untuk mode kompatibilitas DCE (/osf) dan mode default:

  • Pengikatan penanganan otomatis digunakan ketika tidak ada ACF.
  • Handel [in] atau [in, out] eksplisit untuk fungsi individual mendahului pengikatan implisit yang ditentukan untuk antarmuka.
  • Beberapa handel primitif [in] atau [in, out] tidak didukung.
  • Beberapa handel konteks eksplisit [in] atau [in, out] diizinkan.
  • Semua parameter handel yang ditentukan programmer kecuali parameter handle pengikatan diperlakukan sebagai data yang dapat ditransmisikan.

Tabel berikut berisi contoh dan menjelaskan bagaimana handel pengikatan ditetapkan di setiap mode kompilator.

Contoh Deskripsi
void proc1( void );
Tidak ada handel eksplisit yang ditentukan. Handel pengikatan implisit, yang ditentukan oleh [ implicit_handle] atau [ auto_handle], digunakan. Ketika tidak ada ACF, handel otomatis digunakan.
void proc2([in] handle_t H,           [in] short s );
Handel eksplisit jenis handle_t ditentukan. Parameter H adalah handel pengikatan untuk prosedur.
void proc3([in] short s,           [in] handle_t H );
Parameter pertama bukan handel. Dalam mode default, parameter handel paling kiri, H, adalah handel pengikatan. Dalam mode /osf, pengikatan implisit digunakan. Kesalahan dilaporkan karena parameter kedua diharapkan dapat ditransmisikan, dan handle_t tidak dapat ditransmisikan.
typedef [handle] short * MY_HDL;void proc1([in] short s,           [in] MY_HDL H );
Parameter pertama bukan handel. Dalam mode default, parameter handel paling kiri, H, adalah handel pengikatan. Rintangan memanggil rutinitas yang disediakan pengguna MY_HDL_bind dan MY_HDL_unbind. Mode in/osf, pengikatan implisit digunakan. Parameter handel yang ditentukan programmer H diperlakukan sebagai data yang dapat ditransmisikan.
Typedef [handle] short * MY_HDL;void proc1([in] MY_HDL H,            [in] MY_HDL p );
Parameter pertama adalah handel pengikatan. Parameter H adalah parameter handle pengikatan. Parameter handel kedua yang ditentukan programmer diperlakukan sebagai data yang dapat ditransmisikan.
Typedef [context_handle] void * CTXT_HDL;void proc1([in] short s,           [in] long l,           [in] CTXT_HDL H ,           [in] char c);
Handel pengikatan adalah handel konteks. Parameter H adalah handel pengikatan.