Pointer (RPC)

Penunjuk Umum

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).

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 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.

Byte Count Pointers

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.