Pointer (RPC)
Pointer umum didefinisikan sebagai semuanya selain penunjuk antarmuka dan penunjuk jumlah byte.
Ada dua kemungkinan tata letak untuk deskripsi:
pointer_type<1> pointer_attributes<1>
simple_type<1> FC_PAD
–Atau–
pointer_type<1> pointer_attributes<1>
offset_to_complex_description<2>
Format pertama digunakan jika penunjuk adalah penunjuk ke jenis sederhana atau penunjuk string yang tidak berukuran besar. Format kedua digunakan untuk penunjuk ke semua jenis lainnya. Atribut penunjuk menunjukkan tata letak deskripsi mana dengan bendera FC_SIMPLE_POINTER.
<pointer_type 1> adalah salah satu dari berikut ini.
Format karakter | Deskripsi |
---|---|
FC_RP | Penunjuk referensi. |
FC_UP | Penunjuk unik. |
FC_FP | Penunjuk penuh. |
FC_OP | Penunjuk unik dalam antarmuka objek. |
Alasan untuk membedakan FC_OP adalah semantik: dalam antarmuka objek, penunjuk [masuk,keluar] harus dibebaskan sebelum membatalkan nama objek baru dan menetapkan nilai pointer baru.
<Pointer_attributes 1> bisa memiliki salah satu bendera yang diperlihatkan dalam tabel berikut.
Atribut | Bendera | Deskripsi |
---|---|---|
01 | FC_ALLOCATE_ALL_NODES | Pointer adalah bagian dari skema alokasi alokasi (all_nodes). |
02 | FC_DONT_FREE | Penunjuk alokasi(dont_free). |
04 | FC_ALLOCED_ON_STACK | Pointer yang referensinya dialokasikan pada tumpukan stub. |
08 | FC_SIMPLE_POINTER | Penunjuk ke jenis sederhana atau string yang tidak sesuai. Bendera yang diatur ini menunjukkan tata letak deskripsi penunjuk sebagai tata letak penunjuk sederhana yang dijelaskan di atas, jika tidak, format deskriptor dengan offset ditunjukkan. |
10 | FC_POINTER_DEREF | Pointer yang harus didereferensikan sebelum menangani referensi pointer. |
Penunjuk yang memiliki size_is(), max_is(), length_is(), last_is(), dan/atau first_is() yang diterapkan padanya memiliki deskripsi string format yang identik dengan penunjuk ke array dari jenis yang sesuai (misalnya, array yang sesuai jika size_is() diterapkan, array variasi yang sesuai jika size_is() dan length_is diterapkan).
String format penunjuk antarmuka objek memiliki salah satu dari dua format, tergantung pada apakah IID yang sesuai diketahui oleh pengkompilasi.
Penunjuk antarmuka dengan IID konstanta memiliki deskripsi berikut:
FC_IP FC_CONSTANT_IID
iid<16>
Bagian iid<16> adalah IID aktual untuk penunjuk antarmuka. iid ditulis ke string format dalam format yang identik dengan struktur data GUID: long, short, short, char [8].
Deskripsi penunjuk antarmuka dengan iid_is() yang diterapkan padanya adalah:
FC_IP FC_PAD
iid_description<>
iid_description<> adalah deskriptor korelasi dan memiliki 4 atau 6 byte tergantung pada apakah /robust digunakan. Nilai yang dihitung oleh fungsi NdrComputeConformance adalah penunjuk IID.
Penunjuk jumlah byte terkait dengan atribut pengoptimalan khusus yang disebut [byte_count]. Format berikut digunakan:
FC_BYTE_COUNT_POINTER
simple_type<1>
byte_count_description<>
–Dan–
FC_BYTE_COUNT_POINTER
FC_PAD
byte_count_description<>
pointee_description<>
byte_count_description<> adalah deskriptor korelasi dan memiliki 4 atau 6 byte tergantung pada apakah /robust digunakan.
pointee_description<> adalah deskripsi jenis pointee.