Bagikan melalui


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.