Ignore-Attribut

Das [ignore] -Attribut gibt an, dass ein In einer Struktur oder Union enthaltener Zeiger und das durch den Zeiger angegebene Objekt nicht übertragen werden. Das [ignore] -Attribut ist auf Zeigermember von Strukturen oder Unions beschränkt.

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

Parameter

Zeigermembertyp

Gibt den Typ des Zeigermembers der Struktur oder Union an.

Zeigername

Gibt den Namen des Zeigermembers an, der beim Marshallen ignoriert werden soll.

Bemerkungen

Der Wert eines Strukturmembers mit dem [ignore] -Attribut ist am Ziel undefiniert. Ein [in] -Parameter ist auf dem Remotecomputer nicht definiert. Ein [out] -Parameter ist auf dem lokalen Computer nicht definiert.

Mit dem [ignore] -Attribut können Sie die Übertragung von Daten verhindern. Dies ist in Situationen wie einer doppelt verknüpften Liste nützlich. Das folgende Beispiel enthält eine doppelt verknüpfte Liste, die das Datenaliasing einführt:

/* 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 tritt im vorherigen Beispiel auf, da derselbe Speicherbereich über zwei verschiedene Zeiger in der Funktion p und p-next-previous>> verfügbar ist.

Beachten Sie, dass [ignore] nicht als Typattribute verwendet werden kann.

Beispiele

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;

Weitere Informationen

Array- und Sized-Pointer attribute

Arrays

Arrays und Zeiger

In

out

Ptr

Ref

Einzigartige