Erreurs du compilateur

Les messages d’erreur suivants sont générés pendant la compilation MIDL :

Code de retour Description
MIDL2000
doit spécifier /c_ext pour les déclarateurs abstraits
Les déclarateurs abstraits représentent une extension Microsoft à RPC et ne sont pas définis dans DCE RPC. Par conséquent, si votre fichier inclut des déclarateurs abstraits, vous ne pouvez pas le compiler avec le commutateur /osf , qui applique une compatibilité DCE stricte. MIDL versions 3.0 et ultérieures utilisent le commutateur /c_ext comme valeur par défaut ; le commutateur /osf désactive le commutateur /c_ext . Pour plus d’informations sur les déclarateurs abstraits, consultez Le corps ACF.
MIDL2001
l’instanciation des données est illégale ; vous devez utiliser « extern » ou « static »
La déclaration et l’initialisation dans le fichier IDL ne sont pas compatibles avec DCE RPC. Cette fonctionnalité est une extension Microsoft qui n’est pas disponible lorsque vous compilez en mode de compatibilité DCE (/osf).
MIDL2002
Dépassement de capacité de la pile du compilateur
Le compilateur a manqué d’espace de pile pendant le traitement du fichier IDL. Ce problème peut se produire lorsque le compilateur traite une déclaration ou une expression complexe. Pour résoudre le problème, simplifiez la déclaration ou l’expression complexe.
MIDL2003
Redéfinition
Ce message d’erreur peut apparaître dans les circonstances suivantes : un type a été redéfini ; un prototype de procédure a été redéfini; un membre d’une structure ou d’une union du même nom existe déjà; un paramètre du même nom existe déjà dans le prototype.
MIDL2004
La liaison [auto_handle] sera utilisée
Aucun type de handle n’a été défini comme type de handle par défaut. Le compilateur suppose qu’un handle automatique sera utilisé comme handle de liaison pour la procédure spécifiée.
MIDL2005
mémoire insuffisante
Le compilateur a manqué de mémoire pendant la compilation. Réduisez la taille ou la complexité du fichier IDL ou allouez plus de mémoire au processus.
MIDL2006
définition récursive
Une structure ou une union a été définie de manière récursive. Cette erreur peut se produire lorsqu’une spécification de pointeur dans une définition de structure imbriquée est manquée.
MIDL2007
importation ignorée ; fichier déjà importé
L’importation d’un fichier IDL est une opération idempotente. L’inclure plusieurs fois n’a aucun effet. Toutes les opérations d’importation sauf la première sont ignorées.
MIDL2008
les énumérations éparses nécessitent /c_ext ou /ms_ext
L’affectation de valeurs à des constantes d’énumération n’est pas compatible avec DCE RPC. Si vous souhaitez utiliser les extensions Microsoft pour MIDL qui permettent d’attribuer des valeurs à des constantes d’énumération, vous ne pouvez pas compiler avec le commutateur /osf , qui applique une compatibilité DCE stricte. MIDL versions 3.0 et ultérieures utilisent les commutateurs /c_ext et /ms_ext comme valeur par défaut ; le commutateur /osf désactive ces commutateurs d’extension.
MIDL2009
symbole non défini
Un symbole non défini a été utilisé dans une expression. Cette erreur peut se produire lorsque vous utilisez une valeur énumérée non définie.
MIDL2010
type utilisé dans le fichier ACF non défini dans le fichier IDL
Un type non défini est utilisé.
MIDL2011
déclaration de type non résolue
Le type signalé dans le champ informations d’erreur supplémentaire n’a pas été défini ailleurs dans le fichier IDL.
MIDL2012
l’utilisation de constantes à caractères larges nécessite /ms_ext ou /c_ext
Les constantes à caractères larges sont une extension Microsoft de DCE IDL. Pour utiliser le type de données wchar_t, vous ne pouvez pas compiler avec le commutateur /osf , qui remplace les commutateurs par défaut du compilateur MIDL /ms_ext et /c_ext.
MIDL2013
l’utilisation de chaînes de caractères larges nécessite /ms_ext ou /c_ext
Les constantes de chaîne de caractères larges sont une extension Microsoft de DCE IDL. Pour utiliser le type de données wchar_t, vous ne pouvez pas compiler avec le commutateur /osf , qui remplace les commutateurs par défaut du compilateur MIDL /ms_ext et /c_ext.
MIDL2014
redéfinition incohérente du type wchar_t
Le type wchar_t a été redéfini en tant que type qui n’est pas équivalent à dos court non signé *.
MIDL2015
importlib introuvable
Le compilateur n’a pas trouvé la bibliothèque de types spécifiée par la directive [ importlib]. Vérifiez que le chemin d’accès et le nom de la bibliothèque sont corrects.
MIDL2016
deux blocs de bibliothèque
Deux blocs de bibliothèque (même avec des noms différents) dans le même fichier source ne sont pas conformes. Combinez tous les éléments dans un seul bloc de bibliothèque.
MIDL2017
L’instruction dispinterface nécessite une définition pour IDispatch
Cette erreur se produit généralement lorsque les fichiers Stdole2.tlb ou Oaidl.idl ne sont pas importés.
MIDL2018
erreur lors de l’accès à la bibliothèque de types
Le compilateur n’a pas trouvé la bibliothèque de types spécifiée. Vérifiez que vous avez correctement spécifié le chemin d’accès.
MIDL2019
erreur d’accès aux informations de type
La bibliothèque de types importée est endommagée, non valide ou seulement partiellement construite.
MIDL2020
erreur lors de la génération de la bibliothèque de types
La bibliothèque de types n’a pas pu être générée. L’une des causes possibles de cette erreur est la spécification d’un chemin d’accès au fichier IDL de plus de 126 caractères. Oleaut32.dll ne prend pas en charge les noms de chemin d’accès de plus de 126 caractères.
MIDL2021
ID dupliqué
Les applications utilisent l’instruction id dans les fichiers IDL pour spécifier un DISPID pour les fonctions membres. Les fonctions membres peuvent être des propriétés ou des méthodes d’interfaces ou de dispinterfaces. Cette erreur indique que le fichier IDL spécifie le même numéro d’identificateur pour deux méthodes ou propriétés.
MIDL2022
valeur non conforme ou manquante pour l’attribut d’entrée
L’argument de l’attribut d’entrée peut être une chaîne qui spécifie un point d’entrée nommé ou un nombre ordinal qui définit le point d’entrée. Cet argument est manquant ou contient une valeur non valide.
MIDL2023
récupération d’erreur suppose
Le compilateur MIDL a trouvé des caractères non conformes dans le fichier IDL.
MIDL2024
récupération d’erreur ignorées
Le compilateur MIDL a trouvé des caractères non conformes dans le fichier IDL. Il ignore les caractères non conformes.
MIDL2025
erreur de syntaxe
Le compilateur a détecté une erreur de syntaxe à la ligne spécifiée.
MIDL2026
ne peut pas récupérer suite à des erreurs de syntaxe antérieures ; abandon de la compilation
Le compilateur MIDL tente automatiquement de récupérer des erreurs de syntaxe en ajoutant ou en supprimant des éléments syntaxiques. Ce message indique que malgré ces tentatives de récupération, le compilateur a détecté trop d’erreurs. Corrigez la ou les erreurs spécifiées et recompilez.
MIDL2027
option de pragma inconnu
Le pragma C spécifié n’est pas pris en charge dans MIDL. Supprimez le pragma du fichier IDL.
MIDL2028
fonctionnalité non implémentée
La fonctionnalité MIDL, bien qu’elle fait partie de la définition du langage, n’est pas implémentée dans Microsoft RPC et n’est pas prise en charge par le compilateur MIDL. Par exemple, les fonctionnalités de langage suivantes ne sont pas implémentées : bitset, pipe et le type de caractère international. La fonctionnalité de langue non implémentée apparaît dans le champ informations d’erreur supplémentaire du message d’erreur.
MIDL2029
type non implémenté
Le type de données spécifié, bien qu’il s’agisse d’une mot clé MIDL légale, n’est pas implémenté dans Microsoft RPC.
MIDL2030
pointeur non utilisé dans une opération de déréférencement
Un type de données qui n’est pas un pointeur a été associé à des opérations de pointeur. Vous ne pouvez pas accéder à l’objet via le pointeur non spécifié.
MIDL2031
expression a une division par zéro
L’expression constante contient la division par zéro.
MIDL2032
expression utilise des types incompatibles
Les côtés gauche et droit de l’opérateur dans une expression sont de types incompatibles.
MIDL2033
L’expression non-array utilise l’opérateur d’index
L’expression utilise l’opération d’indexation de tableau sur un élément de données qui n’est pas du type de tableau.
MIDL2034
le côté gauche de l’expression ne prend pas la valeur struct/union/enum
L’opérateur de référence directe ou indirecte « . » ou « -> » a été appliqué à un objet de données qui n’est pas une structure, une union ou une énumération. Vous ne pouvez pas obtenir une référence directe ou indirecte à l’aide de l’objet spécifié.
MIDL2035
expression constante attendue
Une expression constante était attendue dans la syntaxe. Par exemple, les limites de tableau nécessitent une expression constante. Le compilateur émet ce message d’erreur lorsque la liaison de tableau est définie avec une variable ou un symbole non défini.
MIDL2036
l’expression ne peut pas être évaluée au moment de la compilation
Le compilateur ne peut pas évaluer une expression au moment de la compilation.
MIDL2037
expression non implémentée
Une fonctionnalité qui était prise en charge dans les versions précédentes du compilateur MIDL n’est pas prise en charge dans la version du compilateur fournie avec Microsoft RPC. Supprimez l’expression spécifiée.
MIDL2038
aucun attribut [pointer_default] spécifié, en supposant [unique] pour tous les pointeurs non attribués
Le compilateur MIDL propose trois cas par défaut différents pour les pointeurs qui n’ont pas d’attributs de pointeur. Les paramètres de fonction qui sont des pointeurs de niveau supérieur sont par défaut des pointeurs [ref]. Les pointeurs incorporés dans les structures et les pointeurs vers d’autres pointeurs (et non des pointeurs de niveau supérieur) correspondent par défaut au type spécifié par l’attribut [pointer_default]. Lorsqu’aucun attribut [pointer_default] n’est fourni, ces pointeurs de niveau supérieur sont par défaut des pointeurs uniques. Ce message d’erreur indique le dernier cas : aucun attribut [pointer_default] n’est fourni et au moins un pointeur de niveau supérieur sera traité comme un pointeur unique. Pour plus d’informations, consultez Types de pointeurs par défaut.
MIDL2039
l’interface n’est pas conforme à l’automatisation du marshaling
L’interface ne répond pas aux exigences d’une interface OLE Automation. Vérifiez que l’interface est dérivée de IUnknown ou IDispatch.
MIDL2040
[out] seul le paramètre ne peut pas être un pointeur vers une structure ouverte
Un paramètre [out]-only a été utilisé comme pointeur vers une structure, appelée structure ouverte, dont la plage et la taille transmises sont déterminées au moment de l’exécution. Le stub du serveur ne sait pas combien d’espace allouer pour une structure ouverte. Utilisez un pointeur vers un pointeur vers la structure ouverte et assurez-vous que l’application serveur lui alloue suffisamment d’espace.
MIDL2041
[out] seul le paramètre ne peut pas être une chaîne non mise en valeur
Un tableau avec l’attribut string a été déclaré en tant que paramètre [out]-only sans spécification de taille. Le stub du serveur a besoin d’informations de taille pour allouer de la mémoire à la chaîne. Vous pouvez supprimer l’attribut string et ajouter l’attribut [size_is] ou remplacer le paramètre par un paramètre [in, out].
MIDL2042
Le paramètre [out] n’est pas un pointeur
Tous les paramètres [out] doivent être des pointeurs, conformément à la convention d’appel par valeur du langage de programmation C. Le paramètre directionnel [out] indique que le serveur transmet une valeur au client. Avec la convention d’appel par valeur, le serveur peut transmettre des données au client uniquement si l’argument de fonction est un pointeur.
MIDL2043
open structure ne peut pas être un paramètre
Une structure ouverte contient un tableau conforme comme dernier élément. Une structure ou une union est tronquée lorsque le dernier élément de cette structure ou union est un tableau conforme.
MIDL2044
[out] handle de contexte/handle générique doit être spécifié en tant que pointeur vers ce type de handle
Un paramètre de handle de contexte ou de handle défini par l’utilisateur avec l’attribut directionnel [out] doit être un pointeur vers un pointeur.
MIDL2045
le handle de contexte ne doit pas dériver d’un type qui a l’attribut [transmit_as]
Les handles de contexte doivent être transmis en tant que types de handles de contexte. Ils ne peuvent pas être transmis comme d’autres types et ne peuvent pas dériver de [transmit_is], [represent_as], [wire_marshal] ou [user_marshal].
MIDL2046
impossible de spécifier un nombre variable d’arguments pour une procédure distante
Les appels de procédure distante qui spécifient un nombre variable d’arguments au moment de la compilation ne sont pas compatibles avec la définition RPC DCE. Vous ne pouvez pas utiliser un nombre variable d’arguments dans Microsoft RPC.
MIDL2047
le paramètre nommé ne peut pas être « void »
Un paramètre avec le type de base void est spécifié avec un nom.
MIDL2048
le paramètre dérive de « coclasse » ou « module »
La coclasse spécifie un objet de niveau supérieur qui contient des interfaces et des dispinterfaces. Il ne peut pas être passé en tant que paramètre.
MIDL2049
seul le premier paramètre peut être un handle de liaison ; vous devez spécifier le commutateur /ms_ext
DCE RPC autorise uniquement le premier paramètre à être un handle de liaison. La compilation avec le commutateur /osf désactive le commutateur /ms_ext par défaut qui prend en charge plusieurs paramètres de handle et de handle autres que la position la plus à gauche.
MIDL2050
impossible d’utiliser [comm_status] sur un paramètre et un type de retour
La procédure et l’un de ses paramètres ont l’attribut [comm_status]. L’attribut [comm_status] spécifie qu’un seul objet de données à la fois peut être de type error_status_t.
MIDL2051
L’attribut [local] d’une procédure nécessite /ms_ext
L’attribut [local] est une extension Microsoft à DCE IDL. Pour utiliser cet attribut sur une fonction, vous ne pouvez pas compiler avec le commutateur /osf . Le commutateur /osf remplace les commutateurs par défaut du compilateur MIDL /ms_ext et /c_ext.
MIDL2052
les attributs de propriété ne peuvent être utilisés qu’avec des procédures
Utilisation incorrecte d’un attribut [propget], [propput] ou [propputref]. Vérifiez que vous avez correctement orthographié le nom de la fonction de la propriété et que la propriété et la fonction portent le même nom.
MIDL2053
une procédure ne peut pas avoir plus d’un attribut de propriété
Au maximum, un seul des attributs [propget], [propput] ou [propputref] peut être spécifié pour une fonction.
MIDL2054
la procédure a une combinaison non conforme d’attributs d’opération
Certains attributs ne peuvent pas être utilisés en relation avec d’autres attributs. Consultez la référence du langage MIDL pour connaître les exigences et la syntaxe exactes des attributs utilisés dans cette procédure.
MIDL2055
le champ dérivant d’un tableau conforme doit être le dernier membre de la structure
La structure contient un tableau conforme qui n’est pas le dernier élément de la structure. Le tableau conforme doit apparaître en tant que dernier élément de structure.
MIDL2056
dupliquer l’étiquette [case]
Une étiquette de casse en double a été spécifiée. L’étiquette dupliquée s’affiche.
MIDL2057
aucun cas [par défaut] spécifié pour l’union discriminée
Une union discriminée a été spécifiée sans cas par défaut.
MIDL2058
l’expression d’attribut ne peut pas être résolue
L’expression associée à l’attribut ne peut pas être résolue. Cette erreur se produit généralement lorsqu’une variable qui apparaît dans l’expression n’est pas définie. Par exemple, l’erreur peut se produire lorsque la variable s n’est pas définie et est utilisée par l’attribut [size_is].
MIDL2059
l’expression d’attribut doit être de type intégral, aucune prise en charge des expressions 64 bits
La variable ou l’expression d’attribut spécifiée doit être un type intégral. Cette erreur se produit lorsque le type attribute-expression ne se résout pas en entier.
MIDL2060
[byte_count] nécessite /ms_ext
L’attribut [byte_count] est une extension Microsoft à DCE IDL. Pour utiliser cet attribut, vous ne pouvez pas compiler avec le commutateur /osf , qui remplace les commutateurs par défaut du compilateur MIDL /ms_ext et /c_ext.
MIDL2061
[byte_count] peut être appliqué uniquement aux paramètres sortants de type pointeur
L’attribut [byte_count] ne peut être appliqué qu’aux paramètres [out] et tous les paramètres [out] doivent être des types pointeurs.
MIDL2062
[byte_count] ne peut pas être spécifié sur un pointeur vers un tableau ou une structure conforme
L’attribut [byte_count] ne peut pas être appliqué à un tableau ou à une structure conforme.
MIDL2063
paramètre spécifiant le nombre d’octets n’est pas uniquement [in] ou le paramètre de nombre d’octets n’est pas [out] uniquement
La valeur associée au [byte_count] doit être transmise du client au serveur ; il doit s’agir d’un paramètre [in]. Le paramètre [byte_count] n’a pas besoin d’être un paramètre [in, out].
MIDL2064
paramètre spécifiant le nombre d’octets n’est pas un type intégral
La valeur associée au nombre d’octets doit être le type entier int, small, short ou long.
MIDL2065
[byte_count] ne peut pas être spécifié sur un paramètre avec des attributs de taille
L’attribut [byte_count] ne peut pas être utilisé avec d’autres attributs de taille tels que [size_is] ou [length_is].
MIDL2066
L’expression [case] n’est pas constante
L’expression spécifiée pour l’étiquette case n’est pas une constante.
MIDL2067
[case] expression n’est pas de type intégral
L’expression spécifiée pour l’étiquette case n’est pas un type entier.
MIDL2068
la spécification de [context_handle] sur un type autre que void * nécessite /ms_ext
Pour la compatibilité DCE-RPC, le handle de contexte doit être un pointeur de type void *. Si vous souhaitez que les descripteurs de contexte soient associés à des types autres que void *, n’utilisez pas le commutateur de compilateur MIDL /osf, qui remplace le commutateur par défaut du compilateur MIDL /ms_ext.
MIDL2069
ne peut pas spécifier plusieurs paramètres avec chacun des comm_status/fault_status
Une procédure ne peut avoir qu’un seul paramètre avec l’attribut [comm_status]. Il peut avoir au plus un paramètre avec l’attribut [fault_status].
MIDL2070
comm_status/fault_status paramètre doit être un paramètre de pointeur [out] uniquement
Les types de code d’erreur [comm_status] et [fault_status] sont transmis du serveur au client et doivent donc être spécifiés en tant que paramètre [out]. En raison des contraintes du langage de programmation C, tous les paramètres [out] doivent être des pointeurs.
MIDL2071
Erreur de syntaxe de point de terminaison
La syntaxe du point de terminaison est incorrecte.
MIDL2072
attribut inapplicable
L’attribut spécifié ne peut pas être appliqué dans cette construction. Par exemple, l’attribut string s’applique aux tableaux de caractères ou aux pointeurs char et ne peut pas être appliqué à une structure qui se compose de deux entiers courts :
typedef [string] struct moo 
{
    short x;
    short y;
};
MIDL2073
[allocate] nécessite /ms_ext
L’attribut allocate représente une extension Microsoft qui n’est pas définie dans le cadre de DCE RPC. Pour utiliser cet attribut, vous ne pouvez pas compiler avec le commutateur /osf , qui remplace le commutateur par défaut du compilateur MIDL /ms_ext
MIDL2074
mode [allocation] non valide
Un mode non valide pour la construction d’attribut [allouer] a été spécifié. Les quatre modes valides sont single_node, all_nodes, on_null et toujours.
MIDL2075
les attributs de longueur ne peuvent pas être appliqués avec l’attribut string
Lorsque l’attribut string est utilisé, les fichiers stub générés appellent la fonction strlen pour déterminer la longueur de la chaîne. N’utilisez pas l’attribut length et l’attribut string pour la même variable.
MIDL2076
[last_is] et [length_is] ne peuvent pas être spécifiés en même temps
[last_is] et [length_is] ont été spécifiés pour le même tableau. Ces attributs sont liés comme suit : length = last first + 1. Étant donné que chaque valeur peut être dérivée de l’autre, ne spécifiez pas les deux.
MIDL2077
[max_is] et [size_is] ne peuvent pas être spécifiés simultanément
[ max_is] et [ size_is] ont été spécifiés pour le même tableau. Ces attributs sont liés comme suit : max = size + 1. Étant donné que chaque valeur peut être dérivée de l’autre, ne spécifiez pas les deux.
MIDL2078
attribut no [switch_is] spécifié lors de l’utilisation de l’union
Aucun discriminant n’a été spécifié pour le syndicat. L’attribut [switch_is] indique le discriminant utilisé pour sélectionner parmi les champs d’union.
MIDL2079
no [uuid] spécifié
Aucun UUID n’a été spécifié pour l’interface.
MIDL2080
[uuid] ignoré sur l’interface [local]
L’utilisation de l’attribut [local] sur une interface objet entraîne l’ignorer par le compilateur MIDL de l’attribut [uuid]. Vous ne pouvez pas utiliser les deux attributs sur une interface RPC.
MIDL2081
incompatibilité de type entre les expressions d’attribut length et size
Les expressions d’attribut de longueur et de taille doivent être des mêmes types. Par exemple, cet avertissement est émis lorsque la variable d’attribut de l’expression [size_is] est de type long non signé et que la variable d’attribut pour l’expression [length_is] est de type long.
MIDL2082
L’attribut [string] doit être spécifié « byte », « char » ou « wchar_t » tableau ou pointeur
Un attribut de chaîne ne peut pas être appliqué à un pointeur ou un tableau dont le type de base n’est pas un octet, un char ou un struct dans lequel les membres sont tous de type octet ou char .
MIDL2083
incompatibilité entre le type de l’expression [switch_is] et le type de commutateur de l’union
Si l’union [switch_type] n’est pas spécifiée, le type de commutateur est le même que le champ [switch_is].
MIDL2084
[transmit_as] ne doit pas être appliqué à un type qui dérive d’un handle de contexte
Les handles de contexte ne peuvent pas être transmis comme d’autres types.
MIDL2085
[transmit_as] doit spécifier un type transmissible
Le type [transmit_as] spécifié dérive d’un type qui ne peut pas être transmis par Microsoft RPC, tel que void, void *ou int. Utilisez un type de base RPC défini ; dans le cas de int, ajoutez des spécificateurs de taille tels que small, short ou long pour qualifier l’int.
MIDL2086
le type transmis pour [transmit_as] et [represent_as] ne doit pas être un pointeur ou dériver d’un pointeur
Le type transmis ne peut pas être un pointeur ou dériver d’un pointeur.
MIDL2087
le type présenté pour [transmit_as] et [represent_as] ne doit pas dériver d’un tableau conforme/variable, de son équivalent de pointeur ou d’une structure conforme/variable
Le type auquel [transmit_as] a été appliqué ne peut pas dériver d’un tableau ou d’une structure conforme (tableau ou structure dont la taille est déterminée au moment de l’exécution).
MIDL2088
Le format [uuid] est incorrect
Le format UUID n’est pas conforme à la spécification. L’UUID doit être une chaîne qui se compose de cinq séquences de chiffres hexadécimaux de longueur 8, 4, 4, 4 et 12 chiffres. « 12345678-1234-ABCD-EF01-28A49C28F17D » est un UUID valide. Utilisez la fonction UuidCreate ou un utilitaire pour générer un UUID valide.
MIDL2089
uuid n’est pas un nombre hexadécimal
L’UUID spécifié pour l’interface contient des caractères non valides dans une représentation numérique hexadécimale. Les caractères 0 à 9 et A à F sont valides dans une représentation hexadécimale.
MIDL2090
les paramètres facultatifs doivent venir après les paramètres requis
Pour obtenir une description de l’ordre des listes de paramètres, consultez [facultatif] dans la référence du langage MIDL.
MIDL2091
[dllname] obligatoire lorsque [entry] est utilisé
Si vous spécifiez un point d’entrée dans une DLL, vous devez également spécifier le nom de cette DLL à l’aide de l’attribut [dllname].
MIDL2092
[pouvant être lié] n’est pas valide sans [propget], [propput] ou [propputref]
L’attribut [pouvant être lié] est valide uniquement sur une propriété. Par conséquent, vous devez également spécifier l’une des fonctions d’accès à la propriété ou de paramètre de propriété.
MIDL2093
les procédures avec [propput] ou [propputref] doivent avoir au moins un paramètre
Une procédure [propput] ou [ propputref] doit avoir au moins un paramètre [in] avec la propriété à définir ; une procédure [propget] doit avoir au moins un paramètre [out, retval] pour recevoir la propriété ou la référence.
MIDL2094
L’attribut [id] est requis
Cette fonction membre, en raison de la syntaxe dispinterface utilisée, nécessite un DISPID que vous spécifiez à l’aide de l’attribut [ id]. Lorsque vous spécifiez une dispinterface à l’aide de propriétés et de méthodes, vous devez spécifier un DISPID pour chaque propriété et méthode.
MIDL2095
le nom d’interface spécifié dans le fichier ACF ne correspond pas à celui spécifié dans le fichier IDL
En mode compilateur actuel, le nom qui suit l’interface mot clé dans le fichier ACF doit être identique au nom qui suit l’interface mot clé dans le fichier IDL. Les noms d’interface dans les fichiers IDL et ACF peuvent être différents lorsque vous compilez avec le commutateur du compilateur MIDL /acf.
MIDL2096
attribut dupliqué
Des attributs en double ou en conflit ont été spécifiés. Cette erreur se produit souvent lorsque deux attributs s’excluent mutuellement. Par exemple, les attributs [code] et [nocode] ne peuvent pas être utilisés en même temps.
MIDL2097
le paramètre avec l’attribut [comm_status] ou [fault_status] doit être un pointeur vers le type error_status_t
Lorsque [fault_status] ou [comm_status] est utilisé comme attribut de paramètre, le paramètre doit être un paramètre [out] de type error_status_t. Si une erreur de serveur se produit, le paramètre est défini sur le code d’erreur. Une fois l’appel distant terminé, la procédure définit la valeur.
MIDL2098
une procédure [local] ne peut pas être spécifiée dans le fichier ACF
Une procédure locale a été spécifiée dans ACF. La procédure locale ne peut être spécifiée que dans le fichier IDL.
MIDL2099
le type spécifié n’est pas défini en tant que handle
Le type spécifié dans l’attribut [implicit_handle] n’est pas défini comme type de handle. Modifiez la définition de type ou le nom de type spécifié par l’attribut.
MIDL2100
procédure non définie
Un attribut a été appliqué à une procédure dans l’ACF, et cette procédure n’est pas définie dans le fichier IDL.
MIDL2101
ce paramètre n’existe pas dans le fichier IDL
Un paramètre spécifié dans le fichier ACF n’existe pas dans la définition du fichier IDL. Tous les paramètres, fonctions et définitions de type qui apparaissent dans le fichier ACF doivent correspondre aux paramètres, fonctions et types précédemment définis dans le fichier IDL.
MIDL2102
cette construction de limites de tableau n’est pas prise en charge
MIDL prend actuellement en charge l’expression des limites supérieure et inférieure d’un tableau sous la forme Tableau[Inférieur .. Supérieur] uniquement lorsque la constante qui spécifie la limite inférieure du tableau est résolue à la valeur zéro.
MIDL2103
spécification liée au tableau est illégale
La spécification utilisateur des limites de tableau pour le tableau de taille fixe est illégale. Par exemple :
typedef short Array[-1]
MIDL2104
pointeur vers un tableau conforme ou un tableau qui contient un tableau conforme n’est pas pris en charge
Utilisation de tableau conforme non conforme. Pour connaître les règles régissant les tableaux conformes, consultez Tableaux et RPC.
MIDL2105
pointee/array ne dérive aucune taille
Un tableau conforme a été spécifié sans spécification de taille. Vous pouvez spécifier la taille avec l’attribut [max_is] ou [size_is].
MIDL2106
seuls les tableaux fixes et les SAFEARRAYs sont légaux dans une bibliothèque de types
Vous avez utilisé un type de tableau à l’intérieur d’une instruction de bibliothèque qui ne peut pas être utilisé dans une bibliothèque de types.
MIDL2107
LES SAFEARRAYs ne sont légaux qu’à l’intérieur d’un bloc de bibliothèque
Le compilateur MIDL ne reconnaît pas un SAFEARRAY en tant que type de données valide, sauf lors de la génération d’une bibliothèque de types.
MIDL2108
constante de caractère mal formée
Le caractère de fin de ligne n’est pas autorisé dans les constantes de caractères.
MIDL2109
fin du fichier trouvé dans le commentaire
Le caractère de fin de fichier a été rencontré dans un commentaire.
MIDL2110
fin du fichier trouvé dans la chaîne
Le caractère de fin de fichier a été rencontré dans une chaîne.
MIDL2111
la longueur de l’identificateur dépasse 31 caractères
Les identificateurs sont limités à 31 caractères alphanumériques. Les noms d’identificateur de plus de 31 caractères sont tronqués.
MIDL2112
fin de ligne trouvée dans la chaîne
Le caractère de fin de ligne a été rencontré dans la chaîne. Vérifiez que vous avez inclus le caractère guillemet double qui termine la chaîne.
MIDL2113
la constante string dépasse la limite de 255 caractères
La chaîne a dépassé la longueur maximale autorisée de 255 caractères.
MIDL2114
l’identificateur dépasse la limite de 255 caractères et a été tronqué
L’identificateur a dépassé la longueur maximale autorisée de 255 caractères. Les caractères excédentaires de l’identificateur sont tronqués.
MIDL2115
constante trop grande
La constante est trop grande pour être représentée en interne.
MIDL2116
erreur d’analyse numérique
Le compilateur n’a pas pu analyser l’identificateur numérique.
MIDL2117
erreur lors de l’ouverture du fichier
Le système d’exploitation a signalé une erreur lors de la tentative d’ouverture d’un fichier de sortie. Cette erreur peut être provoquée par un nom trop long pour le système de fichiers ou par un nom de fichier en double.
MIDL2118
liaison d’erreur à la fonction
MIDL2119
erreur lors de l’initialisation d’OLE
MIDL2120
erreur lors du chargement de la bibliothèque
MIDL2121
[out] seul le paramètre ne doit pas dériver d’un pointeur/tableau de niveau supérieur [unique] ou [ptr]
Un pointeur unique ne peut pas être un paramètre [out]-only. Par définition, un pointeur unique peut passer de NULL à non NULL. Aucune information sur le paramètre [out]-only n’est transmise du client au serveur.
MIDL2122
l’attribut n’est pas applicable à cette union non rpcable
Seuls les attributs [switch_is] et [switch_type] s’appliquent à une union transmise dans le cadre d’un appel de procédure distante.
MIDL2123
expression utilisée pour un attribut size ne doit pas dériver d’un paramètre [out]-only
La valeur d’un paramètre [out]-only n’est pas transmise au serveur et ne peut pas être utilisée pour déterminer la longueur ou la taille du paramètre [in].
MIDL2124
expression utilisée pour un attribut length pour un paramètre [in] ne peut pas dériver d’un paramètre [out]-only
La valeur d’un paramètre [out]-only n’est pas transmise au serveur et ne peut pas être utilisée pour déterminer la longueur ou la taille du paramètre [in].
MIDL2125
utilisation des besoins « int » /c_ext
MIDL est un langage fortement typé. Tous les paramètres transmis sur le réseau doivent être dérivés de l’un des types de base MIDL. Le type int n’est pas défini dans le cadre de MIDL. Les données transmises doivent inclure un spécificateur de taille : petit, court ou long. Les données qui ne sont pas transmises sur le réseau peuvent être incluses dans une interface ; utilisez le commutateur /c_ext .
MIDL2126
le champ struct/union ne doit pas être « void »
Les champs d’une structure ou d’une union doivent être déclarés comme étant d’un type de base spécifique pris en charge par MIDL ou d’un type dérivé des types de base. Les types Void ne sont pas autorisés dans les opérations distantes.
MIDL2127
l’élément array ne doit pas être void
Un élément de tableau ne peut pas être void.
MIDL2128
l’utilisation de qualificateurs de type et/ou de modificateurs a besoin de /c_ext
Les modificateurs de type tels que _cdecl et _far ne peuvent être compilés que si vous spécifiez le commutateur /c_ext .
MIDL2129
Le champ struct/union ne doit pas dériver d’une fonction
Les champs d’une structure ou d’une union doivent être des types de base MIDL ou des types dérivés de ces types de base. Les fonctions ne sont pas légales dans les domaines de structure ou d’union.
MIDL2130
l’élément array ne doit pas être une fonction
Un élément de tableau ne peut pas être une fonction.
MIDL2131
le paramètre ne doit pas être une fonction
Le paramètre d’une procédure distante doit être une variable d’un type spécifié. Une fonction ne peut pas être un paramètre de la procédure distante.
MIDL2132
struct/union avec des champs de bits a besoin de /c_ext
Vous devez spécifier le commutateur du compilateur MIDL /c_ext pour autoriser les champs de bits dans les structures qui ne sont pas transmises dans un appel de procédure distante.
MIDL2133
spécification de champ bit sur un type autre que « int » est une extension non compatible ANSI
La spécification du langage de programmation ANSI C n’autorise pas l’application de champs de bits à des types non-contenus.
MIDL2134
La spécification de champ bit ne peut être appliquée qu’aux types intégraux simples
La spécification du langage de programmation ANSI C n’autorise pas l’application de champs de bits à des types non-contenus.
MIDL2135
Le champ struct/union ne doit pas dériver de handle_t ou d’un handle de contexte
Les handles de contexte ne peuvent pas être transmis dans le cadre d’une autre structure. Ils doivent être transmis en tant que handles de contexte.
MIDL2136
l’élément array ne doit pas dériver de handle_t ou d’un handle de contexte
Les handles de contexte ne peuvent pas être transmis dans le cadre d’un tableau.
MIDL2137
cette spécification de l’union a besoin de /c_ext
Une union qui apparaît dans la définition de l’interface doit être associée au discriminant ou déclarée comme locale. Les données qui ne sont pas transmises sur le réseau peuvent être déclarées implicitement comme locales lorsque vous utilisez le commutateur /c_ext , qui est la valeur par défaut midl. Vous ne pouvez pas compiler cet IDL avec le commutateur /osf .
MIDL2138
le paramètre dérivant d’un « int » doit avoir le spécificateur de taille « small », « short » ou « long » avec « int »
Le type int est uniquement un type MIDL valide sur les plateformes 32 bits, sur les systèmes 16 bits int doit être accompagné d’une spécification de taille. Utilisez l’un des spécificateurs de taille small, short ou long.
MIDL2139
type du paramètre ne peut pas dériver de void ou void*
MIDL est un langage fortement typé. Tous les paramètres transmis sur le réseau doivent être dérivés de l’un des types de base MIDL. MIDL ne prend pas en charge void en tant que type de base. Vous devez remplacer la déclaration par un type MIDL valide.
MIDL2140
le paramètre dérivant d’un struct/union contenant des champs de bits n’est pas pris en charge
Les champs de bits ne sont pas définis comme un type de données valide par DCE RPC.
MIDL2141
l’utilisation d’un paramètre dérivant d’un type contenant type-modificateurs/type-qualificateurs nécessite /c_ext
L’utilisation de mots clés tels que far, near, const et volatile dans le fichier IDL est une extension Microsoft à DCE RPC. Ces mots clés ne sont pas disponibles lorsque vous compilez avec le commutateur /osf , ce qui désactive le commutateur d’extension /c_ext par défaut.
MIDL2142
le paramètre ne doit pas dériver d’un pointeur vers une fonction
Les bibliothèques d’exécution RPC transmettent un pointeur et ses données associées entre le client et le serveur. Les pointeurs vers des fonctions ne peuvent pas être transmis en tant que paramètres, car la fonction ne peut pas être transmise sur le réseau.
MIDL2143
le paramètre ne doit pas dériver d’une union prenant en charge nonrpc
L’union doit être associée à un discriminant. Utilisez les attributs [switch_is] et [switch_type].
MIDL2144
le type de retour dérive d’un « int ». Vous devez utiliser des spécificateurs de taille avec « int »
Sur les systèmes 16 bits, le type int n’est pas un type MIDL valide, sauf s’il est accompagné d’une spécification de taille. Utilisez l’un des spécificateurs de taille small, short ou long.
MIDL2145
le type de retour ne doit pas dériver d’un pointeur void
MIDL est un langage fortement typé. Tous les paramètres transmis sur le réseau doivent être dérivés de l’un des types de base MIDL. Les types Void ne sont pas définis dans le cadre de MIDL. Vous devez remplacer la déclaration par un type MIDL valide.
MIDL2146
le type de retour ne doit pas dériver d’une structure/union contenant des champs binaires
Les champs de bits ne sont pas définis comme un type de données valide par DCE RPC.
MIDL2147
le type de retour ne doit pas dériver d’une union prenant en charge non la fonction
L’union doit être associée à un discriminant. Utilisez les attributs [switch_is] et [switch_type].
MIDL2148
le type de retour ne doit pas dériver d’un pointeur vers une fonction
Les bibliothèques d’exécution RPC transmettent un pointeur et ses données associées entre le client et le serveur. Les pointeurs vers les fonctions ne peuvent pas être transmis en tant que paramètres, car RPC ne définit pas de méthode pour transmettre la fonction associée sur le réseau.
MIDL2149
les initialiseurs composés ne sont pas pris en charge
DCE RPC prend uniquement en charge l’initialisation simple. La structure ou le tableau ne peut pas être initialisé dans le fichier IDL.
MIDL2150
Les attributs ACF dans le fichier IDL ont besoin du commutateur /app_config
Une extension Microsoft vous permet de spécifier des attributs ACF dans le fichier IDL. Utilisez le commutateur /app_config pour activer cette extension.
MIDL2151
commentaire de ligne unique a besoin de /ms_ext ou /c_ext
Les commentaires sur une seule ligne qui utilisent deux barres obliques (//) représentent une extension Microsoft au RPC DCE. Vous ne pouvez pas utiliser de commentaires sur une seule ligne si vous compilez avec le commutateur /osf .
MIDL2152
Le format [version] est incorrect
Le numéro de version de l’interface dans l’en-tête d’interface doit être spécifié au format principal. mineure, où chaque nombre peut être compris entre 0 et 65535.
MIDL2153
« signed » a besoin de /ms_ext ou /c_ext
L’utilisation de la mot clé signée est une extension Microsoft à DCE RPC. Vous ne pouvez pas utiliser le commutateur /osf si vous souhaitez utiliser cette fonctionnalité.
MIDL2154
incompatibilité dans le type d’affectation
Le type de la variable ne correspond pas au type de la valeur affectée à la variable.
MIDL2155
la déclaration doit être de la forme : const <type> \<declarator> = <initialisation de l’expression>
La déclaration n’est pas compatible avec la syntaxe RPC DCE. Utilisez le commutateur de mode de compilateur /ms_ext ou /c_ext MIDL.
MIDL2156
la déclaration doit avoir « const »
Les déclarations dans le fichier IDL doivent être des expressions constantes qui utilisent le mot clé const, par exemple :
const short x = 2;
MIDL2157
struct/union/enum ne doit pas être défini dans une spécification de type paramètre
La structure, l’union ou le type énuméré doivent être explicitement indiqués en dehors du prototype de fonction.
MIDL2158
L’attribut [allouer] doit être appliqué uniquement sur les types de pointeurs non vides
L’attribut [allouer] est conçu pour les structures de données complexes basées sur un pointeur. Lorsque l’attribut [allouer] est spécifié, le fichier stub traverse la structure de données pour calculer la taille totale de tous les objets accessibles à partir du pointeur et de tous les autres pointeurs de la structure de données. Remplacez le type par un type de pointeur nonvoid ou supprimez l’attribut [allouer] et utilisez une autre méthode pour déterminer sa taille d’allocation, comme l’opérateur sizeof .
MIDL2159
tableau ou construction de pointeur équivalente ne peut pas dériver d’une union non encapsulée
Chaque union doit être associée à un discriminant. Les tableaux d’unions ne sont pas autorisés, car ils ne fournissent pas le discriminant associé. Les tableaux de structures dans lesquels la structure package l’union et son discriminant sont autorisés, car les stubs peuvent utiliser le discriminant pour déterminer la taille de chaque union.
MIDL2160
champ ne doit pas dériver d’un type error_status_t
Le type error_status_t ne peut être utilisé que comme paramètre ou type de retour. Il ne peut pas être incorporé dans le champ d’une structure ou d’une union.
MIDL2161
union a au moins un bras sans étiquette de casse
La déclaration d’union ne correspond pas à la syntaxe MIDL requise pour l’union. Chaque branche d’union nécessite une étiquette de casse ou une étiquette par défaut qui sélectionne ce bras d’union.
MIDL2162
la valeur de paramètre ou de retour ne doit pas dériver d’un type auquel [ignore] est appliqué
L’attribut [ignore] est un attribut de champ qui ne peut être appliqué qu’aux champs, tels que les champs de structures et de tableaux. L’attribut [ignore] indique que le stub ne doit pas déréférencer le pointeur pendant la transmission et n’est pas autorisé lorsqu’il est en conflit avec d’autres attributs qui doivent être déréférencés, tels que les paramètres [out] et les valeurs de retour de fonction.
MIDL2163
un attribut pointeur est déjà appliqué au pointeur
Un seul des attributs de pointeur, [ref], [unique] ou [ptr], peut être appliqué à un pointeur unique.
MIDL2164
champ/paramètre ne doit pas dériver d’une structure récursive via un pointeur ref
Par définition, un pointeur de référence ne peut pas être défini sur NULL. Une structure de données récursive définie avec un pointeur de référence n’a pas d’éléments NULL et, par convention, n’est pas déterminée. Utilisez un attribut de pointeur [unique] pour permettre à la structure de données de spécifier un élément NULL ou redéfinissez la structure de données en tant que structure de données non récursive.
MIDL2165
l’utilisation d’un champ dérivant d’un pointeur void nécessite /c_ext
Le type void * et les autres types et qualificateurs de type qui ne sont pas pris en charge par l’IDL DCE sont autorisés dans le fichier IDL uniquement lorsque vous utilisez les paramètres du compilateur MIDL par défaut. L’utilisation du commutateur /osf remplace cette valeur par défaut. Si vous devez compiler en mode de compatibilité osf, vous devez redéfinir le type de pointeur.
MIDL2166
l’utilisation de cet attribut nécessite /ms_ext
Cette fonctionnalité de langage est une extension Microsoft de DCE IDL. Vous ne pouvez pas utiliser cette fonctionnalité si vous effectuez la compilation en mode de compatibilité osf ( /osf ).
MIDL2167
cet attribut n’est autorisé qu’avec les nouvelles bibliothèques de types de format
Pour utiliser cet attribut, vous avez besoin de la version de Oleaut32.dll fournie avec Windows 2000 ou version ultérieure.
MIDL2168
utilisation de wchar_t besoins /ms_ext ou /c_ext
Le type de caractères larges représente une extension de L’IDL DCE. Le compilateur MIDL n’accepte pas le type de caractères larges lorsque vous spécifiez le commutateur /osf .
MIDL2169
les champs sans nom ont besoin de /ms_ext ou /c_ext
DCE IDL ne prend pas en charge l’utilisation de structures sans nom ou d’unions incorporées dans d’autres structures ou unions. Dans DCE IDL, tous ces champs incorporés doivent être nommés. Le compilateur MIDL n’autorise pas leur utilisation lorsque vous spécifiez le commutateur /osf .
MIDL2170
les champs sans nom ne peuvent dériver qu’à partir de types struct/union
L’extension Microsoft de l’IDL DCE qui prend en charge les champs sans nom s’applique uniquement aux structures et aux unions. Vous devez attribuer un nom au champ ou redéfinir le champ pour respecter cette restriction.
MIDL2171
champ d’une union ne peut pas dériver d’un tableau conforme/variable ou de son équivalent de pointeur
Le tableau conforme ne peut pas apparaître seul dans l’union, mais doit être accompagné de la valeur qui spécifie la taille du tableau. Au lieu d’utiliser le tableau comme bras d’union, utilisez une structure qui se compose du tableau conforme et de l’identificateur qui spécifie sa taille.
MIDL2172
aucun attribut [pointer_default] spécifié, en supposant que [ptr] pour tous les pointeurs non attribués dans l’interface
L’implémentation DCE IDL spécifie que tous les pointeurs de chaque fichier IDL doivent être associés à des attributs de pointeur. Lorsqu’un attribut de pointeur explicite n’est pas attribué au paramètre ou au type de pointeur et qu’aucun attribut [pointer_default] n’est spécifié dans le fichier IDL, l’attribut de pointeur complet ptr est associé au pointeur. Vous pouvez modifier les attributs de pointeur à l’aide d’attributs de pointeur explicites, en spécifiant un attribut [pointer_default] ou en spécifiant le commutateur /ms_ext pour modifier la valeur par défaut pour les pointeurs non attribués sur [unique].
MIDL2173
l’initialisation de l’expression doit être résolue en expression constante
Si une expression est utilisée comme initialiseur, l’expression doit être une expression constante. Cela est vrai dans tous les modes du compilateur MIDL. L’expression doit être résolue au moment de la compilation. Spécifiez une constante littérale ou une expression qui se résout en constante plutôt qu’en variable.
MIDL2174
l’expression d’attribut doit être de type integer, char, Boolean ou enum
Le type spécifié ne se résout pas en type de commutateur valide. Utilisez un type entier, caractère, octet, booléen ou énumération , ou un type dérivé de l’un de ces types.
MIDL2175
constante illégale
La constante spécifiée est hors de la plage valide pour le type spécifié.
MIDL2176
attribut non implémenté ; Ignoré
L’attribut spécifié n’est pas implémenté dans cette version de Microsoft RPC. Le compilateur MIDL continue de traiter le fichier IDL comme si l’attribut n’était pas présent.
MIDL2177
le type de retour ne doit pas dériver d’un pointeur [ref]
Les valeurs de retour de fonction qui sont définies pour être des types de pointeurs doivent être spécifiées en tant que pointeurs [uniques] ou complets . Vous ne pouvez pas utiliser de pointeurs de référence.
MIDL2178
l’expression d’attribut doit être un nom de variable ou une expression de déréférence de pointeur dans ce mode. Vous devez spécifier le commutateur /ms_ext
Le compilateur IDL DCE exige que la taille associée à l’attribut [size_is] soit spécifiée par une variable ou une variable pointeur. Si vous souhaitez tirer parti de l’extension Microsoft qui permet à l’attribut [size_is] d’être défini par une expression constante, vous ne pouvez pas utiliser le commutateur du compilateur /osf .
MIDL2179
le paramètre ne doit pas dériver d’une union récursive non encapsulée
Une union doit inclure un discriminant, de sorte qu’un syndicat ne peut pas avoir une autre union comme élément. Une union ne peut être incorporée dans une autre union que lorsqu’elle fait partie d’une structure qui inclut le discriminant.
MIDL2180
le paramètre binding-handle ne peut pas être uniquement [out]
Le paramètre handle identifié par le compilateur MIDL comme handle de liaison pour cette opération doit être un paramètre [in]. Les paramètres [out]-only ne sont pas définis sur le stub client, et le handle de liaison doit être défini sur le client.
MIDL2181
le pointeur vers un handle ne peut pas être [unique] ou [ptr]
Vous ne pouvez pas utiliser les attributs de pointeur uniques et complets pour un pointeur vers un handle. Ces attributs autorisent la valeur NULL, et le handle de liaison ne peut pas être NULL. Utilisez l’attribut [ref] pour dériver le paramètre binding-handle à partir de pointeurs de référence.
MIDL2182
le paramètre qui n’est pas un handle de liaison ne doit pas dériver de handle_t
Le type de handle primitif handle_t n’est pas un type de données valide transmis sur le réseau. Remplacez le type de paramètre par un type autre que handle_t, ou supprimez le paramètre.
MIDL2183
fin inattendue du fichier trouvé
Le compilateur MIDL a trouvé la fin du fichier avant de pouvoir résoudre avec succès tous les éléments syntaxiques du fichier. Vérifiez que le caractère d’accolade droite de fin (}) est présent à la fin du fichier, ou case activée la syntaxe.
MIDL2184
[transmit_as] ne doit pas être appliqué au type dérivant de handle_t
Le type de handle primitif handle_t n’est pas transmis sur le réseau.
MIDL2185
[context_handle] ne doit pas être appliqué à un type auquel [handle] est appliqué
Les attributs [context_handle] et [handle] ne peuvent pas être appliqués au même type.
MIDL2186
[handle] ne doit pas être spécifié sur un type dérivant de void ou void *
Un type spécifié avec l’attribut [handle] peut être transmis sur le réseau, mais le type void* n’est pas un type transmissible. Le type de handle doit être résolu en un type qui dérive des types de base transmissibles.
MIDL2187
le paramètre doit avoir [in], [out] ou [in,out] dans ce mode. Vous devez spécifier /ms_ext ou /c_ext
Le compilateur IDL DCE exige que tous les paramètres aient des paramètres directionnels explicites. Pour utiliser les extensions Microsoft pour DCE IDL, vous ne pouvez pas utiliser le commutateur /osf , qui remplace /ms_ext et /c_ext.
MIDL2188
le type transmis ne peut pas dériver de « void » pour [transmit_as], [represent_as], [wire_marshal], [user_marshal]
L’attribut [transmit_as] s’applique uniquement aux types de pointeurs. Utilisez le type void* à la place de void.
MIDL2189
« void » doit être spécifié sur la première et seule spécification de paramètre
Le mot clé void apparaît incorrectement avec d’autres paramètres de fonction. Pour spécifier une fonction sans paramètres, le mot clé void doit être le seul élément de la liste de paramètres, comme dans l’exemple suivant :
void Moo(void)
MIDL2190
[switch_is] doit être spécifié uniquement sur un type dérivant d’une union non encapsulée
L’mot clé [switch_is] est incorrectement appliquée. Il ne peut être utilisé qu’avec des types d’union non encapsulés.
MIDL2191
Les structures stringables ne sont pas implémentées dans cette version
DCE IDL permet à l’attribut [string] de s’appliquer à une structure dont les éléments se composent uniquement de caractères, d’octets ou de types qui sont résolus en caractères ou en octets. Cette fonctionnalité n’est pas prise en charge dans Microsoft RPC. L’attribut [string] ne peut pas être appliqué à la structure dans son ensemble. Toutefois, il peut être appliqué à chaque tableau individuel.
MIDL2192
le type de commutateur ne peut être que intégral, char, booléen ou enum
Le type spécifié n’est pas résolu en un type de commutateur valide. Utilisez un entier, un caractère, un octet, un type booléen, un type enum ou un type dérivé de l’un de ces types.
MIDL2193
[handle] ne doit pas être spécifié sur un type dérivant de handle_t
Un type de handle doit être défini à l’aide d’un et d’un seul des types ou attributs de handle. Utilisez le type primitif handle_t ou l’attribut [handle], mais pas les deux. Le type de handle défini par l’utilisateur doit être transmissible, mais le type handle_t n’est pas transmis sur le réseau.
MIDL2194
le paramètre dérivant de handle_t ne doit pas être un paramètre [out]
Un handle du type primitif handle_t est significatif uniquement du côté de l’application dans laquelle il est défini. Le type handle_t n’est pas transmis sur le réseau.
MIDL2195
l’expression d’attribut dérive de la déréférencement du pointeur [unique] ou [ptr]
Bien que les attributs [unique] et pointeur complet autorisent les pointeurs à avoir des valeurs NULL , l’expression qui définit l’attribut size ou length ne doit jamais avoir de valeur NULL . Lorsque des pointeurs sont utilisés, MIDL limite les expressions aux pointeurs [ref].
MIDL2196
« cpp_quote » nécessite /ms_ext
L’attribut cpp_quote est une extension Microsoft à DCE IDL. N’utilisez pas le commutateur du compilateur MIDL /osf, qui remplace /ms_ext.
MIDL2197
l’uuid entre guillemets nécessite /ms_ext
La possibilité de spécifier une valeur UUID entre guillemets est une extension Microsoft à DCE IDL. N’utilisez pas le commutateur du compilateur MIDL /osf, qui remplace /ms_ext.
MIDL2198
le type de retour ne peut pas dériver d’une union non encapsulée
L’union non encapsulée ne peut pas être utilisée comme type de retour de fonction. Pour retourner le type d’union, spécifiez le type union en tant que paramètre [out] ou [in, out].
MIDL2199
le type de retour ne peut pas dériver d’une structure conforme
La taille du type de retour doit être une constante. Vous ne pouvez pas spécifier comme type de retour une structure qui contient un tableau conforme même si la structure inclut également son spécificateur de taille. Pour retourner la structure conforme, spécifiez la structure en tant que paramètre [out] ou [in, out].
MIDL2200
[transmit_as] ne doit pas être appliqué à un type dérivant d’un handle générique
Dans cette version, les attributs [handle] et [transmit_as] ne peuvent pas être combinés sur le même type.
MIDL2201
[handle] ne doit pas être appliqué à un type auquel [transmit_as] est appliqué
Dans cette version, les attributs [handle] et [transmit_as] ne peuvent pas être combinés sur le même type.
MIDL2202
le type spécifié pour la déclaration const n’est pas valide
Les déclarations constantes sont limitées aux types entier, caractère, caractère large, chaîne et booléen.
MIDL2203
l’opérande vers l’opérateur sizeof n’est pas pris en charge
Le compilateur MIDL prend en charge l’opération sizeof pour les types simples uniquement. L’opérande spécifié n’est pas évalué à un type entier.
MIDL2204
ce nom déjà utilisé comme nom d’identificateur const
L’identificateur a précédemment été utilisé pour identifier une constante dans une déclaration const . Modifiez le nom de l’un des identificateurs afin que les identificateurs soient uniques.
MIDL2205
redéfinition incohérente du type error_status_t
Le type error_status_t doit être résolu en type long non signé. D’autres définitions de type ne peuvent pas être utilisées.
MIDL2206
[case] valeur hors de la plage du type de commutateur
La valeur associée à la casse de l’instruction switch est hors de portée pour le type de commutateur spécifié. Par exemple, cette erreur se produit lorsqu’une valeur entière longue est utilisée dans l’instruction case pour un type entier court.
MIDL2207
paramètre dérivant de wchar_t besoins /ms_ext
Le type de caractères larges wchar_t est une extension Microsoft de DCE IDL. N’utilisez pas le commutateur de compilateur MIDL /osf, qui remplace /ms_ext
MIDL2208
cette interface n’a que des rappels
Les rappels sont valides uniquement dans le contexte d’un appel de procédure distante. L’interface doit inclure au moins un prototype de fonction pour un appel de procédure distante qui n’inclut pas l’attribut [rappel].
MIDL2209
attribut spécifié de manière redondante ; Ignoré
L’attribut spécifié a été appliqué plusieurs fois. Plusieurs instances du même attribut sont ignorées.
MIDL2210
type de handle de contexte utilisé pour un handle implicite
Un type qui a été défini à l’aide de l’attribut [context_handle] a été spécifié comme type de handle dans un attribut [ implicit_handle]. Les attributs ne peuvent pas être combinés de cette façon.
MIDL2211
options en conflit spécifiées pour [allouer]
Les options spécifiées pour l’attribut ACF [allouer] représentent des directives en conflit. Par exemple, spécifiez l’option all_nodes ou l’option single_node, mais pas les deux.
MIDL2212
erreur lors de l’écriture dans un fichier
Une erreur s’est produite lors de l’écriture dans le fichier. Cette condition peut être due à des erreurs relatives à l’espace disque, aux handles de fichiers, aux restrictions d’accès aux fichiers et aux défaillances matérielles.
MIDL2213
aucun type de commutateur trouvé lors de la définition de l’union, à l’aide du type [switch_is]
La définition d’union n’inclut pas d’attribut [switch_type] explicite. Le type de la variable spécifiée par l’attribut [switch_is] est utilisé comme type de commutateur.
MIDL2214
sémantique case activée incomplète en raison d’erreurs précédentes
Le compilateur MIDL effectue deux passes sur le ou les fichiers d’entrée pour résoudre les déclarations de transfert. En raison d’erreurs rencontrées lors de la première passe, la vérification de la deuxième passe n’a pas été effectuée. Les erreurs non signalées relatives aux déclarations de transfert peuvent toujours être présentes dans le fichier.
MIDL2215
le paramètre handle ou le type de retour n’est pas pris en charge sur une procédure [rappel]
Une procédure [rappel] se produit dans le contexte d’un appel d’un client au serveur et utilise le même handle de liaison que l’appel d’origine. Les paramètres de handle de liaison explicite ou les types de retour ne sont pas autorisés dans les fonctions de rappel.
MIDL2216
[ptr] ne prend pas en charge l’aliasing dans cette version
Un alias se produit lorsque les données sont accessibles via plusieurs pointeurs ou noms de variable. Supprimez l’alias. Pour plus d’informations, consultez Pointeurs uniques.
MIDL2217
paramètre déjà défini en tant que handle de contexte
Le paramètre était précédemment défini en tant que handle de contexte.
MIDL2218
[context_handle] ne doit pas dériver de handle_t
Les trois caractéristiques de handle : le type handle_t, l’attribut [handle] et l’attribut [context_handle], s’excluent mutuellement. Une seule caractéristique peut être appliquée à un type ou à un paramètre à la fois.
MIDL2219
la taille du tableau dépasse 65536 octets
Sur certaines plateformes Microsoft, la taille maximale des données transmissibles est de 64 000. Reconcevoir votre application afin que toutes les données transmises s’intègrent à la taille maximale transmissible.
MIDL2220
la taille de la structure dépasse 65536 octets
Sur certaines plateformes Microsoft, la taille maximale des données transmissibles est de 64 000. Reconcevoir votre application afin que toutes les données transmises s’intègrent à la taille maximale transmissible.
MIDL2221
champ d’une union non encapsulée ne peut pas être une autre union non encapsulée
Les unions transmises dans le cadre d’un appel de procédure à distance nécessitent un élément de données associé, le discriminant, qui sélectionne le bras d’union. Les unions imbriquées dans d’autres unions n’offrent pas de discrimination; par conséquent, elles ne peuvent pas être transmises sous cette forme. Créez une structure qui se compose de l’union et de son discriminant.
MIDL2222
attributs de pointeur appliqués à un tableau incorporé ; Ignoré
Un attribut pointeur ne peut être appliqué à un tableau que lorsque le tableau est un paramètre de niveau supérieur. Les autres attributs de pointeur appliqués aux tableaux incorporés dans d’autres structures de données sont ignorés.
MIDL2223
[allouer] n’est pas conforme au type transmis ou présenté pour [transmit_as], [represent_as], [wire_marshal] ou [user_marshal]
Les attributs [transmit_as] et [allouer] ne peuvent pas être appliqués au même type. L’attribut [transmit_as] fait la distinction entre les types présentés et transmis, tandis que l’attribut [allouer] suppose que le type présenté est le même que le type transmis.
MIDL2224
[switch_type] doit être spécifié dans ce mode d’importation
MIDL2225
[implicit_handle] tapez undefined ; en supposant que le handle générique
Le type de handle spécifié dans ACF n’est pas défini dans le fichier IDL. Le compilateur MIDL part du principe que le type de handle est résolu en type de handle primitif handle_t. Ajoutez l’attribut [handle] à la définition de type si vous souhaitez que le handle se comporte comme un handle défini par l’utilisateur ou générique.
MIDL2226
l’élément array ne doit pas dériver de error_status_t
Dans cette version de Microsoft RPC, le type error_status_t peut apparaître uniquement en tant que paramètre ou type de retour. Il ne peut pas apparaître dans les tableaux.
MIDL2227
[allouer] non valide sur un type dérivant d’un handle primitif/générique/contextuel
Par conception, l’attribut ACF [allocation] ne peut pas être appliqué à gérer les types.
MIDL2228
le type transmis ou présenté ne doit pas dériver de error_status_t
Dans cette version de Microsoft RPC, le type error_status_t ne peut pas être utilisé avec l’attribut [transmit_as].
MIDL2229
discriminant d’une union ne doit pas dériver d’un champ avec [ignorer] appliqué à celui-ci
Une union utilisée dans un appel de procédure distante doit être associée à un autre élément de données, appelé discriminant, qui sélectionne le bras d’union. Le discriminant doit être transmis. L’attribut [ignore] ne peut pas être appliqué au discriminant d’union.
MIDL2230
[nocode] ignoré pour le côté serveur, car « /server none » n’est pas spécifié
Certains compilateurs IDL DCE génèrent une erreur lorsque l’attribut [nocode] est appliqué à une procédure dans une interface pour laquelle des fichiers stub de serveur sont générés. Étant donné que le serveur doit prendre en charge toutes les opérations, [nocode] ne doit pas être appliqué à une procédure dans ce mode, ou vous devez utiliser le commutateur du compilateur MIDL /server none pour spécifier explicitement qu’aucune routine de serveur ne doit être générée.
MIDL2231
aucune procédure distante spécifiée dans l’interface non[locale] ; aucun stub client/serveur n’est généré
L’interface fournie n’ayant pas de procédures distantes, seuls les fichiers d’en-tête seront générés.
MIDL2232
trop de cas par défaut spécifiés pour l’union encapsulée
Une union encapsulée ne peut avoir qu’une seule valeur par défaut : arm.
MIDL2233
trop d’interfaces par défaut spécifiées pour la coclasse
Une coclasse peut avoir au maximum deux membres [par défaut], l’un pour représenter l’interface (source) sortante ou la dispinterface, et l’autre pour représenter l’interface entrante (récepteur) ou la dispinterface.
MIDL2234
les éléments avec [defaultvtable] doivent également avoir [source]
L’interface defaultvtable crée une deuxième interface source pour un objet, qui permet aux récepteurs de recevoir des événements via la table V.
MIDL2235
la spécification union sans champs n’est pas illégale
Les syndicats doivent avoir au moins un champ.
MIDL2236
valeur hors de la plage
La valeur de casse fournie est hors de la plage du type de commutateur.
MIDL2237
[context_handle] doit être appliqué sur un type de pointeur
Les handles de contexte doivent toujours être des types de pointeurs. DCE spécifie que tous les handles de contexte doivent être typés comme void *.
MIDL2238
le type de retour ne doit pas dériver de handle_t
handle_t ne peut pas être retourné.
MIDL2239
[handle] ne doit pas être appliqué à un type dérivant d’un handle de contexte
Un type ne peut pas être à la fois un handle de contexte et un handle générique.
MIDL2240
le champ dérivant d’un « int » doit avoir le spécificateur de taille « small », « short » ou « long » avec « int »
Le type int n’est pas transmissible sur les systèmes 16 bits, car la taille de l’int peut être différente d’une machine à l’autre.
MIDL2241
champ ne doit pas dériver d’un void ou void *
void et void * ne peuvent pas être utilisés comme types de paramètres pour les procédures distantes.
MIDL2242
champ ne doit pas dériver d’une structure contenant des champs bits
Les structures contenant des champs de bits ne peuvent pas être utilisées comme paramètres ou types de retour pour les procédures distantes.
MIDL2243
le champ ne doit pas dériver d’une union non rpcable
Une union doit être spécifiée en tant qu’union non encapsulée ou encapsulée pour être transmise. Les syndicats C ordinaires n’ont pas le discriminant nécessaire pour transmettre l’union à l’ensemble du réseau.
MIDL2244
le champ ne doit pas dériver d’un pointeur vers une fonction
Les pointeurs vers les fonctions ne peuvent pas être transmis aux procédures distantes. Les pointeurs vers les fonctions pointent vers le code de fonction, et aucun code de fonction ne peut être transmis sur le réseau à l’aide de RPC.
MIDL2245
impossible d’utiliser [fault_status] sur un paramètre et un type de retour
L’attribut [fault_status] ne peut être utilisé qu’une seule fois par procédure. L’attribut [comm_status] peut être utilisé indépendamment.
MIDL2246
type de retour trop compliqué pour les modes /Oi, à l’aide de /Os
Les types de retour volumineux transmis par valeur ne peuvent être gérés que par les stubs d’optimisation /Os . Les stubs de cette routine seront générés à l’aide de l’optimisation /Os .
MIDL2247
type de handle générique trop volumineux pour les modes /Oi, à l’aide de /Os
Les grands types de handle génériques transmis par valeur ne peuvent être gérés que par les stubs d’optimisation /Os . Les stubs de cette routine seront générés à l’aide de l’optimisation /Os .
MIDL2248
[allocation(all_nodes)] sur un paramètre [in,out] peut orpheliner la mémoire d’origine
L’utilisation de [allocate(all_nodes)] sur un paramètre [in, out] doit réallouer la mémoire contiguë pour le sens [out], ce qui rend orphelin le paramètre [in]. Cette utilisation n’est pas recommandée.
MIDL2249
impossible d’avoir un pointeur [ref] en tant que bras d’union
Les pointeurs de référence doivent toujours pointer vers une mémoire valide, mais une union [in, out] avec un pointeur de référence peut retourner un pointeur de référence lorsque la direction [in] a utilisé un autre type.
MIDL2250
retour de handles de contexte non pris en charge pour les modes /Oi, à l’aide de /Os
MIDL ne prend pas en charge les handles de contexte dans les modes d’optimisation entièrement interprétés. Passage à l’optimisation en mode mixte.
MIDL2251
utilisation du paramètre supplémentaire [comm_status] ou [fault_status] non pris en charge pour les modes /Oi, à l’aide de /Os
Les attributs [comm_status] et [fault_status] ne peuvent être gérés que par les stubs d’optimisation /Os . Les stubs de cette routine seront générés à l’aide de l’optimisation /Os .
MIDL2252
utilisation d’un type inconnu pour [represent_as] ou [user_marshal] non pris en charge pour les modes /Oi, à l’aide de /Os
L’utilisation de l’attribut [represent_as] avec un type local qui n’est pas défini dans le fichier IDL ou un fichier IDL importé ne peut être gérée que par les stubs d’optimisation /Os . Les stubs de cette routine seront générés à l’aide de l’optimisation /Os .
MIDL2253
types de tableau avec [transmit_as] ou [represent_as] non pris en charge sur le type de retour pour les modes /Oi , à l’aide de /Os
Le retour d’un tableau avec [transmit_as] ou [represent_as] appliqué ne peut être géré que par les stubs d’optimisation /Os . Les stubs de cette routine seront générés à l’aide de l’optimisation /Os .
MIDL2254
types de tableau avec [transmit_as] ou [represent_as] non pris en charge pour les modes /Oi, à l’aide de /Os
Cette action n’est pas prise en charge pour l’optimisation entièrement interprétée. Passage à l’optimisation en mode mixte.
MIDL2255
[rappel] nécessite /ms_ext
L’attribut [rappel] est une extension Microsoft et nécessite que le commutateur /ms_ext soit activé. Ne compilez pas avec /osf, qui remplace /ms_ext.
MIDL2256
dépendance d’interface circulaire
Cette interface s’utilise (directement ou indirectement) comme interface de base.
MIDL2257
seul IUnknown peut être utilisé comme interface racine
Actuellement, toutes les interfaces doivent avoir IUnknown comme interface racine.
MIDL2258
[IID_IS] ne peut être appliqué qu’aux pointeurs vers les interfaces
L’attribut [iid_is] ne peut être appliqué qu’aux pointeurs d’interface, bien qu’ils puissent être spécifiés en tant que pointeurs vers IUnknown *.
MIDL2259
les interfaces ne peuvent être utilisées que dans les constructions de pointeur à interface
Les noms d’interface ne peuvent pas être utilisés, sauf en tant qu’interfaces de base ou pointeurs d’interface.
MIDL2260
les pointeurs d’interface doivent avoir un UUID/IID
Le type de base de l’expression [iid_is] doit être un type UUID/GUID/IID.
MIDL2261
les définitions et déclarations en dehors du corps de l’interface nécessitent /ms_ext
Le fait de placer des déclarations et des définitions en dehors de n’importe quel corps d’interface est une extension Microsoft qui nécessite l’utilisation du commutateur /ms_ext .
MIDL2262
plusieurs interfaces dans un seul fichier nécessite /ms_ext
L’utilisation de plusieurs interfaces dans un seul fichier idl est une extension Microsoft et n’est pas disponible lorsque vous compilez en mode /osf .
MIDL2263
un seul des [implicit_handle], [auto_handle] ou [explicit_handle] autorisé
Chaque interface ne peut avoir qu’un seul de ces trois attributs.
MIDL2264
[implicit_handle] référence un type qui n’est pas un handle
Les handles implicites doivent être de l’un des types de handle.
MIDL2265
Les processus [objet] ne peuvent être utilisés qu’avec « /env win32 »
Les interfaces avec l’attribut [object] ne peuvent pas être utilisées avec des environnements 16 bits.
MIDL2266
[rappel] avec -env dos/win16 non pris en charge pour /Oi, à l’aide de /Os
Les rappels dans les environnements 16 bits ne peuvent être gérés que par les stubs d’optimisation /Os . Les stubs de cette routine seront générés à l’aide de l’optimisation /Os .
MIDL2267
float/double non pris en charge en tant que paramètre de niveau supérieur pour le mode /Oi, à l’aide de /Os
Les types float et double peuvent uniquement être gérés en tant que paramètres par les stubs d’optimisation /Os . Les stubs de cette routine seront générés à l’aide de l’optimisation /Os . Les types float et double dans des structures, des tableaux ou des unions peuvent toujours être gérés avec/os.
MIDL2268
les pointeurs vers les handles de contexte ne peuvent pas être utilisés comme valeurs de retour
Les handles de contexte doivent être utilisés comme valeurs de retour direct, et non comme valeurs de retour indirect.
MIDL2269
les procédures d’une interface objet doivent retourner un HRESULT
Toutes les procédures d’une interface objet qui n’ont pas l’attribut-[local] doivent retourner unSCODEHRESULT/.
MIDL2270
UUID en double
Identique aux UUID doit être unique.
MIDL2271
Les interfaces [objet] doivent dériver d’une autre interface [objet] telle que IUnknown
L’héritage d’interface n’est autorisé que lorsque vous utilisez des interfaces d’objet.
MIDL2272
L’interface (asynchrone) doit dériver d’une autre interface (asynchrone)
Les interfaces objet, synchrones et asynchrones, doivent dériver d’IUnknown ou d’une autre interface OLE de base.
MIDL2273
L’expression [IID_IS] doit être un pointeur vers la structure IID
Le type de base de l’expression [iid_is] doit être un type UUID/GUID/IID.
MIDL2274
Le type [call_as] doit être une procédure [locale]
La cible d’un type [call_as], si elle est définie, doit avoir [ local] appliquée.
MIDL2275
undefined [call_as] ne doit pas être utilisé dans une interface d’objet
Vous devez définir la cible d’un type [call_as]. Vérifiez que vous avez fourni call_as routines pour les applications appelantes et appelées.
MIDL2276
[auto_handle] ne peut pas être utilisé avec [encode] ou [decode]
Les attributs [ encode] et [ decode] ne peuvent être utilisés qu’avec des handles explicites ou des handles implicites.
MIDL2277
les procédures normales ne sont pas autorisées dans une interface avec [encode] ou [décodage]
Les interfaces contenant des procédures [encode] ou [decode] ne peuvent pas également avoir de procédures distantes.
MIDL2278
conformité ou variance de niveau supérieur non autorisée avec [encode] ou [décodage]
Les types qui ont une conformité ou une variance de niveau supérieur ne peuvent pas utiliser la sérialisation de type, car il n’existe aucun moyen de fournir un dimensionnement/un allongement. Les structures qui les contiennent sont toutefois autorisées à utiliser la sérialisation de type.
MIDL2279
Les paramètres [out] peuvent ne pas avoir « const »
Étant donné qu’un paramètre [out] est modifié, il ne doit pas être déclaré comme constante sa.
MIDL2280
les valeurs de retour peuvent ne pas avoir « const »
Étant donné qu’une valeur de fonction est définie lorsque la fonction retourne, cette valeur ne doit pas être déclarée en tant que constante.
MIDL2281
utilisation non valide de l’attribut « retval »
Vérifiez que vous n’avez pas utilisé l’attribut [facultatif] et que le paramètre [retval] est le dernier paramètre de la liste.
MIDL2282
conventions d’appel multiples non valides
Une seule convention d’appel peut être appliquée à une seule procédure.
MIDL2283
attribut non valide sur la procédure [objet]
L’attribut ci-dessus s’applique uniquement aux procédures dans les interfaces qui n’ont pas l’attribut [objet].
MIDL2284
[out] Les pointeurs d’interface doivent utiliser une double indirection
Étant donné que la valeur modifiée est le pointeur vers l’interface, il doit y avoir un autre niveau d’indirection au-dessus du pointeur pour permettre son retour.
MIDL2285
procédure utilisée deux fois comme appelant dans [call_as]
Une procédure [locale] donnée ne peut être utilisée qu’une seule fois comme cible d’un [call_as], afin d’éviter les conflits de noms.
MIDL2286
[call_as] la cible doit avoir [local] dans une interface objet
La cible d’un [call_as] doit être une procédure [locale] définie dans l’interface active.
MIDL2287
[code] et [nocode] ne peuvent pas être utilisés ensemble
Ces deux attributs sont contradictoires et ne peuvent pas être utilisés ensemble.
MIDL2288
les procédures avec des attributs [peut-être] ou [message] peuvent ne pas avoir de paramètres [out], ou les valeurs de retour doivent être de type HRESULT ou error_status_t
Étant donné que les procédures [peut-être] ne retournent jamais, il n’existe aucun moyen d’obtenir des valeurs de retour.
MIDL2289
le pointeur vers la fonction doit être utilisé
Bien que les définitions de type de fonction soient autorisées en mode /c_ext , elles ne peuvent être utilisées que comme pointeurs vers des fonctions. Ils ne peuvent jamais être transmis en tant que paramètre ou valeur de retour d’une procédure distante.
MIDL2290
les fonctions ne peuvent pas être passées dans une opération RPC
Les fonctions et les pointeurs de fonction ne peuvent pas être passés en tant que paramètres ou valeurs de retour de procédures distantes.
MIDL2291
hyper/double non pris en charge comme valeur de retour pour les modes /Oi, à l’aide de /Os
Les valeurs de retour hyper et double peuvent être gérées uniquement par les stubs d’optimisation /Os . Les stubs de cette routine sont générés à l’aide de l’optimisation /Os .
MIDL2292
#pragma pack(pop) sans correspondance #pragma pack(push)
#pragma pack(push) et #pragma pack(pop) doivent apparaître dans les paires correspondantes. Au moins un pack(push) de #pragma de trop ont été spécifiés.
MIDL2293
Les champs de structure pouvant contenir des chaînes doivent être byte/char/wchar_t
Le type [string] ne peut être appliqué qu’à une structure dont les champs sont tous de type octet ou à une définition de type équivalente à byte.
MIDL2294
[notify] non pris en charge pour les modes /Oi, à l’aide de /Os
L’attribut [notify] ne peut être traité que par les stubs d’optimisation /Os .
MIDL2295
le paramètre handle ou le type de retour n’est pas pris en charge sur une procédure dans une interface [object]
Les handles ne peuvent pas être utilisés avec les interfaces [ objet].
MIDL2296
ANSI C autorise uniquement le tableau le plus à gauche lié à être non spécifié
Dans un tableau conforme, ANSI C autorise uniquement le tableau le plus à gauche (le plus significatif) lié à être non spécifié. Si plusieurs dimensions sont conformes, MIDL tente de placer un « 1 » dans les autres dimensions conformes. Si les autres dimensions sont définies dans une définition de type différente, cela ne peut pas être possible. Essayez de placer toutes les dimensions du tableau sur la déclaration de tableau pour éviter cela. Dans tous les cas, méfiez-vous des calculs d’indexation de tableau effectués par le compilateur ; vous devrez peut-être effectuer vos propres calculs à l’aide des tailles réelles.
MIDL2297
paramètres d’union par valeur non pris en charge pour les modes /Oi, à l’aide de /Os
Cette action n’est pas prise en charge pour l’optimisation complète. Passage à l’optimisation en mode mixte.
MIDL2298
L’attribut [version] est ignoré sur une interface [objet]
L’attribut [object] identifie une interface COM. Une liste d’attributs d’interface pour une interface COM ne peut pas inclure l’attribut [ version].
MIDL2299
L’attribut [size_is] ou [max_is] n’est pas valide sur un tableau fixe
Les tableaux de taille fixe ne peuvent pas utiliser les attributs size_is ou max_is .
MIDL2300
[encode] ou [decode] ne sont pas valides dans une interface [object]
L’attribut [object] identifie une interface COM. Les attributs [encode] et [ decode] permettent la sérialisation. Autrement dit, vous pouvez fournir et contrôler des mémoires tampons pour le marshal et le démarshal de données. Toutefois, vous ne pouvez pas effectuer de sérialisation sur les interfaces COM.
MIDL2301
[encode] ou [decode] sur un type nécessite /ms_ext
La sérialisation ne fait pas partie de la spécification DCE-IDL. Il s’agit d’une extension Microsoft qui nécessite l’utilisation du commutateur de ligne de commande /ms_ext .
MIDL2302
int non pris en charge sur /env win16 ou /env dos
Les plateformes Microsoft 16 bits ne prennent pas en charge l’utilisation du type int dans un fichier IDL. Qualifiez le type int avec small, short ou long.
MIDL2303
[bstring] ne peut être appliqué qu’à un pointeur vers « char » ou « whchar_t »
Cette erreur est obsolète. Il est fourni uniquement à des fins de compatibilité descendante.
MIDL2304
attribut non valide sur une procédure dans une interface [objet]
L’attribut spécifié n’est pas autorisé sur la procédure dans une interface COM.
MIDL2305
attribut non valide sur une interface [objet]
L’attribut spécifié n’est pas autorisé dans une interface COM.
MIDL2306
trop de paramètres ou pile trop grande pour les modes /Oi, à l’aide de /Os
Cet avertissement est obsolète. Il est fourni uniquement à des fins de compatibilité descendante. Elle indique que l’appel à la procédure distante entraîne une croissance de la pile supérieure à 64 000.
MIDL2307
aucun attribut sur le typedef de fichier ACF, donc aucun effet
Le fichier IDL doit contenir toutes les instructions typedef qui n’ont pas d’attributs. Elles ne doivent pas se produire dans les fichiers ACF. Si c’est le cas, le compilateur MIDL les interprète comme redondants et les ignore.
MIDL2308
conventions d’appel autres que __stdcall ou __cdecl pas prises en charge pour les modes /Oi, à l’aide de /Os
Les conventions d’appel telles que __pascal ou __fastcall modifier le format de la pile. Les modes /Oi prennent uniquement en charge les conventions d’appel __stdcall et __cdecl . Si vous devez utiliser d’autres conventions d’appel, utilisez le mode /Os .
MIDL2309
Trop de méthodes de délégation dans l’interface nécessitent Windows 2000 ou une version ultérieure
Une interface peut hériter d’une autre. Dans ce cas, les méthodes de l’interface de base sont considérées comme déléguées. Aucune interface dérivée ne peut contenir plus de 256 méthodes déléguées.
MIDL2310
descripteurs automatiques non pris en charge avec /env mac ou /env powermac
Lors de la compilation de votre fichier IDL pour un PowerMac, vous ne pouvez pas utiliser de handles de liaison automatique. Vous devez spécifier des handles explicites ou implicites.
MIDL2311
Les instructions en dehors du bloc de bibliothèque ne sont pas valides en mode de compatibilité mktyplib
Vous devrez peut-être spécifier le commutateur de ligne de commande /mktyplib203 lorsque vous compilez votre fichier IDL.

Remarque :
L’outil Mktyplib.exe est obsolète. Utilisez le compilateur MIDL à la place.


MIDL2312
syntaxe non conforme, sauf si le mode de compatibilité mktyplib est utilisé
Vous devrez peut-être spécifier le commutateur de ligne de commande /mktyplib203 lorsque vous compilez votre fichier IDL.

Remarque :
L’outil Mktyplib.exe est obsolète. Utilisez le compilateur MIDL à la place.


MIDL2313
définition non valide, doit utiliser typedef en mode de compatibilité mktyplib
Vous devrez peut-être spécifier le commutateur de ligne de commande /mktyplib203 lorsque vous compilez votre fichier IDL.

Remarque :
L’outil Mktyplib.exe est obsolète. Utilisez le compilateur MIDL à la place.


MIDL2314
attribut de pointeur explicite [ptr] [ref] ignoré pour les pointeurs d’interface
Les pointeurs vers les interfaces ne peuvent pas avoir d’attributs IDL.
MIDL2315
Modes /Oi non implémentés pour PowerMac, basculement vers /Os
MIDL2316
type d’expression non valide utilisé dans l’attribut
La valeur par défaut du pointeur doit être une constante.
MIDL2317
type illégal utilisé dans le canal
Les canaux sont limités aux types de données IDL de base. Par exemple, vous ne pouvez pas spécifier un canal de tableaux.
MIDL2318
la procédure utilise des canaux, à l’aide de /Oicf
Le mode que vous avez sélectionné ne prend pas en charge les canaux. Le compilateur MIDL a détecté l’utilisation d’un ou plusieurs canaux dans votre interface. Par conséquent, il compile votre fichier IDL en mode /Oicf .
MIDL2319
la procédure a un attribut qui nécessite l’utilisation de /Oif, les modes de basculement
Vous devez compiler les procédures [async] en mode /Oif .
MIDL2320
exigences d’optimisation conflictuelles, impossible d’optimiser
Cette erreur indique souvent que vous avez spécifié les modes de compilateur MIDL /Os et /Oi (ou une variante de /Oi). Cela peut également signifier que les fonctionnalités que vous avez spécifiées dans vos fichiers IDL et ACL nécessitent l’utilisation des deux modes. Vous devez sélectionner un mode ou l’autre à optimiser.
MIDL2321
les canaux ne peuvent pas être des éléments de tableau ou des membres de structures ou d’unions
Les types de données de canal ne peuvent être que des paramètres de niveau supérieur.
MIDL2322
Utilisation du canal non valide
Vous ne pouvez pas utiliser de canaux avec les attributs [transmit_as], [represent_as] ou [user_marshal]. En outre, les canaux ne peuvent pas être utilisés comme types de retour.
MIDL2323
la fonctionnalité nécessite l’option d’optimisation interprétée avancée ; utiliser -Oicf
Cette erreur indique que les commutateurs de ligne de commande du compilateur MIDL tels que /robust nécessitent l’utilisation du mode /Oicf .
MIDL2324
la fonctionnalité nécessite l’option d’optimisation interprétée avancée ; utiliser -Oicf
Cet avertissement indique que les commutateurs de ligne de commande du compilateur MIDL tels que /robust nécessitent l’utilisation du mode /Oicf .
MIDL2329
l’option d’optimisation est en cours d’élimination progressive, utilisez -Oic
Le mode d’optimisation /Oi1 a été spécifié sur la ligne de commande MIDL. Ce mode n’est plus pris en charge et /Oicf doit être utilisé à la place.
MIDL2330
l’option d’optimisation est en cours d’élimination progressive, utilisez -Oicf
Le mode d’optimisation /Oi2 a été spécifié sur la ligne de commande MIDL. Ce mode n’est plus pris en charge et /Oicf doit être utilisé à la place.
MIDL2331
l’option d’optimisation est en cours d’élimination progressive, utilisez -ic
Le mode d’optimisation i1 a été spécifié dans un attribut ACF [optimiser]. Ce mode n’est plus pris en charge et icf doit être utilisé à la place.
Exemple de fichier ACF :
[optimize("i1")] roo();    //MIDL 2331
MIDL2332
l’option d’optimisation est en cours d’élimination progressive, utilisez -icf
Le mode d’optimisation i2 a été spécifié dans un attribut ACF [optimiser]. Ce mode n’est plus pris en charge et icf doit être utilisé à la place.
Exemple de fichier ACF :
[optimize("i2")] roo();    //MIDL 2332
MIDL2333
les commutateurs -old et -new sont obsolètes, utilisez -oldtlb et -newtlb
Ce message est obsolète et n’est plus omis par MIDL.
MIDL2334
valeur de l’argument non valide
Les variantes autorisées du commutateur de ligne de commande /O incluent /Os, /Oi, /Oic, /Oicf et /Oif.
MIDL2335
type d’expression non valide en constante
L’expression n’est pas évaluée en constante.
MIDL2336
type d’expression non valide dans enum
Une valeur énumérée dans une définition d’énumération ne correspond pas à un type intégral.
MIDL2337
déclaration anticipée non satisfaite
Le compilateur MIDL n’a pas pu résoudre la définition d’une déclaration anticipée.
MIDL2338
les commutateurs sont contradictoires
Vous ne pouvez pas utiliser les commutateurs de ligne de commande /osf et /ms_ext lorsque vous compilez un fichier IDL. Vous devez choisir l’un ou l’autre.
MIDL2339
MIDL ne peut pas générer d’informations HOOKOLE pour l’union non-rpc-able
Cette erreur est obsolète. Il est fourni strictement pour la compatibilité descendante.
MIDL2340
aucune expression de cas trouvée pour l’union
Chaque champ d’une union doit avoir une instruction case avec une expression constante.
MIDL2341
[user_marshal] et [wire_marshal] non pris en charge avec les indicateurs -Oi et -Oic, utilisez -Os ou -Oicf
Les attributs [user_marshal] et [wire_marshal] nécessitent les fonctionnalités d’optimisation spécifiques disponibles uniquement dans /Oicf (proxy sans code avec des chaînes de format rapide) ou /Os (marshaling en mode mixte).
MIDL2342
Les canaux ne peuvent pas être utilisés avec la sérialisation des données, c’est-à-dire [encode] et/ou [décodage]
Vous ne pouvez pas passer de canaux en tant que paramètres aux procédures qui ont les attributs [encode] ou [décodage].
MIDL2343
tous les pointeurs d’interface de canal doivent utiliser une seule indirection
Vous ne pouvez pas utiliser de cette manière un pointeur vers une interface de canal.
MIDL2344
[iid_is()] ne peut pas être utilisé avec un pointeur d’interface de canal
Ce message est obsolète. Ce message n’est plus utilisé par le compilateur.
MIDL2345
commutateur -lcid non valide ou inapplicable
L’identificateur local (LCID) que vous avez spécifié n’est pas valide.
MIDL2346
le lcid spécifié est différent de la spécification précédente
Les valeurs spécifiées dans /lcid et [lcid] sont différentes. Le compilateur MIDL utilise le dernier défini.
MIDL2347
importlib n’est pas autorisé en dehors d’un bloc de bibliothèque
Toutes les instructions [importlib] doivent se produire dans un bloc [bibliothèque].
MIDL2348
Valeur à virgule flottante non valide
Cette erreur ne doit pas être émise par MIDL. Si vous voyez cette erreur, signalez un bogue à Microsoft en fournissant tous les fichiers nécessaires pour reproduire l’erreur, y compris vos fichiers IDL, fichiers ACF, en-têtes, etc.
MIDL2349
Membre non valide
Les procédures ne peuvent pas être membres d’une bibliothèque.
MIDL2350
membre non valide possible
Pour être un membre valide d’une bibliothèque, l’élément de bibliothèque doit être un module, une dispinterface, une coclasse, une instruction if, une structure, une union, une énumération ou une déclaration de transfert.
MIDL2351
incompatibilité dans les types de canal et d’interface
Ce message est obsolète.
MIDL2352
chaîne, tableau variable, tableau conforme et paramètres de pointeur complet peuvent être incompatibles avec les paramètres de canal pendant l’exécution
Une méthode combinant une ou plusieurs chaînes [in], des tableaux variés, des tableaux conformes et des paramètres de pointeur complets et tout paramètre de canal [in] aboutit à la génération d’un stub qui s’exécute uniquement sur les séquences de protocole ncacn_* et ncalrpc sur les ordinateurs Windows. L’utilisation du stub pour effectuer des appels sur des séquences de protocole ncadg_* ou l’acceptation d’appels d’autres fournisseurs DE RPC DCE OSF peut générer des erreurs sur le serveur pendant l’exécution. Cette erreur se produit à partir de Windows Server 2003.
MIDL2353
le paramètre doit être dans
Les handles asynchrones doivent être des paramètres [in].
MIDL2354
le type de paramètre d’un objet [async] doit être un double pointeur vers une interface
Le paramètre doit être de type IAsyncManager **.
MIDL2355
type de handle asynchrone incorrect
Le type de handle doit être IAsyncManager ou un type dérivé d’IAsyncManager.
MIDL2356
le commutateur « interne » active des fonctionnalités non prises en charge, à utiliser avec précaution
Évitez d’utiliser ce commutateur.
MIDL2357
les procédures asynchrones ne peuvent pas utiliser le handle automatique
Les procédures avec l’attribut [async] nécessitent des handles explicites.
MIDL2358
error_status_t doivent avoir à la fois [comm_status] et [fault_status]
Une procédure a été spécifiée avec les attributs IDL [peut-être] ou [message] mais le type de retour a uniquement les attributs ACF [comm_status] ou [fault_status]. Les deux attributs ACF sont obligatoires.
Exemple de fichier ACF :
[comm_status] roo();    //MIDL 2358
[fault_status] bar();    //MIDL 2358
[comm_status, fault_status] baz();    //OK
MIDL2359
cette construction n’est autorisée que dans un bloc de bibliothèque
Un module peut se produire uniquement dans un bloc de bibliothèque.
MIDL2360
redéfinition de type non valide
Un nouveau type a été défini de manière récursive sur un type inexistant.
Exemple :
typedef roo roo[10];    //MIDL 2360
MIDL2361
les procédures avec un attribut [vararg] doivent avoir un paramètre SAFEARRAY(VARIANT) ; ordre param est [vararg], [lcid], [retval]
La plupart des paramètres des procédures avec l’attribut [vararg] doivent se produire avant le paramètre SAFEARRAY(VARIANT). Le paramètre SAFEARRAY(VARIANT) doit être présent. Si la liste de paramètres contient un paramètre avec l’attribut [ lcid], elle doit suivre le paramètre SAFEARRAY(VARIANT). Si la liste de paramètres contient un paramètre avec l’attribut [retval], elle doit se produire après le paramètre avec l’attribut [lcid].
MIDL2363
trop de méthodes dans l’interface, nécessite Windows 2000 ou une version ultérieure
Le compilateur MIDL n’autorise pas plus de 1 024 méthodes dans une interface lorsque vous compilez en mode /Oicf .
MIDL2364
switch est en cours d’élimination progressive
Les commutateurs suivants sont obsolètes : /hookole, /env win16 et /env.
MIDL2365
ne peut pas dériver de IAdviseSink, IAdviseSink2 ou IAdviseSinkEx
Ces interfaces ne peuvent pas être étendues.
MIDL2366
impossible d’attribuer une valeur par défaut
L’attribution d’une valeur par défaut à un paramètre est autorisée en Visual Basic, mais pas en C++. Si vous utilisez C++, la valeur par défaut est ignorée.
MIDL2367
La génération de bibliothèque de types pour DOS/Win16/MAC n’est pas prise en charge
MIDL ne prend pas en charge les bibliothèques de types 16 bits.
MIDL2368
bibliothèque de types générant une erreur, ignorée
Une erreur non fatal s’est produite lors de la génération de la bibliothèque de types.
MIDL2369
taille de pile dépassée pour /Oi, à l’aide de /Os
Le mode d’optimisation -Oi est limité à 128 octets d’espace de pile pour les paramètres. Le compilateur est automatiquement passé au mode d’optimisation du système d’exploitation pour contourner cette limitation.
Pour éviter cet avertissement, utilisez les modes d’optimisation -Oicf ou -Os. Le mode d’optimisation peut être modifié sur la ligne de commande en spécifiant -Oicf ou -Os au lieu de -Oi ou en ajoutant un attribut [optimize9"icf »)] ou optimize[(« s »)] à la fonction dans le fichier ACF.
Cet avertissement se produit généralement lors du passage de grandes structures en tant que paramètres par valeur. La taille de la pile requise peut être abaissée en passant un pointeur vers la structure à la place.
Exemple :
typedef struct
{
char a[127];
}
large;
//This function has a stack size of 132 (x86) or 136 (alpha) on 32-bit systems
void roo(large s, int a);    //MIDL 2360
// workaround: pass by reference
void bar (large *s, int a);
MIDL2370
l’utilisation de /robust nécessite /Oicf, les modes de basculement
Vous devez compiler en mode /Oicf lorsque vous spécifiez le commutateur /robust sur la ligne de commande.
MIDL2371
plage incorrecte spécifiée
La valeur la plus élevée spécifiée dans un attribut [plage] est inférieure à la valeur la plus faible.
Exemple :
void roo([range(3,2)] int a);    //MIDL 2371
MIDL2372
combinaison non valide de paramètres [in] uniquement et [out] pour l’interface [async_uuid]
Seules les combinaisons simples d’attributs avec des paramètres [in] ou [out] sont autorisées pour ce type d’interface.
MIDL2373
Les plateformes DOS, Win16 et MAC ne sont pas prises en charge avec /robust
MIDL prend en charge le commutateur /robust sur Microsoft Windows 2000 ou version ultérieure.
MIDL2374
la prise en charge des proxys stubless de style NT 3.51 pour les interfaces objet sera progressivement supprimée ; utilisez /Oif.
Ce mode est obsolète. Utilisez /Oif ou /Oicf.
MIDL2375
[encode] ou [decode] avec /robust nécessite /Oicf
La sérialisation ne peut pas être effectuée lorsque le commutateur /robust est spécifié.
MIDL2377
attributs en conflit spécifiés
[context_handle_serialize] et [context_handle_noserialize] ont été spécifiés.
MIDL2378
[sérialiser], [noserialize] peut être appliqué à context_handles
Les attributs ACF [context_handle_serialize] ou [context_handle_noserialize] ne peuvent être appliqués qu’aux types qui sont des handles de contexte.
Exemple de fichier IDL :
typedef /*[context_handle] */ void *PV;    //Note: PV is *not* a context handle.
Exemple de fichier ACF :
typedef [context_handle_serialize] PV;    //MIDL 2378
MIDL2379
Le compilateur a atteint une limite pour une représentation de chaîne de format. Consultez la documentation pour obtenir des conseils.
Le compilateur MIDL a une limite de 64 Ko pour les chaînes de format. Cette erreur se produit généralement lorsque les fichiers IDL incluent d’autres fichiers IDL. Le fichier IDL composite généré par toutes les instructions include dépasse les limites des tables de représentation de type de l’interpréteur du moteur de marshaling. Essayez d’utiliser la directive d’importation plutôt que la directive include dans vos fichiers IDL. Pour plus d’informations, consultez Importation de fichiers d’en-tête système, inclure et importer.
MIDL2380
Le format de câble peut être incorrect, vous devrez peut-être utiliser -ms_conf_struct. Consultez la documentation pour obtenir des conseils
Le compilateur MIDL n’a pas pu générer un format transmissible pour les données. Une façon courante d’obtenir cette erreur consiste à définir un ms_conf_struct à l’intérieur d’une structure complexe.
MIDL2381
une taille de pile ou un décalage supérieur à 64 K limite. Consultez la documentation pour obtenir des conseils.
L’appel génère une pile supérieure à 64 Ko. Essayez de transmettre les données dans des blocs plus petits.
MIDL2382
un mode interpréteur forcé pour la plateforme 64 bits
Les plateformes 64 bits nécessitent le mode de compilation /Oicf.
MIDL2383
La taille de l’élément de tableau est supérieure à la limite de 64 Ko.
Tous les éléments de tableau doivent avoir une taille inférieure à 64 Ko.
MIDL2384
il ne peut y avoir qu’un seul paramètre [Icid] dans une méthode, et il doit être dernier ou avant-dernier si le dernier paramètre a [retval]
Un paramètre avec l’attribut [lcid] doit se produire en dernier. La seule exception est lorsqu’il existe également un paramètre avec l’attribut [retval]. Lorsque les deux se produisent, l’avant-dernier paramètre de la liste de paramètres doit avoir l’attribut [ lcid]. Le dernier paramètre doit avoir l’attribut [retval].
MIDL2385
syntaxe incorrecte pour midl_pragma
Le compilateur MIDL a détecté une erreur de syntaxe inconnue dans une instruction midl_pragma.
MIDL2386
__int3264 n’est pas pris en charge en mode /osf
Si vous devez utiliser __int3264, compilez en mode /ms-ext.
MIDL2387
symbole non résolu dans la bibliothèque de types
Le compilateur n’a pas pu résoudre une déclaration formelle ou un type référencé dans la bibliothèque de types.
MIDL2388
Les canaux asynchrones ne peuvent pas être passés par valeur
Les canaux asynchrones doivent être transmis par référence ou par adresse.
MIDL2389
le décalage de paramètre dépasse la limite de 64 Ko pour les procédures interprétées
Cette erreur signifie généralement qu’une procédure a trop de paramètres.
MIDL2390
Élément de tableau non valide
Les canaux ne peuvent pas être utilisés comme éléments de tableau.
MIDL2391
les membres dispinterface doivent être des méthodes, des propriétés ou des interfaces
Une dispinterface ne peut pas contenir de définitions de type, de structures, d’énumérations ou d’unions.
MIDL2392
Procédure [locale] sans [call_as]
Les procédures objet qui ont l’attribut [local] nécessitent également l’attribut [call_as].
MIDL2393
vecteur multidimensionnel, basculement vers /Oicf
Le mode d’optimisation /Os ne prend pas en charge les tableaux de tailles multidimensionnelles non fixés. Le compilateur a automatiquement basculé le mode d’optimisation vers /Oicf pour cette fonction.
Cet avertissement peut être supprimé globalement en modifiant le mode du compilateur en spécifiant /Oicf sur la ligne de commande MIDL ou en utilisant midl_pragma avertissement (désactiver : 2393) dans le fichier IDL. Le mode d’optimisation peut être modifié pour une fonction individuelle en ajoutant l’attribut [optimize(« icf »)] à la fonction dans le fichier ACF.
L’exemple suivant illustre cet avertissement :
void roo(long s1, [size_is(s1)] long a[][30];    //MIDL2393
void bar(long s1, long s2, [size_is(s1,s2) long **a);//MIDL2393
MIDL2395
type ou construction non pris en charge dans un bloc de bibliothèque, car Oleaut32.dll prise en charge des types polymorphes de 64 Ko est manquante
OLE Automation ne prend pas en charge les types polymorphes (tels que _int3264, INT_PTR, etc.). Ces types ont des représentations de données incompatibles entre les plateformes 32 bits et 64 bits. L’appel distant échoue au moment de l’exécution sur les plateformes 64 bits.

Remarque :
Notez qu’à partir de la version de Windows 2000, les fichiers TLB 64 bits sont pris en charge par OLE Automation en convertissant les informations TLB 32 bits au moment de l’exécution. Par conséquent, seule la génération TLB 32 bits est prise en charge par MIDL.


Si MIDL est utilisé uniquement pour générer un fichier d’en-tête, le commutateur /notlb supprime la génération du fichier TLB.

MIDL2396
ancien code interpréteur généré pour 64b
Cette erreur est obsolète. Si vous voyez cette erreur, signalez un bogue à Microsoft en indiquant vos fichiers IDL, fichiers ACF et ligne de commande MIDL complète.
MIDL2397
le commutateur du compilateur n’est plus pris en charge
Le ou les commutateurs spécifiés ne sont plus pris en charge.
MIDL2398
impossible d’exécuter le moteur MIDL
À partir de la version de Windows 2000 (version MIDL 5.03.279), le compilateur MIDL est implémenté à l’aide de deux fichiers exécutables : Midl.exe (le pilote) et Midlc.exe (moteur du compilateur). Cette erreur indique que le Midl.exe ne peut pas lancer Midlc.exe. Assurez-vous que Midlc.exe se trouve dans le même répertoire que Midl.exe et qu’il s’agit de la même version.
L’erreur peut avoir été provoquée par la copie de Midl.exe mais pas Midlx.exe à partir de la dernière distribution. Exécutez midl et/ou midlc sur la ligne de commande sans aucun paramètre pour voir le numéro de version de l’exécutable.
MIDL2399
commandes incorrectes du pilote
À partir de la version de Windows 2000 (version MIDL 5.03.279), le compilateur MIDL est implémenté à l’aide de deux fichiers exécutables : Midl.exe (le pilote) et Midlc.exe (moteur du compilateur). Cette erreur indique que le fichier temporaire utilisé pour passer des commandes de Midl.exe à Midlc.exe est manquant ou endommagé. Assurez-vous que Midlc.exe se trouve dans le même répertoire que Midl.exe et qu’il s’agit de la même version.
L’erreur peut avoir été provoquée par la tentative d’exécution directe de Midlc.exe ou par la copie de Midl.exe mais pas Midlc.exe à partir de la dernière distribution. Exécutez midl et/ou midlc sur la ligne de commande sans aucun paramètre pour voir le numéro de version de l’exécutable.
MIDL2400
pour ole automation, les paramètres facultatifs doivent être VARIANT ou VARIANT *
OLE Automation exige que tous les paramètres [facultatifs] soient de type VARIANT ou VARIANT*.
Dans OLE Automation, l’utilisation de paramètres autres que VARIANT peut entraîner l’échec de l’appel au moment de l’exécution ou la transmission de données non définies pour les paramètres [facultatifs].
MIDL2401
[valeur par défaut] est appliqué à un non-VARIANT et [facultatif]. Veuillez supprimer [facultatif]
L’attribut [defaultvalue] implique [facultatif]. L’attribut [ facultatif] n’est pas nécessaire.
MIDL2402
L’attribut [facultatif] est inapplicable en dehors d’un bloc de bibliothèque
La fonctionnalité impliquée par l’attribut [ facultatif] ne s’applique pas aux proxys générés pour une interface en dehors d’un bloc de bibliothèque.
MIDL2403
Le type de données du paramètre [Icid] doit être long
OLE Automation exige que les paramètres avec l’attribut [Icid] soient de type long.
MIDL2404
les procédures avec [propput], [propget] ou [propref] ne peuvent pas avoir plusieurs paramètres requis après [facultatif]
Il ne peut pas y avoir plusieurs paramètres sans [facultatif] après le dernier paramètre avec [optional] lors de l’utilisation de [propput], [propget] ou [ propputref].
MIDL2405
[comm_status] ou [fault_status] avec le pickling nécessite -Oicf
L’ancien mode d’optimisation -Oi ne prend pas en charge les procédures ou les paramètres avec [ comm_status] ou [ fault_status] avec le décatage (autrement dit, à l’aide de [ encode] et/ou [ décodage]).
Cet avertissement peut être supprimé globalement en spécifiant -Oicf sur la ligne de commande MIDL ou pour une fonction individuelle en ajoutant l’attribut [optimize(« icf:)] à la fonction dans le fichier ACF.
En général, le mode d’optimisation -Oicf est recommandé sur le mode -Oi .
MIDL2406
Incompatibilité de la version du pilote midl et du compilateur
À partir de la version de Windows 2000 (version MIDL 5.03.279), le compilateur MIDL est implémenté à l’aide de deux fichiers exécutables : Midl.exe (le pilote) et Midlc.exe (moteur du compilateur). Cette erreur indique que la version de Midl.exe ne correspond pas à la version de Midlc.exe.
L’erreur peut avoir été provoquée par la copie de Midl.exe mais pas Midlc.exe à partir de la dernière distribution. Exécutez midl et/ou midlc sur la ligne de commande sans aucun paramètre pour voir le numéro de version de l’exécutable.
MIDL2407
aucun fichier intermédiaire spécifié : utilisez Midl.exe
À partir de la version de Windows 2000 (version MIDL 5.03.279), le compilateur MIDL est implémenté à l’aide de deux fichiers exécutables : Midl.exe (le pilote) et Midlc.exe (moteur du compilateur). Cette erreur indique que Midlc.exe a été exécuté directement au lieu d’utiliser Midl.exe.
MIDL2408
problème de traitement d’un paramètre dans une procédure
Cette erreur peut être observée lors de l’importation de données à partir d’un TLB et lorsqu’une procédure a un paramètre non valide.
Si vous voyez cette erreur, signalez un bogue à Microsoft. Spécifiez vos fichiers IDL, fichiers ACF, fichier TLB et ligne de commande MIDL complète.
MIDL2409
problème de traitement d’un champ dans une structure
Cette erreur peut être observée lors de l’importation de données à partir d’un TLB et lorsqu’une structure a une structure ou un champ d’union non valide.
Si vous voyez cette erreur, signalez un bogue à Microsoft. Spécifiez vos fichiers IDL, fichiers ACF, fichier TLB et ligne de commande MIDL complète.
MIDL2410
incohérence du compilateur interne détectée : le décalage de chaîne de format n’est pas valide. Pour plus d’informations, consultez la documentation .
Le compilateur MIDL a détecté une valeur non valide dans ses structures de données internes. Cela peut être dû à des structures récursives ou à une violation par le compilateur de ses propres limites de représentation pour les données internes. Pour identifier et/ou contourner le problème, essayez de simplifier le fichier IDL. Pour ce faire, vous pouvez simplifier les paramètres complexes et les structures de données récursives ou réduire le fichier IDL en le fractionnant. Ce message peut être accompagné d’une impression de diagnostic avec des informations supplémentaires sur le problème.
Si vous voyez cette erreur, signalez un bogue à Microsoft. Spécifiez vos fichiers IDL, fichiers ACF, ligne de commande MIDL complète et sortie de diagnostic, le cas échéant.
MIDL2411
incohérence du compilateur interne détectée : le décalage de type n’est pas valide. Pour plus d’informations, consultez la documentation .
Le compilateur MIDL a détecté une valeur non valide dans ses structures de données internes. Cela peut être dû à des structures récursives ou à une violation par le compilateur de ses propres limites de représentation pour les données internes. Pour identifier et/ou contourner le problème, essayez de simplifier le fichier IDL. Pour ce faire, vous pouvez simplifier les paramètres complexes et les structures de données récursives ou réduire le fichier IDL en le fractionnant. Ce message peut être accompagné d’une impression de diagnostic avec des informations supplémentaires sur le problème.
Si vous voyez cette erreur, signalez un bogue à Microsoft. Spécifiez vos fichiers IDL, fichiers ACF, ligne de commande MIDL complète et sortie de diagnostic, le cas échéant.
MIDL2412
La syntaxe SAFEARRAY(roo) n’est pas prise en charge en dehors du bloc de bibliothèque, utilisez LPSAFEARRAY pour le proxy
Les SAFEARRAY explicitement typés ne sont pas autorisés en dehors d’un bloc de bibliothèque. Utilisez LPSAFEARRAY à la place.
L’exemple suivant illustre cette erreur :
void roo(SAFEARRAY(long) *a); //MIDL2412 when outside a library block
void roo(LPSAFEAEEAY a);         //OK
MIDL2413
les champs bits ne sont pas pris en charge
Les champs de bits de style C ne sont pas pris en charge par MIDL. Cela s’applique à la génération de proxy ainsi qu’à la génération TLB.
MIDL2414
les types de retour à virgule flottante ou complexe avec [décodage] ne sont pas pris en charge dans -Oicf, à l’aide de -OI
Les procédures avec des types de retour à virgule flottante ou structure/union ne sont pas prises en charge dans le pickling de style -Oicf. Une solution pour 32 bits consiste à utiliser le mode d’optimisation -Oi lors de la sérialisation des données (à l’aide de [encode] et/ou de [décodage]). Toutefois, comme l’ancien interpréteur de style -Oi et la prise en charge du pickling sont prévus pour être supprimés après la version de Windows 2000, l’utilisation de pointeurs est fortement suggérée pour résoudre ce problème. Notez également que généralement, la modification d’une méthode d’interface pour utiliser un pointeur [out, ref] au lieu de la valeur de retour à l’origine du problème est entièrement rétrocompatible sur le câble et peut être facilement masquée de la couche d’application.
Cet avertissement peut être supprimé globalement en spécifiant -Oi sur la ligne de commande MIDL ou pour une fonction individuelle en ajoutant l’attribut [optimize(« i »)] à la fonction dans le fichier ACF.
L’exemple suivant illustre le problème :
roo.idl :
double GetDouble();
roo.acf :
[decode] GetDouble();
Une option pour contourner cette limitation consiste à passer un paramètre [out] pour contenir le résultat au lieu d’utiliser une valeur de retour :
roo.idl :
void GetDouble([out] double *result); //top level pointer is a [ref] pointer
roo.acf :
[decode] GetDouble();
Comme mentionné précédemment, la solution décrite ci-dessus est bonne non seulement pour les nouvelles interfaces, mais également pour les anciennes. La représentation filaire pour le nouvel argument « out » est la même que pour la valeur de retour (notez void comme nouvelle valeur de retour).
MIDL2415
le type de retour n’est pas pris en charge pour 64 bits lors de l’utilisation de [décodage]
Les procédures avec des types de retour à virgule flottante ou structure/union ne sont pas prises en charge en mode 64 bits lors de la sérialisation des données ( à l’aide de [ encode] et/ou [ décodage]). Cela est lié au fait que l’ancien interpréteur -Oi et le sérialiseur de données ne sont pas pris en charge sur la plateforme 64 bits. Pour plus d’informations, consultez la description de MIDL2414.
L’exemple suivant illustre cette erreur :
roo.idl :
double GetDouble();
roo.acf :
[decode] GetDouble();
Ce qui suit est recommandé comme solution de contournement pour les interfaces nouvelles et anciennes. Utilisez un paramètre [out] pour contenir le résultat au lieu d’utiliser une valeur de retour :
roo.idl :
void GetDouble([out] double *result); //top level pointer is a [ref] pointer.
roo.acf :
[decode] GetDouble();
Notez que cette solution est entièrement rétrocompatible sur le câble, car la représentation filaire d’un pointeur [ref, out] ou d’un double est identique à celle d’un double.
MIDL2416
le type transmis ne peut pas contenir de pointeur complet pour [wire_marshal] ou [user_marshal]
Les types avec des attributs [ wire_marshal] ou [ user_marshal] peuvent ne pas contenir de pointeurs complets ([ ptr]). Utilisez [ unique] ou [ ref] à la place.
L’exemple suivant illustre cette erreur :
typedef struct
{
    [ptr] long *a;    //Should use [ref] or [unique] instead
}
st1;
typedef [wire_marshal(st1)] struct
{
    long a;
}
st2:
void roo(st2 *s);    //MIDL2416
MIDL2417
le type transmis doit être un pointeur ou avoir une taille constante pour [wire_marshal] et [user_marshal]
Les types de niveau supérieur avec des attributs [ wire_marshal] ou [ user_marshal] doivent avoir une taille bien définie au moment de la compilation. Ils ne peuvent pas être ou contenir des tableaux conformes ou de taille variable.
L’exemple suivant illustre cette erreur :
typedef struct        //Type contains variable-sized array
{
    long s;
    [size_is(s)] char a[];
}
st1;
typedef [wire_marshal(st1)] struct
{
    long a;
}
st2;
void roo(st2 *s);        //MIDL2417
MIDL2418
les procédures avec [propget] doivent avoir au moins un paramètre ou une valeur de retour
Les procédures avec l’attribut [propget] doivent avoir des moyens de retourner la valeur de la propriété. Ils doivent avoir au moins un paramètre [out] ou une valeur de retour.
MIDL2461
L’attribut [readonly] a été appliqué au niveau de la méthode.
L’attribut [readonly] ne peut être appliqué qu’au niveau du paramètre.
MIDL2465
Les structures contenant des tableaux conformes doivent être passées par référence
Les paramètres de niveau supérieur dans RPC doivent avoir une taille bien définie au moment de la compilation. Ils ne peuvent pas être, ni contenir un tableau conforme ou de taille variable. En outre, les utilisateurs ne peuvent pas encoder/décoder un type sans taille bien définie. Les applications doivent transmettre par référence un struct conforme/un struct variable.
L’exemple suivant illustre cette erreur :
typedef struct        //Type contains variable-sized array
{
    long s;
    [size_is(s)] char a[];
}
st1;
void roo(st1 s);        //MIDL2465
 
on .acf file
typedef [encode,decode] st1; //MIDL2465
MIDL9008
code> d’erreur du système de problème <du compilateur interne : le compilateur ne peut pas continuer pour une raison inconnue. Consultez la documentation pour une solution de contournement.
Le compilateur n’a pas pu continuer et la cause de l’erreur est inconnue. Le numéro d’erreur hexadécimal est un identificateur d’erreur système. La compilation a peut-être échoué en raison d’un problème externe, tel qu’une condition de mémoire insuffisante. Dans ce cas, vous trouverez plus d’informations dans Winerror.h ou Ntstatus.h.
Deux situations génèrent généralement cette erreur :
  • La récupération du compilateur MIDL a échoué après la détection d’une erreur dans le fichier IDL. Si MIDL a retourné des messages d’erreur concernant votre fichier IDL, essayez de les corriger et de les recompiler. S’il n’y a aucun message d’erreur, le compilateur a peut-être échoué avant qu’il puisse signaler une erreur. Recherchez une erreur de syntaxe sur la ligne pour laquelle l’erreur interne du compilateur est signalée.
  • Le compilateur MIDL n’a pas pu générer de code correct sous une option d’optimisation spécifiée. Essayez de modifier les modes du compilateur, de compiler en mode mixte (/Os) ou de supprimer toutes les optimisations. Vous pouvez également recompiler à l’aide de l’indicateur /NO_FORMAT_OPT pour supprimer l’optimisation par défaut de MIDL des descripteurs de procédure et de type.
Parfois, cette erreur se produit même lorsque le fichier IDL est correct et qu’aucune option d’optimisation n’est utilisée. Si c’est le cas, essayez de réécrire la section de code à proximité de l’emplacement où l’erreur a été signalée en supprimant les modifications récentes, en simplifiant ou en réorganisant les types de données, en modifiant les prototypes, ou bien commencez à commenter des parties du fichier IDL pour localiser le code problématique.
Si aucune de ces options ne fonctionne, ou si vous pensez que le problème peut être lié à un bogue dans Midl.exe, veuillez en informer Microsoft en fournissant tous les détails appropriés.