Zeiger (RPC)

Allgemeine Zeiger

Ein gängiger Zeiger wird als alles andere als Schnittstellenzeiger und Byteanzahlzeiger definiert.

Es gibt zwei mögliche Layouts für die Beschreibung:

pointer_type<1> pointer_attributes<1>
simple_type<1> FC_PAD

– oder –

pointer_type<1> pointer_attributes<1>
offset_to_complex_description<2>

Das erste Format wird verwendet, wenn der Zeiger ein Zeiger auf einen einfachen Typ oder ein nicht formatiertes Zeichenfolgenzeiger ist. Das zweite Format wird für Zeiger auf alle anderen Typen verwendet. Zeigerattribute geben mit dem FC SIMPLE POINTER-Flag an, welches _ _ Beschreibungslayout es ist.

Zeigertyp _<1> ist einer der folgenden.

Formatzeichen BESCHREIBUNG
FC _ RP Ein Verweiszeiger.
FC _ UP Ein eindeutiger Zeiger.
FC _ FP Ein vollständiger Zeiger.
FC _ OP Ein eindeutiger Zeiger in einer Objektschnittstelle.

Der Grund für die Unterscheidung von FC OP ist semantisch: In Objektschnittstellen sollte ein in,out-Zeiger frei werden, bevor die Zuordnung eines neuen Objekts und das Zuweisen eines neuen Zeigerwerts entschniffen _ [ ] wird.

Zeigerattribute<1> können über eines der in der folgenden _ Tabelle gezeigten Flags verfügen.

attribute Flag BESCHREIBUNG
01 FC _ ALLOCATE _ ALL _ NODES Der Zeiger ist Teil eines Zuordnungsschemas "allocate(all _ nodes)".
02 FC _ DONT _ FREE Ein allocate(don't _ free)-Zeiger.
04 FC _ ALLOCED _ ON _ STACK Ein Zeiger, dessen Referenz auf dem Stapel des Stubs zugeordnet ist.
08 FC _ _ SIMPLE-ZEIGER Ein Zeiger auf einen einfachen Typ oder eine nicht konforme Zeichenfolge. Dieses Flag, das festgelegt wird, gibt das Layout der Zeigerbeschreibung als das oben beschriebene einfache Zeigerlayout an, andernfalls wird das Deskriptorformat mit dem Offset angegeben.
10 _ _ FC-ZEIGER-DEREF Ein Zeiger, der dereferenziert werden muss, bevor der Zeigerreferenzierung verwendet wird.

Zeiger, auf die die Größe _ is(), max _ is(), length _ is(), last _ is() und/oder first is() angewendet werden, verfügen über Formatzeichenfolgenbeschreibungen, die mit einem Zeiger auf ein Array des entsprechenden Typs identisch sind (z. B. ein konformes Array, wenn _ size _ is() angewendet wird, _ _ ein konformes variierende Array, wenn size () und length angewendet werden).

Schnittstellenzeker

Eine Formatzeichenfolge für einen Objektschnittstellenzeiger hat eines von zwei Formaten, je nachdem, ob die entsprechende IID dem Compiler bekannt ist.

Ein Schnittstellenzeiger mit einer konstanten IID hat die folgende Beschreibung:

FC_IP FC_CONSTANT_IID 
iid<16>

Der iid<16> ist die tatsächliche IID für den Schnittstellenzeiger. Die IID wird in ein Format geschrieben, das mit der GUID-Datenstruktur identisch ist: long, short, short, char [ ] 8.

Die Beschreibung eines Schnittstellenzeigers, auf den iid _ is() angewendet wird, ist:

FC_IP FC_PAD 
iid_description<> 

Die iid description<> ist ein Korrelationsdeskriptor und hat je nachdem, ob _ /robust verwendet wird, 4 oder 6 Bytes. Der von der NdrComputeConformance-Funktion berechnete Wert ist der IID-Zeiger.

Zeiger auf die Byteanzahl

Byteanzahlze zeiger beziehen sich auf ein spezielles Optimierungsattribut namens [ _ Byteanzahl. ] Die folgenden Formate werden verwendet:

FC_BYTE_COUNT_POINTER 
simple_type<1>
byte_count_description<> 

– und –

FC_BYTE_COUNT_POINTER 
FC_PAD
byte_count_description<> 
pointee_description<>

Die Beschreibung der Byteanzahl<> Korrelationsdeskriptor und hat je nachdem, ob _ _ /robust verwendet wird, 4 oder 6 Bytes.

Die Zeigerbeschreibung _<> eine Beschreibung des Zeigertyps.