Pointer (RPC)
Penunjuk Umum
Pointer umum didefinisikan sebagai segala sesuatu 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 nonsized. 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 hal berikut ini.
Format karakter | Deskripsi |
---|---|
FC_RP | Penunjuk referensi. |
FC_UP | Pointer unik. |
FC_FP | Penunjuk penuh. |
FC_OP | Pointer 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 | Pointer alokasikan(dont_free). |
04 | FC_ALLOCED_ON_STACK | Pointer yang referensinya dialokasikan pada tumpukan stub. |
08 | FC_SIMPLE_POINTER | Penunjuk ke jenis sederhana atau string konforman nonsized. 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 bervariasi yang sesuai jika size_is() dan length_is diterapkan).
Penunjuk Antarmuka
String format penunjuk antarmuka objek memiliki salah satu dari dua format, tergantung pada apakah IID yang sesuai diketahui oleh pengkompilasi.
Penunjuk antarmuka dengan IID konstan 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/kuat digunakan. Nilai yang dihitung oleh fungsi NdrComputeConformance adalah penunjuk IID.
Penunjuk Jumlah Byte
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 / kuat digunakan.
pointee_description<> adalah deskripsi jenis pointee.