Upravit

Sdílet prostřednictvím


ignore attribute

The [ignore] attribute designates that a pointer contained in a structure or union and the object indicated by the pointer is not transmitted. The [ignore] attribute is restricted to pointer members of structures or unions.

[ignore] pointer-member-type pointer-name;

Parameters

pointer-member-type

Specifies the type of the pointer member of the structure or union.

pointer-name

Specifies the name of the pointer member that is to be ignored during marshaling.

Remarks

The value of a structure member with the [ignore] attribute is undefined at the destination. An [in] parameter is not defined at the remote computer. An [out] parameter is not defined at the local computer.

The [ignore] attribute allows you to prevent transmission of data. This is useful in situations such as a double-linked list. The following example includes a double-linked list that introduces data aliasing:

/* 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);

Aliasing occurs in the preceding example because the same memory area is available from two different pointers in the function p and p->next->previous.

Note that [ignore] cannot be used as a type attribute.

Examples

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;

See also

Array and Sized-Pointer Attributes

arrays

Arrays and Pointers

in

out

ptr

ref

unique