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.
Feldattribute können in verschiedenen Kombinationen bereitgestellt werden, solange der Stub die Informationen verwenden kann, um die Größe des Arrays und die Anzahl der Bytes zu bestimmen, die an den Server übertragen werden sollen. Die Beziehungen zwischen den Attributen werden mithilfe der folgenden Formeln definiert:
size_is = max_is + 1;
length_is = last_is - first_is + 1;
Die werte, die den Attributen zugeordnet sind, müssen auf der Grundlage dieser Formeln mehrere Regeln des Allgemeinsinns einhalten. Diese Regeln sind:
- Geben Sie keinen [first_is] Indexwert kleiner als Null oder einen [last_is] Wert größer als [max_is] an.
- Geben Sie keine negative Größe für ein Array an. Definieren Sie die ersten und letzten Elemente so, dass sie zu einem Längenwert von Null oder höher führen. Definieren Sie den Wert [max_is] so, dass die Größe null oder größer ist. Wenn MIDL mit der Option /error bounds_check aufgerufen wurde, löst der Stub eine Ausnahme aus, wenn die Größe kleiner als Null ist oder die übertragene Länge kleiner als Null ist.
- Verwenden Sie weder die Attribute [length_is] und [last_is] gleichzeitig, noch die Attribute [size_is] und [last_is] gleichzeitig.
Aufgrund der engen Beziehung in C zwischen Arrays und Zeigern können Sie mit MIDL auch Arrays in Parameterlisten mithilfe der Zeigernotation deklarieren. MIDL behandelt einen Parameter, der einen Zeiger auf einen Typ als Array dieses Typs darstellt, wenn der Parameter über eines der Attribute verfügt, die häufig Arrays zugeordnet sind.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45)
version(6.0)
]
interface arraytest
{
void fArray6([in] short sSize,
[in, out, size_is(sSize)] char * p1);
void fArray7([in] short sSize,
[in, out, size_is(sSize)] char achArray[]);
}
Im vorherigen Beispiel sind die Array- und Zeigerparameter in den Funktionen fArray6 und fArray7 gleichwertig.