ignorare l'attributo
L'attributo [ignore] designa che un puntatore contenuto in una struttura o un'unione e l'oggetto indicato dal puntatore non viene trasmesso. L'attributo [ignora] è limitato ai membri puntatori di strutture o unioni.
[ignore] pointer-member-type pointer-name;
-
puntatore-membro-tipo
-
Specifica il tipo del membro puntatore della struttura o dell'unione.
-
puntatore-nome
-
Specifica il nome del membro del puntatore da ignorare durante il marshalling.
Il valore di un membro della struttura con l'attributo [ignore] non è definito nella destinazione. Un parametro [in] non è definito nel computer remoto. Un parametro [out] non è definito nel computer locale.
L'attributo [ignore] consente di impedire la trasmissione dei dati. Questo è utile in situazioni come un elenco a doppio collegamento. L'esempio seguente include un elenco collegato doppio che introduce l'aliasing dei dati:
/* IDL file */
typedef struct _DBL_LINK_NODE_TYPE
{
long value;
struct _DBL_LINK_NODE_TYPE * next;
struct _DBL_LINK_NODE_TYPE * previous;
} DBL_LINK_NODE_TYPE;
HRESULT remote_op([in] DBL_LINK_NODE_TYPE * list_head);
/* application */
DBL_LINK_NODE_TYPE * p, * q
p = (DBL_LINK_NODE_TYPE *) midl_user_allocate(
sizeof(DBL_LINK_NODE_TYPE));
q = (DBL_LINK_NODE_TYPE *) midl_user_allocate(
sizeof(DBL_LINK_NODE_TYPE));
p->next = q;
q->previous = p;
p->previous = q->next = NULL;
..
remote_op(p);
L'aliasing si verifica nell'esempio precedente perché la stessa area di memoria è disponibile da due puntatori diversi nella funzione p ep-next-previous>>.
Si noti che [ignora] non può essere usato come attributo di tipo.
typedef struct _DBL_LINK_NODE_TYPE
{
long value;
struct _DBL_LINK_NODE_TYPE * next;
[ignore] struct _DBL_LINK_NODE_TYPE * previous;
} DBL_LINK_NODE_TYPE;