ignore 属性
[ignore] 属性指定不传输结构或联合中包含的指针以及由指针指示的对象。 [ignore] 属性限制为结构或联合的指针成员。
[ignore] pointer-member-type pointer-name;
-
pointer-member-type
-
指定结构或联合的指针成员的类型。
-
pointer-name
-
指定要在封送处理期间忽略的指针成员的名称。
具有 [ignore] 属性的结构成员的值在目标位置未定义。 未在远程计算机上定义 [in] 参数。 [out] 参数未在本地计算机上定义。
[ignore] 属性允许阻止数据传输。 这在双链接列表等情况下很有用。 以下示例包含一个引入数据别名的双链接列表:
/* 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);
在前面的示例中发生别名,因为同一内存区域可从函数 p 和 p-next-previous>> 中的两个不同指针获得。
请注意, [ignore] 不能用作类型属性。
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;