Puntatori di riferimento Out-Only incorporati
Quando si usano puntatori di riferimento [out]-only in Microsoft RPC, gli stub del server generati allocano solo il primo livello di puntatori accessibili dal puntatore di riferimento. I puntatori a livelli più profondi non vengono allocati dagli stub, ma devono essere allocati dal livello dell'applicazione server. Si supponga, ad esempio, che un'interfaccia specifichi una matrice [out]-only di puntatori di riferimento:
/* IDL file (fragment) */
typedef [ref] short * PREF;
Proc1([out] PREF array[10]);
In questo esempio lo stub del server alloca memoria per 10 puntatori e imposta il valore di ogni puntatore su Null. L'applicazione server deve allocare la memoria per i 10 numeri interi brevi a cui fanno riferimento i puntatori e quindi impostare i 10 puntatori in modo che puntino ai numeri interi.
Quando la struttura dei dati [out]-only include puntatori di riferimento annidati, gli stub del server allocano solo il primo puntatore accessibile dal puntatore di riferimento. Ad esempio:
/* 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);
Nell'esempio precedente, gli stub del server allocano il puntatore psTop e la struttura STRUCT_TOP_TYPE. Il puntatore di riferimento ps1 in STRUCT_TOP_TYPE è impostato su Null. Lo stub del server non alloca ogni livello della struttura dei dati, né alloca il STRUCT1_TYPE o il relativo puntatore incorporato psValue.