omitir atributo
El atributo [ignore] designa que un puntero contenido en una estructura o unión y el objeto indicado por el puntero no se transmite. El atributo [ignore] está restringido a los miembros de puntero de estructuras o uniones.
[ignore] pointer-member-type pointer-name;
-
pointer-member-type
-
Especifica el tipo del miembro de puntero de la estructura o unión.
-
pointer-name
-
Especifica el nombre del miembro del puntero que se va a omitir durante la serialización.
El valor de un miembro de estructura con el atributo [ignore] no está definido en el destino. Un parámetro [in] no se define en el equipo remoto. Un parámetro [out] no está definido en el equipo local.
El atributo [ignore] permite evitar la transmisión de datos. Esto resulta útil en situaciones como una lista vinculada doble. En el ejemplo siguiente se incluye una lista vinculada doble que presenta el alias de datos:
/* 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);
El alias se produce en el ejemplo anterior porque el mismo área de memoria está disponible desde dos punteros diferentes en la función p y p-next-previous>>.
Tenga en cuenta que [ignore] no se puede usar como atributo de 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;