range-attribut

Med attributet [intervall] kan du ange ett intervall med tillåtna värden för argument eller fält vars värden anges vid körning. När det används med en rörtyp anger attributet det tillåtna intervallet för antalet element i rörsegmenten.

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

Parameters

low-val

Det lägsta tillåtna värdet som parametern eller fältet kan innehålla.

high-val

Det högsta tillåtna värdet som parametern eller fältet kan innehålla.

type-specifier

En annan integrerad typ än hyper - eller __int64, en typidentifierare till en integraltyp, en uppräkningstyp eller ett namn på rörtypen.

deklarator

En C-standarddeklarator, till exempel en identifierare.

Anmärkningar

Använd attributet [range] för att ändra innebörden av känsliga parametrar eller fält, till exempel de som används för storlek eller längd, med överensstämmande eller varierande matriser. eller när du vill kontrollera en parameter eller ett fältvärde mot ett intervall med giltiga värden. Attributet gäller för parametrar på toppnivå samt parametrar och fält på lägre nivå. Om du lägger till attributet [range] till en typ ändras inte dess trådformat, vilket inte påverkar bakåtkompatibiliteten.

Attributet [range] kan också användas på överensstämmande data, till exempel buffertar eller matriser med ett överensstämmelseattribut. Effekten är att begränsa alla överensstämmelsestorlekar för överensstämmande data till det angivna intervallet. Om de överensstämmande data är en flerdimensionell matris begränsas varje matrisdimension till det angivna intervallet.

Användning av [intervall] på överensstämmande data kräver att kompileringsmålet är --target NT60 eller högre.

Observera att du måste använda kompileringsalternativet /robust när du kompilerar IDL-filen för att generera stub-koden som ska utföra dessa kontroller. Utan växeln /robust ignorerar MIDL-kompilatorn det här attributet.

Exempel

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);

Se även

IDL-fil (Interface Definition)

Matriser

first_is

last_is

length_is

max_is

/Robust

size_is

switch_is