Condividi tramite


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.