attribut de plage

L’attribut [plage] 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 faible 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

Un type intégral autre que hyper ou __int64, un identificateur de type à un type intégral, un type enum ou un nom de type de canal.

declarator

Un déclarateur C standard, tel qu’un identificateur.

Notes

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 case activée 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 fil, 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é des 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 des données conformes nécessite que la cible de compilation soit NT60 ou supérieure.

Notez que vous devez utiliser l’option du compilateur /robust lorsque vous compilez votre fichier IDL afin de générer le code stub qui effectuera 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 aussi

Fichier de définition d’interface (IDL)

Tableaux

first_is

last_is

length_is

max_is

/Robuste

size_is

switch_is