Mutatók (RPC)
Gyakori mutatók
A gyakori mutató az interfészmutatókon és a bájtszámmutatókon kívül minden másként van definiálva.
A leírásnak két lehetséges elrendezése van:
pointer_type<1> pointer_attributes<1>
simple_type<1> FC_PAD
–vagy–
pointer_type<1> pointer_attributes<1>
offset_to_complex_description<2>
Az első formátumot akkor használja a rendszer, ha a mutató egy egyszerű típusra vagy egy nem formázott sztringmutatóra mutató mutató. A második formátum az összes többi típusra mutató mutatókhoz használható. A mutatóattribútumok azt jelzik, hogy melyik leíráselrendezést tartalmazza a FC_SIMPLE_POINTER jelzővel.
pointer_type<1> az alábbiak egyike.
Karakter formázása | Leírás |
---|---|
FC_RP | Referenciamutató. |
FC_UP | Egyedi mutató. |
FC_FP | Teljes mutató. |
FC_OP | Egyedi mutató egy objektumfelületen. |
A FC_OP megkülönböztetésének oka a szemantikus: az objektumfelületeken az [in,out] mutatót fel kell szabadítani, mielőtt leválasztanak egy új objektumot, és új mutatóértéket rendelnek hozzá.
Pointer_attributes<1> az alábbi táblázatban bármelyik jelölőt megjelenítheti.
Attribútum | Zászló | Leírás |
---|---|---|
01 | FC_ALLOCATE_ALL_NODES | A mutató egy foglalási(all_nodes) foglalási séma része. |
02 | FC_DONT_FREE | Egy lefoglalási(dont_free) mutató. |
04 | FC_ALLOCED_ON_STACK | Egy mutató, amelynek hivatkozása a csonk veremén van lefoglalva. |
08 | FC_SIMPLE_POINTER | Mutató egy egyszerű típusra vagy nem konformáló sztringre. Ez a beállított jelző a mutató leírásának elrendezését jelzi a fent ismertetett egyszerű mutatóelrendezésként, ellenkező esetben az eltolással ellátott leíró formátum jelenik meg. |
10 | FC_POINTER_DEREF | Olyan mutató, amelyet a mutató hivatkozásának kezelése előtt el kell halasztani. |
A size_is(), max_is(), length_is(), last_is() és/vagy first_is() alkalmazott mutatók formázási sztringleírásai megegyeznek a megfelelő típusú tömbre mutató mutatóval (például egy megfelelő tömb, ha size_is() van alkalmazva, egy megfelelő, változó tömb, ha size_is() és length_is alkalmazva van).
Illesztőmutatók
Az objektumfelület mutatóformátum-sztringje két formátum egyikével rendelkezik, attól függően, hogy a megfelelő IID ismert-e a fordító számára.
Az állandó IID azonosítójú illesztőmutató leírása a következő:
FC_IP FC_CONSTANT_IID
iid<16>
Az iid<16> része a felületmutató tényleges IID azonosítója. Az iid a GUID-adatstruktúrával azonos formátumban íródott a formátumsztringre: hosszú, rövid, rövid, karakter [8].
A iid_is() alkalmazott felületmutató leírása a következő:
FC_IP FC_PAD
iid_description<>
A iid_description<> korrelációs leíró, és 4 vagy 6 bájtos attól függően, hogy /robusztus van-e használva. Az NdrComputeConformance függvény által kiszámított érték az IID-mutató.
Bájtszám mutatói
A bájtszámmutatók egy [byte_count] nevű speciális optimalizálási attribútumhoz kapcsolódnak. A rendszer a következő formátumokat használja:
FC_BYTE_COUNT_POINTER
simple_type<1>
byte_count_description<>
–és–
FC_BYTE_COUNT_POINTER
FC_PAD
byte_count_description<>
pointee_description<>
A byte_count_description<> korrelációs leíró, és 4 vagy 6 bájtos attól függően, hogy /robusztus van-e használva.
A pointee_description<> a pointee típusának leírása.