Partager via


attribut de plage

L’attribut [range] vous permet de spécifier une plage de valeurs autorisées pour les arguments ou les champs dont les valeurs sont définies au moment de l’exécution. Lorsqu’il est utilisé avec un type de canal, l’attribut spécifie la plage autorisée pour le nombre d’éléments dans les segments de canal.

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

Paramètres

low-val

Valeur autorisée la plus basse que le paramètre ou le champ peut contenir.

high-val

Valeur autorisée la plus élevée que le paramètre ou le champ peut contenir.

spécificateur de type

Type intégral autre que hyper ou __int64, identificateur de type à un type intégral, type d’énumération ou nom de type canal.

déclarateur

Déclarateur C standard, tel qu’un identificateur.

Remarques

Utilisez l’attribut [range] pour modifier la signification des paramètres ou champs sensibles, tels que ceux utilisés pour la taille ou la longueur, avec des tableaux conformes ou variables ; ou chaque fois que vous souhaitez vérifier un paramètre ou une valeur de champ par rapport à une plage de valeurs valides. L’attribut s’applique aux paramètres de niveau supérieur, ainsi qu’aux paramètres et champs de niveau inférieur. L’ajout de l’attribut [range] à un type ne modifie pas son format de câble, ce qui n’affecte pas la compatibilité descendante.

L’attribut [range] peut également être utilisé sur des données conformes telles que des mémoires tampons ou des tableaux avec un attribut de conformité. L’effet est de limiter toutes les tailles de conformité pour les données conformes à la plage spécifiée. Si les données conformes sont un tableau multidimensionnel, chaque dimension de tableau est limitée à la plage spécifiée.

L’utilisation de [plage] sur les données conformes nécessite que la cible de compilation soit --target NT60 ou supérieure.

Notez que vous devez utiliser l’option /robust compiler votre fichier IDL pour générer le code stub qui effectue ces vérifications. Sans le commutateur /robust , le compilateur MIDL ignore cet attribut.

Exemples

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

Voir également

Fichier IDL (Interface Definition)

Tableaux

first_is

last_is

length_is

max_is

/Robuste

size_is

switch_is