Pendeskripsi Header Prosedur
Header telah diperpanjang beberapa kali selama masa pakai mesin NDR. Pengkompilasi saat ini masih menghasilkan header yang berbeda tergantung pada mode pengkompilasi. Namun, header yang lebih baru adalah superset dari yang lebih lama.
Header Lama –Oi
Header memiliki format berikut:
handle_type<1>
Oi_flags<1>
[rpc_flags<4>]
proc_num<2>
stack_size<2>
[explicit_handle_description<>]
Di mana handle_type<1> bisa menjadi salah satu nilai yang diperlihatkan dalam tabel berikut ini.
Hex | Menangani |
---|---|
31 | FC_BIND_GENERIC |
32 | FC_BIND_PRIMITIVE |
33 | FC_AUTO_HANDLE |
34 | FC_CALLBACK_HANDLE |
0 | (handel eksplisit) |
Jika bidang> handle_type<1 bukan nol, maka prosedur menggunakan handel implisit dari jenis yang ditunjukkan. Lihat topik Menangani untuk informasi selengkapnya. Jika bidang handle_type<1> adalah nol, handel yang digunakan untuk pengikatan adalah salah satu parameter prosedur.
Handel eksplisit bisa primitif, generik, dan konteks; yang terakhir memiliki token FC berikut.
Hex | Menangani |
---|---|
30 | FC_BIND_CONTEXT |
Menurut konvensi, jenis handel untuk antarmuka DCOM FC_AUTO_HANDLE.
Bidang Oi_flags<1> adalah masker 8-bit dari bendera berikut.
Hex | Bendera | Arti |
---|---|---|
01 | Oi_FULL_PTR_USED | Menggunakan paket penunjuk lengkap. |
02 | Oi_RPCSS_ALLOC_USED | Menggunakan paket memori RpcSs. |
04 | Oi_OBJECT_PROC | Prosedur dalam antarmuka objek. |
08 | Oi_HAS_RPCFLAGS | Prosedur ini memiliki bendera Rpc nonzero. |
10 | Oi_* | Kelebihan beban. |
20 | Oi_* | Kelebihan beban. |
40 | Oi_USE_NEW_INIT_ROUTINES | Menggunakan rutinitas init Windows NT3.5 Beta2+. |
80 | Tidak terpakai. |
Bendera berikut kelebihan beban.
Hex | Bendera | Arti |
---|---|---|
10 | ENCODE_IS_USED | Hanya digunakan dalam acar. |
20 | DECODE_IS_USED | Hanya digunakan dalam acar. |
10 | Oi_IGNORE_OBJECT_EXCEPTION_HANDLING | Tidak digunakan lagi (OLE lama). |
20 | Oi_HAS_COMM_OR_FAULT | Hanya dalam RPC mentah, [comm _, fault_status]. |
20 | Oi_OBJ_USE_V2_INTERPRETER | Hanya di DCOM, gunakan interpreter –Oif. |
Bidang> rpc_flags<4 menjelaskan cara mengatur bidang RpcFlags struktur RPC_MESSAGE. Bidang ini hanya ada jika bidang Oi_flags<1> memiliki kumpulan Oi_HAD_RPCFLAGS. Jika bidang ini tidak ada, maka bendera RPC untuk prosedur jarak jauh adalah nol.
Nota
Untuk performa, penerjemah asinkron selalu memiliki bidang> rpc_flags<4 yang ada.
Bidang> proc_num<2 menyediakan nomor prosedur prosedur.
stack_size<2> menyediakan ukuran total semua parameter pada tumpukan, termasuk nilai pointer dan/atau pengembalian ini.
Bidang explicit_handle_description<> dijelaskan nanti dalam dokumen ini. Bidang ini tidak ada jika prosedur menggunakan handel implisit.