ignorer l’attribut
L’attribut [ignore] désigne qu’un pointeur contenu dans une structure ou une union et l’objet indiqué par le pointeur ne sont pas transmis. L’attribut [ignore] est limité aux membres de pointeurs de structures ou d’unions.
[ignore] pointer-member-type pointer-name;
Paramètres
-
pointeur-member-type
-
Spécifie le type du membre pointeur de la structure ou de l’union.
-
pointer-name
-
Spécifie le nom du membre de pointeur qui doit être ignoré pendant le marshaling.
Notes
La valeur d’un membre de structure avec l’attribut [ignore] n’est pas définie à la destination. Un paramètre [in] n’est pas défini sur l’ordinateur distant. Un paramètre [out] n’est pas défini sur l’ordinateur local.
L’attribut [ignore] vous permet d’empêcher la transmission de données. Cela est utile dans des situations telles qu’une liste doublement liée. L’exemple suivant inclut une liste doublement liée qui introduit l’alias de données :
/* 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’alias se produit dans l’exemple précédent, car la même zone de mémoire est disponible à partir de deux pointeurs différents dans la fonction p et p-next-previous>>.
Notez que [ignore] ne peut pas être utilisé comme attribut de type.
Exemples
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;
Voir aussi