Freigeben über


Range-Attribut

Mit dem [range] -Attribut können Sie einen Bereich zulässiger Werte für Argumente oder Felder angeben, deren Werte zur Laufzeit festgelegt werden. Bei Verwendung mit einem Rohrtyp gibt das Attribut den zulässigen Bereich für die Anzahl der Elemente in den Rohrblöcken an.

[range(low-val,high-val)] type-specifier declarator

Parameter

niedriger Wert

Der niedrigste zulässige Wert, den der Parameter oder das Feld enthalten kann.

Hochwert

Der höchste zulässige Wert, den der Parameter oder das Feld enthalten kann.

Typbezeichner

Ein anderer integraler Typ als Hyper oder __int64, ein Typbezeichner für einen integralen Typ, einen Enumerationstyp oder einen Rohrtypnamen.

Deklarator

Ein C-Standard-Deklarator, z. B. ein Bezeichner.

Bemerkungen

Verwenden Sie das [range] -Attribut, um die Bedeutung vertraulicher Parameter oder Felder zu ändern, z. B. die für Größe oder Länge verwendeten Parameter mit konformen oder unterschiedlichen Arrays; oder immer, wenn Sie einen Parameter oder Feldwert anhand eines Bereichs gültiger Werte überprüfen möchten. Das Attribut gilt sowohl für Parameter auf oberster Ebene als auch für Parameter und Felder auf niedrigerer Ebene. Das Hinzufügen des [range] -Attributs zu einem Typ ändert das Drahtformat nicht, wirkt sich daher nicht auf die Abwärtskompatibilität aus.

Das [range] -Attribut kann auch für konforme Daten wie Puffer oder Arrays mit einem Konformitätsattribute verwendet werden. Der Effekt besteht darin, alle Konformitätsgrößen für die konformen Daten auf den angegebenen Bereich zu beschränken. Wenn es sich bei den konformen Daten um ein mehrdimensionales Array handelt, ist jede Arraydimension auf den angegebenen Bereich beschränkt.

Die Verwendung von [Range] für konforme Daten erfordert, dass das Kompilierungsziel oder höher sein muss --target NT60 .

Beachten Sie, dass Sie beim Kompilieren der IDL-Datei die Option "/robust " verwenden müssen, um den Stubcode zu generieren, der diese Prüfungen durchführt. Ohne den Switch /robust ignoriert der MIDL-Compiler dieses Attribut.

Beispiele

HRESULT Method1(
    [in, range(0,100)] ULONG m,
    [in, range(0,100)] ULONG n,
    [size_is(m,n)] ULONG **pplong);

void InPipe(
    [in, range(0, MAX_CHUNK) LONG_PIPE pipe_date);

Siehe auch

IdL-Datei (Interface Definition)

Arrays

first_is

last_is

length_is

max_is

/Robuste

size_is

switch_is