Eingebettete Out-Only-Referenzzeiger
Wenn Sie [out]-only-Verweiszeiger in Microsoft RPC verwenden, weisen die generierten Server-Stubs nur die erste Ebene von Zeigern zu, auf die über den Verweiszeiger zugegriffen werden kann. Zeiger auf tieferen Ebenen werden nicht von den Stubs zugeordnet, sondern müssen von der Serveranwendungsebene zugeordnet werden. Angenommen, eine Schnittstelle gibt ein [out]only-Array von Verweiszeigern an:
/* IDL file (fragment) */
typedef [ref] short * PREF;
Proc1([out] PREF array[10]);
In diesem Beispiel weist der Serverstub Arbeitsspeicher für 10 Zeiger zu und legt den Wert jedes Zeigers auf NULL fest. Die Serveranwendung muss den Arbeitsspeicher für die 10 kurzen ganzen Zahlen zuordnen, auf die von den Zeigern verwiesen wird, und dann die 10 Zeiger so festlegen, dass sie auf die ganzen Zahlen zeigen.
Wenn die [out]-only-Datenstruktur geschachtelte Verweiszeiger enthält, weisen die Serverstubs nur den ersten Zeiger zu, auf den über den Verweiszeiger zugegriffen werden kann. Beispiel:
/* IDL file (fragment) */
typedef struct
{
[ref] small * psValue;
} STRUCT1_TYPE;
typedef struct
{
[ref] STRUCT1_TYPE * ps1;
} STRUCT_TOP_TYPE;
Proc2([out, ref] STRUCT_TOP_TYPE * psTop);
Im vorherigen Beispiel weisen die Serverstubs den Zeiger psTop und die Struktur STRUCT_TOP_TYPE zu. Der Verweiszeiger ps1 in STRUCT_TOP_TYPE ist auf NULL festgelegt. Der Serverstub weist nicht jede Ebene der Datenstruktur zu, noch weist er die STRUCT1_TYPE oder den eingebetteten Zeiger psValue zu.