ignore-Attribut
Das [ ] ignore-Attribut gibt an, dass ein zeiger, der in einer Struktur oder Union enthalten ist, und das durch den Zeiger angegebene Objekt nicht übertragen wird. Das [ ignore-Attribut ] ist auf Zeigermitglieder von Strukturen oder Unions beschränkt.
[ignore] pointer-member-type pointer-name;
Parameter
-
pointer-member-type
-
Gibt den Typ des Zeiger-Members der Struktur oder Union an.
-
Zeigername
-
Gibt den Namen des Zeigermitglieds an, das während des Marshallings ignoriert werden soll.
Bemerkungen
Der Wert eines Strukturmitglieds mit dem [ ] ignore-Attribut ist am Ziel nicht definiert. 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 nützlich, z. B. in einer doppelt verknüpften Liste. Das folgende Beispiel enthält eine doppelt verknüpfte Liste, die das Datenaliasing einfing:
/* 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 der gleiche Speicherbereich von zwei verschiedenen Zeigern in der Funktion p und p->weiter oben >verfügbar ist.
Beachten Sie, [ dass ignore ] nicht als Typattribut 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;