Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zeiger müssen keine explizite Attributbeschreibung aufweisen. Wenn kein explizites Attribut angegeben wird, verwendet der MIDL-Compiler ein Standardzeiger-Attribut.
Die Standardfälle für nichtattributete Zeiger sind die folgenden:
- Zeiger der obersten Ebene, die in Parameterlisten angezeigt werden, weisen standardmäßig [Bezug] Zeiger auf.
- Alle anderen Zeiger weisen standardmäßig den vom Attribut [pointer_default] angegebenen Typ auf. Wenn kein [pointer_default] -Attribut angegeben wird, werden diese Zeiger standardmäßig auf das [ eindeutige ]-Attribut festgelegt, wenn sich der MIDL-Compiler im modus Microsoft Extensions Modus befindet oder das Attribut [ptr] verwendet wird, wenn sich der MIDL-Compiler im DCE-kompatiblen Modus befindet.
Wenn eine Remoteprozedur einen Zeiger zurückgibt, muss der Rückgabewert ein [ eindeutiger ] oder ein vollständiger Zeiger ([ ptr ]) sein.
/* IDL file compiled without /osf */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0),
pointer_default(ptr)
]
interface MyInterface
{
typedef long *PLONG;
struct MyCircularList {
struct MyCircularList *pRight;
struct MyCircularList *pLeft;
long Data;
};
void Foo1( [in] PLONG p ); // p is ref
void Foo2( [in] struct MyCircularList *p ); // p is ref, p->pRight and p->pLeft is ptr
struct MyCircularList *Foo3( void ); // returned pointer is ptr.
}
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea46),
version(1.0)
]
interface MyInterface2
{
struct MySingleList
{
struct MySingleList *pNext;
long Data;
};
void Foo4( [in] struct MySingleList *p ); // p is ref, p->pNext is unique
struct MySingleList *Foo5( void ); // returned pointer is unique.
}
Bemerkungen
Um ein eindeutiges Zeiger-Attributverhalten sicherzustellen, verwenden Sie beim Definieren eines Zeigers immer explizite Zeigerattribute.
Es wird empfohlen, dass [ptr] nur verwendet wird, wenn Zeigeraliasing erforderlich ist.