Condividi tramite


Puntatori di riferimento Out-Only incorporati

Quando si usano [outpuntatori di riferimento solo ]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 dei 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 10 brevi numeri interi a cui fanno riferimento i puntatori e quindi impostare i 10 puntatori in modo che puntino ai numeri interi.

Quando [outstruttura di dati solo ]-only include puntatori di riferimento annidati, gli stub del server allocano solo il primo puntatore accessibile dal puntatore di riferimento. Per 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 di dati, né alloca il STRUCT1_TYPE o il puntatore incorporato, psValue.