attribut de chaîne

L’attribut [ ] String indique que le tableau char, WCHAR _ t, Byte (ou équivalent) unidimensionnel ou le pointeur vers ce tableau doit être traité comme une chaîne. La chaîne peut également être un tableau (ou un pointeur vers un tableau) de constructions dont les champs sont tous du type Byte.

typedef [ string [[ , type-attribute-list ]] ] type-specifier declarator-list; 

typedef [ struct | union ] 
{
    [ string [[ , field-attribute-list ]] ] type-specifier declarator-list;
    ...
};

[ string [[ , function-attribute-list ]] ] type-specifier ptr-decl function-name(
  [[ [ parameter-attribute-list ] ]] type-specifier [[standard-declarator]]
  , ...);

[[ [ function-attribute-list ] ]] type-specifier [[ptr-decl]] function-name(
    [ string [[ , parameter-attribute-list ]] ] type-specifier [[standard-declarator]]
  , ...);

Paramètres

type-attribut-List

Spécifie un ou plusieurs attributs qui s’appliquent à un type. Les attributs de type valides incluent [ handle ] , [ _ type de commutateur ] , [ transmettre _ en tant que ] ; l’attribut de pointeur [ ref ] , [ unique ] ou [ ptr ] ; et les attributs d’utilisation [ _ handle de contexte ] , [ ] chaîne et [ Ignorer ] . Séparez plusieurs attributs par des virgules.

spécificateur de type

Spécifie un type de base, un type struct ou un identificateur de type. Une spécification de stockage facultative peut précéder le type-specifier.

standard-déclarateur

Spécifie un déclarateur C standard, tel qu’un identificateur, un déclarateur de pointeur ou un déclarateur de tableau. Pour plus d’informations, consultez tableau et Sized-Pointer attributs, tableauxet pointeurs.

déclarateur-liste

Spécifie les déclarateurs C standard, tels que les identificateurs, les déclarateurs de pointeurs et les déclarateurs de tableau. Pour plus d’informations, consultez tableau et Sized-Pointer attributs, tableauxet pointeurs. La liste déclarateur se compose d’un ou de plusieurs déclarateurs séparés par des virgules. L’identificateur de nom de paramètre dans le déclarateur de fonction est facultatif.

Field-attribute-List

Spécifie zéro, un ou plusieurs attributs de champ qui s’appliquent à la structure, au membre d’Union ou au paramètre de fonction. Les deux attributs de champ valides sont [ Max _ ] et [ size _ est ] ; les attributs d’utilisation [ String ], [ ignore ] et [ Context _ handle ], l’attribut de pointeur [ ref ] , [ unique ] ou [ ptr ] et le [ _ type ] de commutateur d’attribut Union. Séparez plusieurs attributs de champ par des virgules.

function-attribute-List

Spécifie zéro, un ou plusieurs attributs qui s’appliquent à la fonction. Les attributs de fonction valides sont [ callback ] , [ local ] , l’attribut de pointeur [ ] ref, [ unique ] ou [ ptr ]; et les attributs d’utilisation [ chaîne ], [ Ignorer ] et [ _ ] handle de contexte.

pointeur-decl

Spécifie un déclarateur de pointeur facultatif auquel s’applique l’attribut de [ chaîne ] . Un déclarateur de pointeur est le même que le déclarateur de pointeur utilisé dans C ; elle est construite à partir de l' * indicateur, de modificateurs tels que Far et de l’identificateur const.

nom de fonction

Spécifie le nom de la procédure distante.

Parameter-attribute-List

Se compose de zéro, un ou plusieurs attributs appropriés pour le type de paramètre spécifié. Les attributs de paramètre peuvent accepter et [ sortir ] les attributs directionnels ; les attributs [ de ] champ [ Max _ sont ] et [ size _ est ] ; l’attribut de pointeur [ ] ref, [ unique ] ou [ ptr ]; et les attributs d’utilisation [ _ handle ] de contexte et [ chaîne ]. L’attribut d’utilisation [ ignore ] ne peut pas être utilisé en tant qu’attribut de paramètre. Séparez plusieurs attributs par des virgules.

Notes

Si l’attribut de [ chaîne ] est utilisé avec un tableau dont les limites sont déterminées au moment de l’exécution, vous devez également spécifier [ _ ] une taille , ou l’attribut [ Max _ est ] un attribut, comme dans l’exemple suivant :

/* a string that can hold up to MAX_STRING_LENGTH characters */
typedef [string, max_is(MAX_STRING_LENGTH)] char line[];

L’attribut de [ chaîne ] ne peut pas être utilisé avec des attributs qui spécifient la plage d’éléments transmis, par exemple [ First _ est ], [ Last _ is ] et [ Length _ est ].

Lorsqu’il est utilisé sur des tableaux multidimensionnels, l’attribut de [ chaîne ] s’applique au tableau le plus à droite.

Pour définir une chaîne comptée, n’utilisez pas l’attribut de [ chaîne ] . Utilisez un tableau de caractères ou un pointeur de type caractère tel que le suivant :

typedef struct 
{ 
    unsigned short size; 
    unsigned short length; 
    [size_is(size), length_is(length)] char string[*]; 
} counted_string;

L’attribut [ String ] spécifie que le stub doit utiliser une méthode fournie par le langage pour déterminer la longueur des chaînes.

Lors de la déclaration de chaînes en C, vous devez allouer de l’espace pour un caractère supplémentaire qui marque la fin de la chaîne.

Exemples

/* a string type that can hold up to 80 characters */ 
typedef [string] char line[81]; 
 
HRESULT Proc1([in, string] char * pszName);

Voir aussi

tableaux

Types de base MIDL

rappel

char

const

handle de contexte _

variables

tout d’abord, _

traitée

Fichier de définition d’interface (IDL)

ignore

la dernière _ est

la longueur _ est

localisé

le nombre maximal _ est

pointeur _ par défaut

ptr

ref

la taille _ est

modélis

type de commutateur _

transmettre _ en tant que

union

unique

WCHAR _ t