Compartir a través de


Errores del compilador

Los siguientes mensajes de error se generan durante la compilación MIDL:

Código devuelto Descripción
MIDL2000
debe especificar /c_ext para los declaradores abstractos
Los declaradores abstractos representan una extensión de Microsoft a RPC y no se definen en RPC de DCE. Por lo tanto, si el archivo incluye declaradores abstractos, no se puede compilar con el modificador /osf , lo que exige una compatibilidad estricta con DCE. Las versiones 3.0 y posteriores de MIDL usan el modificador /c_ext como valor predeterminado; El modificador /osf desactiva el modificador /c_ext . Para obtener información sobre los declaradores abstractos, vea El cuerpo de ACF.
MIDL2001
la creación de instancias de datos es ilegal; debe usar "extern" o "static"
La declaración y la inicialización en el archivo IDL no son compatibles con RPC de DCE. Esta característica es una extensión de Microsoft que no está disponible al compilar en modo de compatibilidad con DCE (/osf).
MIDL2002
Desbordamiento de pila del compilador
El compilador se quedó sin espacio de pila al procesar el archivo IDL. Este problema puede producirse cuando el compilador está procesando una declaración o expresión complejas. Para solucionar el problema, simplifique la declaración o expresión complejas.
MIDL2003
Redefinición
Este mensaje de error puede aparecer en las siguientes circunstancias: se ha redefinido un tipo; se ha redefinido un prototipo de procedimiento; ya existe un miembro de una estructura o unión del mismo nombre; Ya existe un parámetro con el mismo nombre en el prototipo.
MIDL2004
Se usará el enlace [auto_handle]
No se ha definido ningún tipo de identificador como el tipo de identificador predeterminado. El compilador supone que se usará un identificador automático como identificador de enlace para el procedimiento especificado.
MIDL2005
memoria insuficiente
El compilador se quedó sin memoria durante la compilación. Reduzca el tamaño o la complejidad del archivo IDL o asigne más memoria al proceso.
MIDL2006
definición recursiva
Se ha definido de forma recursiva una estructura o unión. Este error puede producirse cuando se pierde una especificación de puntero en una definición de estructura anidada.
MIDL2007
import ignored; archivo ya importado
Importar un archivo IDL es una operación idempotente. Incluirlo más de una vez no tiene ningún efecto. Solo se omite la primera operación de importación.
MIDL2008
las enumeraciones dispersas requieren /c_ext o /ms_ext
La asignación de valores a constantes de enumeración no es compatible con RPC de DCE. Si desea usar las extensiones de Microsoft para MIDL que permiten asignar valores a constantes de enumeración, no puede compilar con el modificador /osf , lo que exige una compatibilidad estricta con DCE. Las versiones 3.0 y posteriores de MIDL usan los modificadores /c_ext y /ms_ext como valor predeterminado; el modificador /osf desactiva estos modificadores de extensión.
MIDL2009
símbolo sin definir
Se ha usado un símbolo no definido en una expresión. Este error puede producirse cuando se usa un valor enumerado no definido.
MIDL2010
tipo usado en el archivo ACF no definido en el archivo IDL
Se usa un tipo no definido.
MIDL2011
declaración de tipo sin resolver
El tipo notificado en el campo información de error adicional no se ha definido en otra parte del archivo IDL.
MIDL2012
el uso de constantes de caracteres anchos requiere /ms_ext o /c_ext
Las constantes de caracteres anchos son una extensión de Microsoft para DCE IDL. Para usar el tipo de datos wchar_t, no se puede compilar con el modificador /osf , que invalida los modificadores predeterminados del compilador MIDL /ms_ext y /c_ext.
MIDL2013
el uso de cadenas de caracteres anchos requiere /ms_ext o /c_ext
Las constantes de cadena de caracteres anchos son una extensión de Microsoft para DCE IDL. Para usar el tipo de datos wchar_t, no se puede compilar con el modificador /osf , que invalida los modificadores predeterminados del compilador MIDL /ms_ext y /c_ext.
MIDL2014
redefinición incoherente del tipo wchar_t
El tipo wchar_t se ha redefinido como un tipo que no es equivalente a DOS corto sin signo *.
MIDL2015
importlib no encontrado
El compilador no encontró la biblioteca de tipos especificada por la directiva [ importlib]. Compruebe que la ruta de acceso y el nombre de la biblioteca son correctas.
MIDL2016
dos bloques de biblioteca
Dos bloques de biblioteca (incluso con nombres diferentes) en el mismo archivo de origen no son válidos. Combine todos los elementos en un único bloque de biblioteca.
MIDL2017
La instrucción dispinterface requiere una definición para IDispatch
Este error suele producirse cuando los archivos Stdole2.tlb o Oaidl.idl no se importan.
MIDL2018
error al acceder a la biblioteca de tipos
El compilador no encontró la biblioteca de tipos especificada. Compruebe que ha especificado correctamente la ruta de acceso.
MIDL2019
error al acceder a la información de tipo
La biblioteca de tipos importada está dañada, no es válida o solo se construye parcialmente.
MIDL2020
error al generar la biblioteca de tipos
No se pudo generar la biblioteca de tipos. Una posible causa de este error es especificar una ruta de acceso al archivo IDL que tiene más de 126 caracteres. Oleaut32.dll no admite nombres de ruta de acceso de más de 126 caracteres.
MIDL2021
identificador duplicado
Las aplicaciones usan la instrucción id en los archivos IDL para especificar un DISPID para las funciones miembro. Las funciones miembro pueden ser propiedades o métodos de interfaces o dispinterfaces. Este error indica que el archivo IDL especifica el mismo número de identificador para dos métodos o propiedades.
MIDL2022
valor no válido o que falta para el atributo de entrada
El argumento del atributo entry puede ser una cadena que especifica un punto de entrada con nombre o un número ordinal que define el punto de entrada. Falta este argumento o contiene un valor no válido.
MIDL2023
se supone que la recuperación de errores
El compilador MIDL encontró caracteres no válidos en el archivo IDL.
MIDL2024
descartes de recuperación de errores
El compilador MIDL encontró caracteres no válidos en el archivo IDL. Omitirá los caracteres no válidos.
MIDL2025
error de sintaxis
El compilador detectó un error de sintaxis en la línea especificada.
MIDL2026
no se puede recuperar de errores de sintaxis anteriores; anulación de la compilación
El compilador MIDL intenta recuperarse automáticamente de errores de sintaxis agregando o quitando elementos sintácticos. Este mensaje indica que, a pesar de estos intentos de recuperación, el compilador detectó demasiados errores. Corrija los errores especificados y vuelva a compilar.
MIDL2027
opción pragma desconocida
La pragma de C especificada no se admite en MIDL. Quite la pragma del archivo IDL.
MIDL2028
característica no implementada
La característica MIDL, aunque parte de la definición del lenguaje, no se implementa en RPC de Microsoft y no es compatible con el compilador MIDL. Por ejemplo, no se implementan las siguientes características de lenguaje: conjunto de bits, canalización y tipo de carácter internacional. La característica de idioma no implementado aparece en el campo de información de error adicional del mensaje de error.
MIDL2029
tipo no implementado
El tipo de datos especificado, aunque una palabra clave MIDL legal, no se implementa en RPC de Microsoft.
MIDL2030
no puntero usado en una operación de desreferencia
Un tipo de datos que no es un puntero se ha asociado a las operaciones de puntero. No se puede tener acceso al objeto a través del puntero no especificado.
MIDL2031
expression tiene una división por cero
La expresión constante contiene división por cero.
MIDL2032
expression usa tipos incompatibles
Los lados izquierdo y derecho del operador en una expresión son de tipos incompatibles.
MIDL2033
La expresión noarray usa el operador de índice
La expresión usa la operación de indexación de matriz en un elemento de datos que no es del tipo de matriz.
MIDL2034
El lado izquierdo de la expresión no se evalúa como struct,union/enum
El operador de referencia directa o indirecta "." o "->" se ha aplicado a un objeto de datos que no es una estructura, unión o enumeración. No se puede obtener una referencia directa o indirecta mediante el objeto especificado.
MIDL2035
expresión constante esperada
Se esperaba una expresión constante en la sintaxis . Por ejemplo, los límites de matriz requieren una expresión constante. El compilador emite este mensaje de error cuando el límite de matriz se define con una variable o un símbolo no definido.
MIDL2036
la expresión no se puede evaluar en tiempo de compilación
El compilador no puede evaluar una expresión en tiempo de compilación.
MIDL2037
expresión no implementada
Una característica que se admitía en versiones anteriores del compilador MIDL no se admite en la versión del compilador proporcionada con Rpc de Microsoft. Quite la expresión especificada.
MIDL2038
no se especificó ningún atributo [pointer_default], suponiendo [único] para todos los punteros sin asignar.
El compilador MIDL ofrece tres casos predeterminados diferentes para punteros que no tienen atributos de puntero. Los parámetros de función que son punteros de nivel superior tienen como valor predeterminado punteros [ref]. Los punteros incrustados en estructuras y punteros a otros punteros (no punteros de nivel superior) son predeterminados para el tipo especificado por el atributo [pointer_default]. Cuando no se proporciona ningún atributo [pointer_default], estos punteros de nivel no superior tienen como valor predeterminado punteros únicos. Este mensaje de error indica el último caso: no se proporciona ningún atributo [pointer_default] y hay al menos un puntero no de nivel superior que se tratará como un puntero único. Para obtener más información, vea Tipos de puntero predeterminados.
MIDL2039
la interfaz no es compatible con la serialización de automatización
La interfaz no cumple los requisitos de una interfaz de automatización OLE. Asegúrese de que la interfaz se deriva de IUnknown o IDispatch.
MIDL2040
[out] solo el parámetro no puede ser un puntero a una estructura abierta
Se ha usado un parámetro de solo [out]como puntero a una estructura, conocida como estructura abierta, cuyo intervalo y tamaño transmitidos se determinan en tiempo de ejecución. El código auxiliar del servidor no sabe cuánto espacio asignar para una estructura abierta. Use un puntero a un puntero a la estructura abierta y asegúrese de que la aplicación de servidor asigna espacio suficiente para él.
MIDL2041
[out] solo el parámetro no puede ser una cadena sin tamaño
Una matriz con el atributo de cadena se ha declarado como un parámetro [out]-only sin ninguna especificación de tamaño. El código auxiliar del servidor necesita información de tamaño para asignar memoria para la cadena. Puede quitar el atributo de cadena y agregar el atributo [size_is] o puede cambiar el parámetro a un parámetro [in, out].
MIDL2042
[out] el parámetro no es un puntero
Todos los parámetros [out] deben ser punteros, en consonancia con la convención de llamada por valor del lenguaje de programación C. El parámetro direccional [out] indica que el servidor transmite un valor al cliente. Con la convención de llamada por valor, el servidor puede transmitir datos al cliente solo si el argumento de función es un puntero.
MIDL2043
open structure no puede ser un parámetro
Una estructura abierta contiene una matriz conforme como último elemento. Una estructura o unión se trunca cuando el último elemento de esa estructura o unión es una matriz conforme.
MIDL2044
[out] el identificador de contexto o el identificador genérico deben especificarse como un puntero a ese tipo de identificador.
Un parámetro de identificador de contexto o definido por el usuario con el atributo direccional [out] debe ser un puntero a un puntero.
MIDL2045
el identificador de contexto no debe derivar de un tipo que tenga el atributo [transmit_as]
Los identificadores de contexto se deben transmitir como tipos de identificador de contexto. No se pueden transmitir como otros tipos y no pueden derivarse de [transmit_is], [represent_as], [wire_marshal] o [user_marshal].
MIDL2046
no puede especificar un número variable de argumentos para un procedimiento remoto
Las llamadas a procedimientos remotos que especifican un número variable de argumentos en tiempo de compilación no son compatibles con la definición rpc de DCE. No se puede usar un número variable de argumentos en RPC de Microsoft.
MIDL2047
El parámetro con nombre no puede ser "void"
Se especifica un parámetro con el tipo base void con un nombre.
MIDL2048
parameter deriva de "coclass" o "module"
La coclase especifica un objeto de nivel superior que contiene interfaces y dispinterfaces. No se puede pasar como parámetro.
MIDL2049
solo el primer parámetro puede ser un identificador de enlace; debe especificar el modificador /ms_ext
DCE RPC solo permite que el primer parámetro sea un identificador de enlace. La compilación con el modificador /osf desactiva el modificador /ms_ext predeterminado que admite varios parámetros de identificador y los parámetros de controlador en distintos de la posición más izquierda.
MIDL2050
no puede usar [comm_status] en un parámetro y un tipo de valor devuelto
Tanto el procedimiento como uno de sus parámetros tienen el atributo [comm_status]. El atributo [comm_status] especifica que solo un objeto de datos a la vez puede ser de tipo error_status_t.
MIDL2051
El atributo [local] de un procedimiento requiere /ms_ext
El atributo [local] es una extensión de Microsoft para DCE IDL. Para usar este atributo en una función, no se puede compilar con el modificador /osf . El modificador /osf invalida los modificadores predeterminados del compilador MIDL /ms_ext y /c_ext.
MIDL2052
los atributos de propiedad solo se pueden usar con procedimientos
Uso incorrecto de un atributo [propget], [propput] o [propputref]. Compruebe que ha escrito correctamente el nombre de la función de la propiedad y que la propiedad y la función tienen el mismo nombre.
MIDL2053
es posible que un procedimiento no tenga más de un atributo de propiedad
Como máximo, solo se puede especificar uno de los atributos [propget], [propput] o [propputref] para una función.
MIDL2054
el procedimiento tiene una combinación ilegal de atributos de operación
Algunos atributos no se pueden usar en conexión con otros atributos. Compruebe la Referencia del lenguaje MIDL para conocer los requisitos y la sintaxis exactos de los atributos usados en este procedimiento.
MIDL2055
el campo derivado de una matriz conforme debe ser el último miembro de la estructura.
La estructura contiene una matriz conforme que no es el último elemento de la estructura. La matriz conforme debe aparecer como el último elemento de estructura.
MIDL2056
etiqueta duplicada [caso]
Se ha especificado una etiqueta de mayúsculas y minúsculas duplicadas. Se muestra la etiqueta duplicada.
MIDL2057
no se especifica ningún caso [predeterminado] para la unión discriminada
Se ha especificado una unión discriminada sin un caso predeterminado.
MIDL2058
no se puede resolver la expresión de atributo
No se puede resolver la expresión asociada al atributo . Este error suele producirse cuando no se define una variable que aparece en la expresión. Por ejemplo, el error puede producirse cuando la variable s no está definida y la usa el atributo [size_is].
MIDL2059
la expresión de atributo debe ser de tipo entero, sin compatibilidad con expresiones de 64 bits.
La variable de atributo o expresión especificada debe ser un tipo entero. Este error se produce cuando el tipo attribute-expression no se resuelve en un entero.
MIDL2060
[byte_count] requiere /ms_ext
El atributo [byte_count] es una extensión de Microsoft a DCE IDL. Para usar este atributo, no se puede compilar con el modificador /osf , que invalida los modificadores predeterminados del compilador MIDL /ms_ext y /c_ext.
MIDL2061
[byte_count] solo se puede aplicar a los parámetros out del tipo de puntero.
El atributo [byte_count] solo se puede aplicar a los parámetros [out] y todos los parámetros [out] deben ser tipos de puntero.
MIDL2062
[byte_count] no se puede especificar en un puntero a una matriz o estructura conformes
El atributo [byte_count] no se puede aplicar a una matriz o estructura conformes.
MIDL2063
el parámetro que especifica el recuento de bytes no es [in] solo o el parámetro de recuento de bytes no es [out] solo
El valor asociado a la [byte_count] debe transmitirse desde el cliente al servidor; debe ser un parámetro [in]. El parámetro [byte_count] no necesita ser un parámetro [in, out].
MIDL2064
parámetro que especifica el recuento de bytes no es un tipo entero
El valor asociado al recuento de bytes debe ser el tipo entero int, small, short o long.
MIDL2065
[byte_count] no se puede especificar en un parámetro con atributos de tamaño
El atributo [byte_count] no se puede usar con otros atributos de tamaño como [size_is] o [length_is].
MIDL2066
La expresión [case] no es constante
La expresión especificada para la etiqueta case no es una constante.
MIDL2067
La expresión [case] no es de tipo entero
La expresión especificada para la etiqueta case no es un tipo entero.
MIDL2068
especificar [context_handle] en un tipo distinto de void * requiere /ms_ext
Para la compatibilidad con DCE-RPC, el identificador de contexto debe ser un puntero de tipo void *. Si desea que los identificadores de contexto estén asociados a tipos distintos de void *, no use el modificador del compilador MIDL /osf, que invalida el modificador predeterminado del compilador MIDL /ms_ext.
MIDL2069
no puede especificar más de un parámetro con cada uno de comm_status/fault_status
Un procedimiento solo puede tener un parámetro con el atributo [comm_status]. Puede tener como máximo un parámetro con el atributo [fault_status].
MIDL2070
comm_status/parámetro fault_status debe ser un parámetro de puntero [out] solo
Los tipos de código de error [comm_status] y [fault_status] se transmiten desde el servidor al cliente y, por lo tanto, se deben especificar como un parámetro [out]. Debido a las restricciones del lenguaje de programación C, todos los parámetros [out] deben ser punteros.
MIDL2071
error de sintaxis del punto de conexión
La sintaxis del punto de conexión es incorrecta.
MIDL2072
atributo inapplicable
El atributo especificado no se puede aplicar en esta construcción. Por ejemplo, el atributo de cadena se aplica a matrices char o punteros char y no se puede aplicar a una estructura que consta de dos enteros cortos :
typedef [string] struct moo 
{
    short x;
    short y;
};
MIDL2073
[allocate] requiere /ms_ext
El atributo allocate representa una extensión de Microsoft que no se define como parte de RPC de DCE. Para usar este atributo, no se puede compilar con el modificador /osf , que invalida el modificador predeterminado del compilador MIDL /ms_ext
MIDL2074
modo [allocate] no válido
Se ha especificado un modo no válido para la construcción de atributo [allocate]. Los cuatro modos válidos son single_node, all_nodes, on_null y siempre.
MIDL2075
Los atributos length no se pueden aplicar con el atributo de cadena
Cuando se usa el atributo de cadena, los archivos de código auxiliar generados llaman a la función strlen para determinar la longitud de la cadena. No use el atributo length y el atributo de cadena para la misma variable.
MIDL2076
[last_is] y [length_is] no se pueden especificar al mismo tiempo
Se han especificado tanto [last_is] como [length_is] para la misma matriz. Estos atributos están relacionados de la siguiente manera: length = last first + 1. Dado que cada valor se puede derivar del otro, no especifique ambos.
MIDL2077
[max_is] y [size_is] no se pueden especificar al mismo tiempo
Se han especificado tanto [ max_is] como [ size_is] para la misma matriz. Estos atributos están relacionados de la siguiente manera: max = size + 1. Dado que cada valor se puede derivar del otro, no especifique ambos.
MIDL2078
no se especificó ningún atributo [switch_is] en el uso de union
No se ha especificado ningún discriminante para la unión. El atributo [switch_is] indica el discriminante usado para seleccionar entre los campos de unión.
MIDL2079
no se especificó [uuid]
No se ha especificado UUID para la interfaz.
MIDL2080
[uuid] se omite en la interfaz [local]
El uso del atributo [local] en una interfaz de objeto hace que el compilador MIDL omita el atributo [uuid]. No se pueden usar ambos atributos en una interfaz RPC.
MIDL2081
error de coincidencia de tipos entre expresiones de atributo de longitud y tamaño
Las expresiones de atributo length y size deben ser de los mismos tipos. Por ejemplo, esta advertencia se emite cuando la variable de atributo para la expresión [size_is] es de tipo unsigned long y la variable de atributo para la expresión [length_is] es de tipo long.
MIDL2082
[string] el atributo debe especificarse "byte", "char" o "wchar_t" matriz o puntero
Un atributo de cadena no se puede aplicar a un puntero o matriz cuyo tipo base no es un byte, char o struct en el que los miembros son todos del tipo byte o char .
MIDL2083
error de coincidencia entre el tipo de la expresión [switch_is] y el tipo de modificador de la unión
Si no se especifica la unión [switch_type], el tipo de modificador es el mismo que el campo [switch_is].
MIDL2084
[transmit_as] no se debe aplicar a un tipo que derive de un identificador de contexto.
Los identificadores de contexto no se pueden transmitir como otros tipos.
MIDL2085
[transmit_as] debe especificar un tipo transmisible
El tipo [transmit_as] especificado se deriva de un tipo que microsoft RPC no puede transmitir, como void, void *, o int. Use un tipo base RPC definido; en el caso de int, agregue especificadores de tamaño como small, short o long para calificar el int.
MIDL2086
el tipo transmitido para [transmit_as] y [represent_as] no deben ser un puntero ni derivarse de un puntero.
El tipo transmitido no puede ser un puntero ni derivar de un puntero.
MIDL2087
el tipo presentado para [transmit_as] y [represent_as] no deben derivarse de una matriz conforme o variable, su equivalente de puntero o una estructura conforme/variable
El tipo al que se ha aplicado [transmit_as] no puede derivar de una matriz o estructura conformes (una matriz o estructura cuyo tamaño se determina en tiempo de ejecución).
MIDL2088
El formato [uuid] es incorrecto
El formato UUID no se ajusta a la especificación. El UUID debe ser una cadena que consta de cinco secuencias de dígitos hexadecimales de longitud 8, 4, 4, 4 y 12 dígitos. "12345678-1234-ABCD-EF01-28A49C28F17D" es un UUID válido. Use la función UuidCreate o una utilidad para generar un UUID válido.
MIDL2089
uuid no es un número hexadecimal
El UUID especificado para la interfaz contiene caracteres que no son válidos en una representación de número hexadecimal. Los caracteres de 0 a 9 y A a F son válidos en una representación hexadecimal.
MIDL2090
los parámetros opcionales deben aparecer después de los parámetros necesarios.
Para obtener una descripción del orden de las listas de parámetros, vea [opcional] en la Referencia del lenguaje MIDL.
MIDL2091
[dllname] necesario cuando se usa [entry]
Si especifica un punto de entrada en un archivo DLL, también debe especificar el nombre de ese archivo DLL mediante el atributo [dllname].
MIDL2092
[enlazable] no es válido sin [propget], [propput] o [propputref]
El atributo [enlazable] solo es válido en una propiedad, por lo que también debe especificar una de las funciones de acceso a propiedades o de configuración de propiedades.
MIDL2093
los procedimientos con [propput] o [propputref] deben tener al menos un parámetro
Un procedimiento [propput] o [ propputref] debe tener al menos un parámetro [in] con la propiedad que se va a establecer; Un procedimiento [propget] debe tener al menos un parámetro [out, retval] para recibir la propiedad o la referencia.
MIDL2094
Se requiere el atributo [id]
Esta función miembro, debido a la sintaxis dispinterface usada, requiere un DISPID, que se especifica mediante el atributo [ id]. Al especificar un dispinterface mediante propiedades y métodos, debe especificar un DISPID para cada propiedad y método.
MIDL2095
el nombre de interfaz especificado en ACF no coincide con el especificado en el archivo IDL.
En el modo del compilador actual, el nombre que sigue a la palabra clave interface en ACF debe ser el mismo que el nombre que sigue a la palabra clave interface en el archivo IDL. Los nombres de interfaz de los archivos IDL y ACF pueden ser diferentes al compilar con el modificador del compilador MIDL /acf.
MIDL2096
atributo duplicado
Se han especificado atributos duplicados o en conflicto. Este error suele producirse cuando dos atributos son mutuamente excluyentes. Por ejemplo, los atributos [code] y [nocode] no se pueden usar al mismo tiempo.
MIDL2097
el parámetro con el atributo [comm_status] o [fault_status] debe ser un puntero al tipo error_status_t
Cuando se usa [fault_status] o [comm_status] como atributo de parámetro, el parámetro debe ser un parámetro [out] de tipo error_status_t. Si se produce un error de servidor, el parámetro se establece en el código de error. Cuando la llamada remota se completa correctamente, el procedimiento establece el valor .
MIDL2098
No se puede especificar un procedimiento [local] en el archivo ACF
Se ha especificado un procedimiento local en el ACF. El procedimiento local solo se puede especificar en el archivo IDL.
MIDL2099
el tipo especificado no se define como identificador
El tipo especificado en el atributo [implicit_handle] no se define como un tipo de identificador. Cambie la definición de tipo o el nombre de tipo especificado por el atributo .
MIDL2100
procedimiento sin definir
Se ha aplicado un atributo a un procedimiento de ACF y ese procedimiento no está definido en el archivo IDL.
MIDL2101
este parámetro no existe en el archivo IDL
Un parámetro especificado en ACF no existe en la definición del archivo IDL. Todos los parámetros, funciones y definiciones de tipo que aparecen en ACF deben corresponder a parámetros, funciones y tipos definidos anteriormente en el archivo IDL.
MIDL2102
Esta construcción de límites de matriz no se admite
MIDL admite actualmente la expresión de los límites superior e inferior de una matriz con el formato Array[Lower .. Superior] solo cuando la constante que especifica el límite inferior de la matriz se resuelve en el valor cero.
MIDL2103
la especificación enlazada de matriz no es válida
La especificación de usuario de los límites de matriz para la matriz de tamaño fijo no es válida. Por ejemplo:
typedef short Array[-1]
MIDL2104
No se admite el puntero a una matriz compatible o una matriz que contiene una matriz compatible.
Uso de matriz conforme no válido. Para conocer las reglas que rigen las matrices conformes, consulte Matrices y RPC.
MIDL2105
pointee/array no deriva ningún tamaño
Se ha especificado una matriz conforme sin ninguna especificación de tamaño. Puede especificar el tamaño con el atributo [max_is] o [size_is].
MIDL2106
solo las matrices fijas y SAFEARRAYs son legales en una biblioteca de tipos.
Ha usado un tipo de matriz dentro de una instrucción de biblioteca que no se puede usar en una biblioteca de tipos.
MIDL2107
SAFEARRAYs solo son legales dentro de un bloque de biblioteca
El compilador MIDL no reconoce un SAFEARRAY como un tipo de datos válido excepto al generar una biblioteca de tipos.
MIDL2108
constante de caracteres con formato incorrecto
El carácter de final de línea no se permite en constantes de caracteres.
MIDL2109
fin del archivo encontrado en el comentario
El carácter de fin de archivo se ha encontrado en un comentario.
MIDL2110
final del archivo encontrado en la cadena
El carácter de fin de archivo se ha encontrado en una cadena.
MIDL2111
la longitud del identificador supera los 31 caracteres.
Los identificadores están limitados a 31 caracteres alfanuméricos. Los nombres de identificador de más de 31 caracteres se truncan.
MIDL2112
final de la línea que se encuentra en la cadena
El carácter de final de línea se ha encontrado en la cadena. Compruebe que ha incluido el carácter de comilla doble que finaliza la cadena.
MIDL2113
la constante de cadena supera el límite de 255 caracteres.
La cadena superó la longitud máxima permitida de 255 caracteres.
MIDL2114
el identificador supera el límite de 255 caracteres y se ha truncado.
El identificador superó la longitud máxima permitida de 255 caracteres. Se truncan los caracteres excesivos del identificador.
MIDL2115
constante demasiado grande
La constante es demasiado grande para representarse internamente.
MIDL2116
error de análisis numérico
El compilador no pudo analizar el identificador numérico.
MIDL2117
error al abrir el archivo
El sistema operativo notificó un error al intentar abrir un archivo de salida. Este error puede deberse a un nombre demasiado largo para el sistema de archivos o por un nombre de archivo duplicado.
MIDL2118
enlace de errores a la función
MIDL2119
error al inicializar OLE
MIDL2120
error al cargar la biblioteca
MIDL2121
[out] solo el parámetro no debe derivar de un puntero o matriz de nivel superior [unique] o [ptr]
Un puntero único no puede ser un parámetro [out]-only. Por definición, un puntero único puede cambiar de NULL a distinto de NULL. No se pasa información sobre el parámetro [out]-only del cliente al servidor.
MIDL2122
el atributo no es aplicable a esta unión no rpcble
Solo los atributos [switch_is] y [switch_type] se aplican a una unión que se transmite como parte de una llamada a procedimiento remoto.
MIDL2123
la expresión usada para un atributo size no debe derivar de un parámetro [out]-only
El valor de un parámetro [out]-only no se transmite al servidor y no se puede usar para determinar la longitud o el tamaño del parámetro [in].
MIDL2124
expresión usada para un atributo length para un parámetro [in] no puede derivar de un parámetro [out]-only
El valor de un parámetro [out]-only no se transmite al servidor y no se puede usar para determinar la longitud o el tamaño del parámetro [in].
MIDL2125
el uso de "int" necesita /c_ext
MIDL es un lenguaje fuertemente tipado. Todos los parámetros transmitidos a través de la red deben derivarse de uno de los tipos base MIDL. El tipo int no se define como parte de MIDL. Los datos transmitidos deben incluir un especificador de tamaño: pequeño, corto o largo. Los datos que no se transmiten a través de la red se pueden incluir en una interfaz; use el modificador /c_ext .
MIDL2126
El campo struct/union no debe ser "void"
Los campos de una estructura o unión deben declararse como de un tipo base específico admitido por MIDL o un tipo derivado de los tipos base. Los tipos void no se permiten en operaciones remotas.
MIDL2127
El elemento array no debe ser void
Un elemento de matriz no puede ser void.
MIDL2128
el uso de calificadores de tipo o modificadores necesita /c_ext
Los modificadores de tipo como _cdecl y _far solo se pueden compilar si especifica el modificador /c_ext .
MIDL2129
El campo struct/union no debe derivar de una función
Los campos de una estructura o unión deben ser tipos base MIDL o tipos derivados de estos tipos base. Las funciones no son legales en los campos de estructura o unión.
MIDL2130
el elemento array no debe ser una función
Un elemento de matriz no puede ser una función.
MIDL2131
parameter no debe ser una función
El parámetro de un procedimiento remoto debe ser una variable de un tipo especificado. Una función no puede ser un parámetro para el procedimiento remoto.
MIDL2132
struct/union con campos de bits necesita /c_ext
Debe especificar el modificador del compilador MIDL /c_ext para permitir campos de bits en estructuras que no se transmiten en una llamada a procedimiento remoto.
MIDL2133
especificación de campo de bits en un tipo que "int" es una extensión no compatible con ANSI
La especificación del lenguaje de programación ANSI C no permite aplicar campos de bits a tipos no enteros.
MIDL2134
La especificación de campo de bits solo se puede aplicar a tipos enteros simples e integrales
La especificación del lenguaje de programación ANSI C no permite aplicar campos de bits a tipos no enteros.
MIDL2135
El campo struct/union no debe derivar de handle_t ni de un controlador de contexto
Los identificadores de contexto no se pueden transmitir como parte de otra estructura. Deben transmitirse como identificadores de contexto.
MIDL2136
El elemento array no debe derivar de handle_t ni de un identificador de contexto
Los identificadores de contexto no se pueden transmitir como parte de una matriz.
MIDL2137
esta especificación de union necesita /c_ext
Una unión que aparece en la definición de interfaz debe estar asociada al discriminante o declarado como local. Los datos que no se transmiten a través de la red se pueden declarar implícitamente como locales cuando se usa el modificador /c_ext , que es el valor predeterminado MIDL. No se puede compilar este IDL con el modificador /osf .
MIDL2138
El parámetro derivado de un "int" debe tener el especificador de tamaño "small", "short" o "long" con "int"
El tipo int es solo un tipo MIDL válido en plataformas de 32 bits, en sistemas de 16 bits int debe ir acompañado de una especificación de tamaño. Use uno de los especificadores de tamaño pequeños, cortos o largos.
MIDL2139
tipo del parámetro no puede derivar de void o void*
MIDL es un lenguaje fuertemente tipado. Todos los parámetros transmitidos a través de la red deben derivarse de uno de los tipos base MIDL. MIDL no admite void como un tipo base. Debe cambiar la declaración a un tipo MIDL válido.
MIDL2140
No se admite el parámetro derivado de una estructura o unión que contenga campos de bits.
Los campos de bits no se definen como un tipo de datos válido por DCE RPC.
MIDL2141
el uso de un parámetro derivado de un tipo que contiene modificadores de tipo/calificadores de tipo necesita /c_ext
El uso de palabras clave como lejos, cercano, const y volátil en el archivo IDL es una extensión de Microsoft para DCE RPC. Estas palabras clave no están disponibles cuando se compila con el modificador /osf , que desactiva el modificador de extensión /c_ext predeterminado.
MIDL2142
el parámetro no debe derivar de un puntero a una función
Las bibliotecas en tiempo de ejecución rpc transmiten un puntero y sus datos asociados entre el cliente y el servidor. Los punteros a funciones no se pueden transmitir como parámetros porque la función no se puede transmitir a través de la red.
MIDL2143
El parámetro no debe derivar de una unión compatible con nonrpc
La unión debe estar asociada a un discriminante. Use los atributos [switch_is] y [switch_type].
MIDL2144
tipo de valor devuelto se deriva de un "int". Debe usar especificadores de tamaño con "int"
En sistemas de 16 bits, el tipo int no es un tipo MIDL válido a menos que vaya acompañado de una especificación de tamaño. Use uno de los especificadores de tamaño pequeños, cortos o largos.
MIDL2145
El tipo de valor devuelto no debe derivarse de un puntero void
MIDL es un lenguaje fuertemente tipado. Todos los parámetros transmitidos a través de la red deben derivarse de uno de los tipos base MIDL. Los tipos Void no se definen como parte de MIDL. Debe cambiar la declaración a un tipo MIDL válido.
MIDL2146
El tipo de valor devuelto no debe derivar de una estructura o unión que contenga campos de bits.
Los campos de bits no se definen como un tipo de datos válido por DCE RPC.
MIDL2147
El tipo de valor devuelto no debe derivar de una unión compatible con nonrpc
La unión debe estar asociada a un discriminante. Use los atributos [switch_is] y [switch_type].
MIDL2148
el tipo de valor devuelto no debe derivar de un puntero a una función
Las bibliotecas en tiempo de ejecución rpc transmiten un puntero y sus datos asociados entre el cliente y el servidor. Los punteros a funciones no se pueden transmitir como parámetros porque RPC no define un método para transmitir la función asociada a través de la red.
MIDL2149
No se admiten inicializadores compuestos
DCE RPC solo admite inicialización simple. La estructura o matriz no se puede inicializar en el archivo IDL.
MIDL2150
Los atributos ACF del archivo IDL necesitan el modificador /app_config
Una extensión de Microsoft permite especificar atributos ACF en el archivo IDL. Use el modificador /app_config para activar esta extensión.
MIDL2151
El comentario de una sola línea necesita /ms_ext o /c_ext
Los comentarios de una sola línea que usan dos caracteres de barra diagonal (//) representan una extensión de Microsoft a RPC de DCE. No puede usar comentarios de una sola línea si está compilando con el modificador /osf .
MIDL2152
El formato [version] es incorrecto
El número de versión de la interfaz en el encabezado de interfaz debe especificarse en el formato principal. minor, donde cada número puede oscilar entre 0 y 65535.
MIDL2153
"signed" necesita /ms_ext o /c_ext
El uso de la palabra clave signed es una extensión de Microsoft para DCE RPC. No puede usar el modificador /osf si desea usar esta característica.
MIDL2154
error de coincidencia en el tipo de asignación
El tipo de la variable no coincide con el tipo del valor asignado a la variable.
MIDL2155
la declaración debe tener el formato : const <type> \<declarator> = <initializing expression>
La declaración no es compatible con la sintaxis RPC de DCE. Use el modificador de modo de compilador /ms_ext o /c_ext MIDL.
MIDL2156
la declaración debe tener "const"
Las declaraciones del archivo IDL deben ser expresiones constantes que usen la palabra clave const, por ejemplo:
const short x = 2;
MIDL2157
struct/union/enum no se debe definir en una especificación de tipo de parámetro
La estructura, unión o tipo enumerado debe indicarse explícitamente fuera del prototipo de función.
MIDL2158
El atributo [allocate] solo se debe aplicar en tipos de puntero que no sean void.
El atributo [allocate] está diseñado para estructuras de datos complejas basadas en punteros. Cuando se especifica el atributo [allocate], el archivo de código auxiliar recorre la estructura de datos para calcular el tamaño total de todos los objetos accesibles desde el puntero y todos los demás punteros de la estructura de datos. Cambie el tipo a un tipo de puntero novoid o quite el atributo [allocate] y use otro método para determinar su tamaño de asignación, como el operador sizeof .
MIDL2159
La construcción de puntero equivalente o matriz no puede derivarse de una unión no encapsulada
Cada unión debe estar asociada a un discriminante. No se permiten matrices de uniones porque no proporcionan el discriminante asociado. Se permiten matrices de estructuras en las que la estructura empaqueta la unión y su discriminante porque los códigos auxiliares pueden usar el discriminante para determinar el tamaño de cada unión.
MIDL2160
el campo no debe derivar de un tipo de error_status_t
El tipo error_status_t solo se puede usar como parámetro o un tipo de valor devuelto. No se puede incrustar en el campo de una estructura o unión.
MIDL2161
union tiene al menos un brazo sin una etiqueta case
La declaración de unión no coincide con la sintaxis MIDL necesaria para la unión. Cada brazo de unión requiere una etiqueta case o una etiqueta predeterminada que seleccione ese brazo de unión.
MIDL2162
el parámetro o el valor devuelto no deben derivar de un tipo que tenga [ignore] aplicado.
El atributo [ignore] es un atributo de campo que solo se puede aplicar a campos, como campos de estructuras y matrices. El atributo [ignore] indica que el código auxiliar no debe desreferenciar el puntero durante la transmisión y no se permite cuando entra en conflicto con otros atributos que se deben desreferenciar, como parámetros [out] y valores devueltos de función.
MIDL2163
el puntero ya tiene un atributo de puntero aplicado.
Solo se puede aplicar uno de los atributos de puntero, [ref], [unique] o [ptr] a un único puntero.
MIDL2164
field/parameter no debe derivar de una estructura recursiva a través de un puntero ref.
Por definición, un puntero de referencia no se puede establecer en NULL. Una estructura de datos recursiva definida con un puntero de referencia no tiene elementos NULL y por convención no se determina. Use un atributo de puntero [único] para permitir que la estructura de datos especifique un elemento NULL o vuelva a definir la estructura de datos como una estructura de datos no recursiva.
MIDL2165
el uso del campo que deriva de un puntero void necesita /c_ext
El tipo void * y otros tipos y calificadores de tipo que no son compatibles con DCE IDL se permiten en el archivo IDL solo cuando se usa la configuración predeterminada del compilador MIDL. El uso del modificador /osf invalida este valor predeterminado. Si debe compilar en modo de compatibilidad de osf, deberá volver a definir el tipo de puntero.
MIDL2166
el uso de este atributo necesita /ms_ext
Esta característica de lenguaje es una extensión de Microsoft para DCE IDL. No puede usar esta característica si está compilando en modo de compatibilidad de osf ( /osf ).
MIDL2167
este atributo solo se permite con nuevas bibliotecas de tipos de formato
Para usar este atributo, necesita la versión de Oleaut32.dll proporcionada con Windows 2000 o posterior.
MIDL2168
el uso de wchar_t necesita /ms_ext o /c_ext
El tipo de carácter ancho representa una extensión a DCE IDL. El compilador MIDL no acepta el tipo de caracteres anchos al especificar el modificador /osf .
MIDL2169
Los campos sin nombre necesitan /ms_ext o /c_ext
DCE IDL no admite el uso de estructuras sin nombre o uniones incrustadas en otras estructuras o uniones. En DCE IDL, se debe asignar un nombre a todos estos campos incrustados. El compilador MIDL no permite su uso al especificar el modificador /osf .
MIDL2170
Los campos sin nombre solo se pueden derivar de tipos de struct/union
La extensión de Microsoft para el IDL de DCE que admite campos sin nombre solo se aplica a estructuras y uniones. Debe asignar un nombre al campo o redefinir el campo para cumplir esta restricción.
MIDL2171
el campo de una unión no puede derivar de una matriz conforme o variable o de su equivalente de puntero
La matriz conforme no puede aparecer sola en la unión, pero debe ir acompañada del valor que especifica el tamaño de la matriz. En lugar de usar la matriz como brazo de unión, use una estructura que consta de la matriz conforme y el identificador que especifica su tamaño.
MIDL2172
no se especificó ningún atributo [pointer_default], suponiendo [ptr] para todos los punteros sin asignar en la interfaz
La implementación de IDL de DCE especifica que todos los punteros de cada archivo IDL deben estar asociados a atributos de puntero. Cuando no se asigna un atributo de puntero explícito al tipo de parámetro o puntero y no se especifica ningún atributo [pointer_default] en el archivo IDL, el atributo de puntero completo ptr está asociado al puntero. Puede cambiar los atributos de puntero mediante atributos de puntero explícitos, especificando un atributo [pointer_default] o especificando el modificador /ms_ext para cambiar el valor predeterminado de punteros sin asignar a [unique].
MIDL2173
inicializar expresión debe resolverse en una expresión constante
Si se usa una expresión como inicializador, la expresión debe ser una expresión constante. Esto es cierto en todos los modos del compilador MIDL. La expresión debe poder resolverse en tiempo de compilación. Especifique una constante literal o una expresión que se resuelva en una constante, en lugar de una variable.
MIDL2174
la expresión de atributo debe ser de tipo entero, char, booleano o enumeración
El tipo especificado no se resuelve en un tipo de modificador válido. Use un tipo entero, carácter, byte, booleano o enumeración , o un tipo derivado de uno de estos tipos.
MIDL2175
constante no válida
La constante especificada está fuera del intervalo válido para el tipo especificado.
MIDL2176
atributo no implementado; Ignorado
El atributo especificado no se implementa en esta versión de Rpc de Microsoft. El compilador MIDL continúa procesando el archivo IDL como si el atributo no estuviera presente.
MIDL2177
el tipo de valor devuelto no debe derivar de un puntero [ref]
Los valores devueltos de función definidos para ser tipos de puntero deben especificarse como punteros [únicos] o completos . No se pueden usar punteros de referencia.
MIDL2178
la expresión de atributo debe ser un nombre de variable o una expresión de desreferencia de puntero en este modo. Debe especificar el modificador /ms_ext
El compilador IDL de DCE requiere que el tamaño asociado al atributo [size_is] se especifique mediante una variable o una variable de puntero. Si desea aprovechar la extensión de Microsoft que permite definir el atributo [size_is] mediante una expresión constante, no puede usar el modificador del compilador /osf .
MIDL2179
el parámetro no debe derivar de una unión no encapsulada recursiva
Una unión debe incluir un discriminante, por lo que una unión no puede tener otra unión como elemento. Una unión solo se puede incrustar en otra unión cuando forma parte de una estructura que incluye el discriminante.
MIDL2180
el parámetro binding-handle no puede ser solo [out]
El parámetro handle identificado por el compilador MIDL como identificador de enlace para esta operación debe ser un parámetro [in]. Los parámetros de solo salida no están definidos en el código auxiliar del cliente y el identificador de enlace debe definirse en el cliente.
MIDL2181
el puntero a un controlador no puede ser [único] o [ptr]
No se pueden usar los atributos de puntero únicos y completos para un puntero a un identificador. Estos atributos permiten el valor NULL y el identificador de enlace no puede ser NULL. Use el atributo [ref] para derivar el parámetro binding-handle de punteros de referencia.
MIDL2182
El parámetro que no es un identificador de enlace no debe derivar de handle_t
El tipo de identificador primitivo handle_t no es un tipo de datos válido que se transmite a través de la red. Cambie el tipo de parámetro a un tipo distinto de handle_t o quite el parámetro .
MIDL2183
Se encontró un final inesperado del archivo
El compilador MIDL encontró el final del archivo antes de poder resolver correctamente todos los elementos sintácticos del archivo. Compruebe que el carácter de llave de terminación (}) está presente al final del archivo o compruebe la sintaxis.
MIDL2184
El tipo derivado de handle_t no debe tener [transmit_as] aplicado a él
El tipo de identificador primitivo handle_t no se transmite a través de la red.
MIDL2185
[context_handle] no se debe aplicar a un tipo que tenga [handle] aplicado.
Los atributos [context_handle] y [handle] no se pueden aplicar al mismo tipo.
MIDL2186
[handle] no se debe especificar en un tipo derivado de void o void *
Un tipo especificado con el atributo [handle] se puede transmitir a través de la red, pero el tipo void* no es un tipo transmisible. El tipo de identificador debe resolverse en un tipo que se derive de los tipos base transmisibles.
MIDL2187
el parámetro debe tener [in], [out] o [in,out] en este modo. Debe especificar /ms_ext o /c_ext
El compilador IDL de DCE requiere que todos los parámetros tengan parámetros direccionales explícitos. Para usar las extensiones de Microsoft para DCE IDL, no puede usar el modificador /osf , que invalida /ms_ext y /c_ext.
MIDL2188
El tipo transmitido no puede derivar de "void" para [transmit_as], [represent_as], [wire_marshal], [user_marshal]
El atributo [transmit_as] solo se aplica a los tipos de puntero. Use el tipo void* en lugar de void.
MIDL2189
Se debe especificar "void" en la primera y solo especificación de parámetro
La palabra clave void aparece incorrectamente con otros parámetros de función. Para especificar una función sin parámetros, la palabra clave void debe ser el único elemento de la lista de parámetros, como en el ejemplo siguiente:
void Moo(void)
MIDL2190
[switch_is] solo se debe especificar en un tipo derivado de una unión no encapsulada
La palabra clave [switch_is] se aplica incorrectamente. Solo se puede usar con tipos de unión no encapsulados.
MIDL2191
Las estructuras que admiten cadenas no se implementan en esta versión
DCE IDL permite que el atributo [string] se aplique a una estructura cuyos elementos constan solo de caracteres, bytes o tipos que se resuelven en caracteres o bytes. Esta funcionalidad no se admite en RPC de Microsoft. El atributo [string] no se puede aplicar a la estructura en su conjunto. Sin embargo, se puede aplicar a cada matriz individual.
MIDL2192
el tipo switch solo puede ser entero, char, booleano o enumeración.
El tipo especificado no se resuelve en un tipo de modificador válido. Use un entero, carácter, byte, booleano, tipo de enumeración o un tipo derivado de uno de estos tipos.
MIDL2193
[handle] no se debe especificar en un tipo derivado de handle_t
Un tipo de identificador debe definirse mediante uno y solo uno de los tipos o atributos de identificador. Use el tipo primitivo handle_t o el atributo [handle], pero no ambos. El tipo de identificador definido por el usuario debe ser transmisible, pero el tipo de handle_t no se transmite en la red.
MIDL2194
el parámetro derivado de handle_t no debe ser un parámetro [out]
Un identificador del tipo primitivo handle_t es significativo solo en el lado de la aplicación en la que se define. El tipo handle_t no se transmite en la red.
MIDL2195
la expresión de atributo se deriva de la desreferencia de puntero [unique] o [ptr]
Aunque los atributos de puntero completo y [unique] permiten que los punteros tengan valores NULL, la expresión que define el atributo size o length nunca debe tener un valor NULL. Cuando se usan punteros, MIDL restringe las expresiones a punteros [ref].
MIDL2196
"cpp_quote" requiere /ms_ext
El atributo cpp_quote es una extensión de Microsoft para DCE IDL. No use el modificador del compilador MIDL /osf, que invalida /ms_ext.
MIDL2197
uuid entre comillas requiere /ms_ext
La capacidad de especificar un valor UUID entre comillas es una extensión de Microsoft para DCE IDL. No use el modificador del compilador MIDL /osf, que invalida /ms_ext.
MIDL2198
tipo devuelto no se puede derivar de una unión no encapsulada
La unión no encapsulada no se puede usar como un tipo de valor devuelto de función. Para devolver el tipo de unión, especifique el tipo de unión como un parámetro [out] o [in, out].
MIDL2199
tipo devuelto no se puede derivar de una estructura conforme
El tamaño del tipo de valor devuelto debe ser una constante. No se puede especificar como un tipo de valor devuelto una estructura que contiene una matriz conforme incluso cuando la estructura también incluye su especificador de tamaño. Para devolver la estructura conforme, especifique la estructura como un parámetro [out] o [in, out].
MIDL2200
[transmit_as] no se debe aplicar a un tipo derivado de un identificador genérico
En esta versión, los atributos [handle] y [transmit_as] no se pueden combinar en el mismo tipo.
MIDL2201
[handle] no se debe aplicar a un tipo que tenga [transmit_as] aplicado.
En esta versión, los atributos [handle] y [transmit_as] no se pueden combinar en el mismo tipo.
MIDL2202
el tipo especificado para la declaración const no es válido
Las declaraciones de constantes se limitan a tipos enteros, caracteres, caracteres anchos, cadenas y booleanos.
MIDL2203
No se admite el operando al operador sizeof.
El compilador MIDL solo admite la operación sizeof para tipos simples. El operando especificado no se evalúa como un tipo entero.
MIDL2204
este nombre ya se usó como nombre de identificador const.
El identificador se ha usado anteriormente para identificar una constante en una declaración const . Cambie el nombre de uno de los identificadores para que los identificadores sean únicos.
MIDL2205
redefinición incoherente del tipo error_status_t
El tipo error_status_t debe resolverse en el tipo unsigned long. No se pueden usar otras definiciones de tipo.
MIDL2206
[caso] valor fuera del intervalo del tipo de modificador
El valor asociado al caso de la instrucción switch está fuera del intervalo para el tipo de modificador especificado. Por ejemplo, este error se produce cuando se usa un valor entero largo en la instrucción case para un tipo entero corto.
MIDL2207
el parámetro derivado de wchar_t necesita /ms_ext
El tipo de caracteres anchos wchar_t es una extensión de Microsoft para DCE IDL. No use el modificador del compilador MIDL /osf, que invalida /ms_ext
MIDL2208
esta interfaz solo tiene devoluciones de llamada
Las devoluciones de llamada solo son válidas en el contexto de una llamada a procedimiento remoto. La interfaz debe incluir al menos un prototipo de función para una llamada a procedimiento remoto que no incluya el atributo [devolución de llamada].
MIDL2209
atributo especificado redundantemente; Ignorado
El atributo especificado se ha aplicado más de una vez. Se omiten varias instancias del mismo atributo.
MIDL2210
tipo de identificador de contexto usado para un identificador implícito
Se ha especificado un tipo definido mediante el atributo [context_handle] como el tipo de identificador en un atributo [ implicit_handle]. Los atributos no se pueden combinar de esta manera.
MIDL2211
opciones conflictivas especificadas para [asignar]
Las opciones especificadas para el atributo ACF [allocate] representan directivas en conflicto. Por ejemplo, especifique la opción all_nodes o la opción single_node, pero no ambas.
MIDL2212
error al escribir en el archivo
Error al escribir en el archivo. Esta condición puede deberse a errores relacionados con el espacio en disco, los identificadores de archivo, las restricciones de acceso a archivos y los errores de hardware.
MIDL2213
no se encontró ningún tipo de modificador en la definición de unión mediante el tipo [switch_is]
La definición de unión no incluye un atributo explícito [switch_type]. El tipo de la variable especificada por el atributo [switch_is] se usa como tipo de modificador.
MIDL2214
comprobación semántica incompleta debido a errores anteriores
El compilador MIDL realiza dos pasos sobre los archivos de entrada para resolver las declaraciones directas. Debido a errores detectados durante el primer paso, no se ha realizado la comprobación del segundo paso. Es posible que los errores no notificados relacionados con las declaraciones de reenvío sigan estando presentes en el archivo.
MIDL2215
no se admite el parámetro handle o el tipo de valor devuelto en un procedimiento [callback]
Un procedimiento [devolución de llamada] se produce en el contexto de una llamada de un cliente al servidor y usa el mismo identificador de enlace que la llamada original. Los parámetros de identificador de enlace explícitos o los tipos de valor devuelto no se permiten en las funciones de devolución de llamada.
MIDL2216
[ptr] no admite el alias en esta versión.
Un alias se produce cuando se puede acceder a los datos a través de más de un nombre de puntero o variable. Quite el alias. Para obtener más información, vea Punteros únicos.
MIDL2217
parámetro ya definido como identificador de contexto
El parámetro se definió previamente como un identificador de contexto.
MIDL2218
[context_handle] no debe derivar de handle_t
Las tres características de identificador: el tipo handle_t, el atributo [handle] y el atributo [context_handle], son mutuamente excluyentes. Solo se puede aplicar una característica a un tipo o parámetro a la vez.
MIDL2219
el tamaño de la matriz supera los 65536 bytes.
En algunas plataformas de Microsoft, el tamaño máximo de los datos transmisibles es de 64 000. Rediseñe la aplicación para que todos los datos transmitidos se ajusten al tamaño máximo transmisible.
MIDL2220
el tamaño de estructura supera los 65536 bytes.
En algunas plataformas de Microsoft, el tamaño máximo de los datos transmisibles es de 64 000. Rediseñe la aplicación para que todos los datos transmitidos se ajusten al tamaño máximo transmisible.
MIDL2221
el campo de una unión no encapsulada no puede ser otra unión sin encapsular
Las uniones que se transmiten como parte de una llamada a procedimiento remoto requieren un elemento de datos asociado, el discriminante, que selecciona el brazo de unión. Las uniones anidadas en otras uniones no ofrecen un discriminante; como resultado, no se pueden transmitir en este formato. Cree una estructura que consta de la unión y su discriminante.
MIDL2222
atributos de puntero aplicados en una matriz incrustada; Ignorado
Un atributo de puntero solo se puede aplicar a una matriz cuando la matriz es un parámetro de nivel superior. Se omiten otros atributos de puntero aplicados a las matrices incrustadas en otras estructuras de datos.
MIDL2223
[allocate] no es válido en el tipo transmitido o presentado para [transmit_as], [represent_as], [wire_marshal] o [user_marshal]
Los atributos [transmit_as] y [allocate] no se pueden aplicar al mismo tipo. El atributo [transmit_as] distingue entre los tipos presentados y transmitidos, mientras que el atributo [allocate] supone que el tipo presentado es el mismo que el tipo transmitido.
MIDL2224
[switch_type] debe especificarse en este modo de importación.
MIDL2225
[implicit_handle] escriba undefined; suponiendo que el identificador genérico
El tipo de identificador especificado en ACF no está definido en el archivo IDL. El compilador MIDL supone que el tipo de controlador se resuelve en el tipo de identificador primitivo handle_t. Agregue el atributo [handle] a la definición de tipo si desea que el identificador se comporte como un identificador genérico o definido por el usuario.
MIDL2226
El elemento array no debe derivar de error_status_t
En esta versión de Rpc de Microsoft, el tipo error_status_t solo puede aparecer como parámetro o tipo de valor devuelto. No puede aparecer en matrices.
MIDL2227
[allocate] no válido en un tipo derivado de un identificador primitivo,genérico o de contexto
Por diseño, el atributo ACF [allocate] no se puede aplicar para controlar los tipos.
MIDL2228
el tipo transmitido o presentado no debe derivar de error_status_t
En esta versión de Rpc de Microsoft, el tipo error_status_t no se puede usar con el atributo [transmit_as].
MIDL2229
Discriminant de una unión no debe derivar de un campo con [ignore] aplicado a él
Una unión utilizada en una llamada a procedimiento remoto debe estar asociada a otro elemento de datos, denominado discriminante, que selecciona el brazo de unión. El discriminante debe transmitirse. El atributo [ignore] no se puede aplicar al discriminante de unión.
MIDL2230
[nocode] se omite en el lado servidor, ya que no se ha especificado "/server none"
Algunos compiladores IDL de DCE generan un error cuando el atributo [nocode] se aplica a un procedimiento en una interfaz para la que se generan archivos auxiliares de servidor. Dado que el servidor debe admitir todas las operaciones, [nocode] no se debe aplicar a un procedimiento en este modo, o debe usar el modificador del compilador MIDL /server none para especificar explícitamente que no se van a generar rutinas de servidor.
MIDL2231
no hay procedimientos remotos especificados en la interfaz no[local] ; no se generarán códigos auxiliares de cliente o servidor
La interfaz proporcionada no tiene ningún procedimiento remoto, por lo que solo se generarán archivos de encabezado.
MIDL2232
demasiados casos predeterminados especificados para la unión encapsulada
Una unión encapsulada solo puede tener un valor predeterminado: arm.
MIDL2233
demasiadas interfaces predeterminadas especificadas para coclase
Una coclase puede tener como máximo dos miembros [predeterminados], uno para representar la interfaz saliente (origen) o dispinterface, y otro para representar la interfaz entrante (receptor) o dispinterface.
MIDL2234
los elementos con [defaultvtable] también deben tener [source]
La interfaz defaultvtable crea una segunda interfaz de origen para un objeto, una que permite a los receptores recibir eventos a través de la tabla V.
MIDL2235
La especificación de unión sin campos no es válida
Las uniones deben tener al menos un campo.
MIDL2236
valor fuera del intervalo
El valor de caso proporcionado está fuera del intervalo del tipo de modificador.
MIDL2237
[context_handle] debe aplicarse en un tipo de puntero
Los identificadores de contexto siempre deben ser tipos de puntero. DCE especifica que todos los identificadores de contexto deben escribirse como void *.
MIDL2238
El tipo de valor devuelto no debe derivar de handle_t
no se puede devolver handle_t.
MIDL2239
[handle] no se debe aplicar a un tipo derivado de un identificador de contexto
Un tipo no puede ser un identificador de contexto ni un identificador genérico.
MIDL2240
el campo derivado de un "int" debe tener el especificador de tamaño "small", "short" o "long" con "int"
El tipo int no es transmisible en sistemas de 16 bits, ya que el tamaño de int puede ser diferente entre las máquinas.
MIDL2241
field no debe derivar de un void o void *
void y void * no se pueden usar como tipos de parámetros para procedimientos remotos.
MIDL2242
field no debe derivar de una estructura que contenga campos de bits
Las estructuras que contienen campos de bits no se pueden usar como parámetros ni tipos de valor devuelto para procedimientos remotos.
MIDL2243
el campo no debe derivar de una unión no rpcble
Se debe especificar una unión como una unión no encapsulada o una unión encapsulada para poder transmitirse. Los sindicatos C ordinarios carecen del discriminante necesario para transmitir la unión a través de la red.
MIDL2244
field no debe derivar de un puntero a una función.
Los punteros a funciones no se pueden transmitir a procedimientos remotos. Los punteros a las funciones apuntan al código de función y no se puede transmitir ningún código de función a través de la red mediante RPC.
MIDL2245
no puede usar [fault_status] en un parámetro y un tipo de valor devuelto
El atributo [fault_status] solo se puede usar una vez por procedimiento. El atributo [comm_status] se puede usar de forma independiente.
MIDL2246
tipo de valor devuelto demasiado complicado para los modos /Oi, mediante /Os
Los tipos de valor devueltos grandes que se pasan por valor solo se pueden controlar mediante códigos auxiliares de optimización de /Os . Los códigos auxiliares de esta rutina se generarán mediante la optimización de /Os .
MIDL2247
tipo de identificador genérico demasiado grande para los modos /Oi, mediante /Os
Los códigos auxiliares de optimización de /Os solo pueden controlar los tipos de identificador genéricos grandes que se pasan por valor. Los códigos auxiliares de esta rutina se generarán mediante la optimización de /Os .
MIDL2248
[allocate(all_nodes)] en un parámetro [in,out] puede huérfana la memoria original
El uso de [allocate(all_nodes)] en un parámetro [in, out] debe reasignar la memoria contigua para la dirección [out], lo que huérfana el parámetro [in]. Este uso no se recomienda.
MIDL2249
no puede tener un puntero [ref] como un brazo de unión
Los punteros de referencia siempre deben apuntar a memoria válida, pero una unión [in, out] con un puntero de referencia puede devolver un puntero de referencia cuando la dirección [in] usó otro tipo.
MIDL2250
devolución de identificadores de contexto no admitidos para los modos /Oi, mediante /Os
MIDL no admite controladores de contexto en los modos de optimización totalmente interpretados. Cambio a la optimización en modo mixto.
MIDL2251
uso del parámetro adicional [comm_status] o [fault_status] no se admite para los modos /Oi, mediante /Os
Los atributos [comm_status] y [fault_status] solo se pueden controlar mediante códigos auxiliares de optimización de /Os . Los códigos auxiliares de esta rutina se generarán mediante la optimización de /Os .
MIDL2252
uso de un tipo desconocido para [represent_as] o [user_marshal] no se admite para los modos /Oi, mediante /Os
El uso del atributo [represent_as] con un tipo local que no está definido en el archivo IDL o un archivo IDL importado solo se puede controlar mediante códigos auxiliares de optimización de /Os . Los códigos auxiliares de esta rutina se generarán mediante la optimización de /Os .
MIDL2253
tipos de matriz con [transmit_as] o [represent_as] no se admiten en el tipo de valor devuelto para los modos /Oi , mediante /Os
La devolución de una matriz con [transmit_as] o [represent_as] aplicada solo se puede controlar mediante códigos auxiliares de optimización de /Os . Los códigos auxiliares de esta rutina se generarán mediante la optimización de /Os .
MIDL2254
tipos de matriz con [transmit_as] o [represent_as] no admitidos para los modos /Oi, mediante /Os
Esta acción no se admite para la optimización totalmente interpretada. Cambio a la optimización en modo mixto.
MIDL2255
[devolución de llamada] requiere /ms_ext
El atributo [devolución de llamada] es una extensión de Microsoft y requiere que se habilite el modificador /ms_ext . No compile con /osf, que invalida /ms_ext.
MIDL2256
dependencia de interfaz circular
Esta interfaz se usa (directa o indirectamente) como interfaz base.
MIDL2257
solo IUnknown se puede usar como interfaz raíz.
Actualmente, todas las interfaces deben tener IUnknown como interfaz raíz.
MIDL2258
[IID_IS] solo se puede aplicar a punteros a interfaces
El atributo [iid_is] solo se puede aplicar a punteros de interfaz, aunque se pueden especificar como punteros a IUnknown *.
MIDL2259
Las interfaces solo se pueden usar en construcciones de puntero a interfaz
Los nombres de interfaz no se pueden usar excepto como interfaces base o punteros de interfaz.
MIDL2260
los punteros de interfaz deben tener un UUID/IID
El tipo base de la expresión [iid_is] debe ser un tipo UUID/GUID/IID.
MIDL2261
las definiciones y declaraciones fuera del cuerpo de la interfaz requieren /ms_ext
Colocar declaraciones y definiciones fuera de cualquier cuerpo de interfaz es una extensión de Microsoft y requiere el uso del modificador /ms_ext .
MIDL2262
varias interfaces de un archivo requieren /ms_ext
El uso de varias interfaces en un único archivo idl es una extensión de Microsoft y no está disponible cuando se compila en modo /osf .
MIDL2263
solo se permite una de [implicit_handle], [auto_handle] o [explicit_handle]
Cada interfaz solo puede tener uno de estos tres atributos.
MIDL2264
[implicit_handle] hace referencia a un tipo que no es un identificador
Los identificadores implícitos deben ser de uno de los tipos de identificador.
MIDL2265
[object] los procedimientos solo se pueden usar con "/env win32"
Las interfaces con el atributo [object] no se pueden usar con entornos de 16 bits.
MIDL2266
[callback] with -env dos/win16 not supported for /Oi, using /Os
Las devoluciones de llamada en entornos de 16 bits solo se pueden controlar mediante códigos auxiliares de optimización de /Os . Los códigos auxiliares de esta rutina se generarán mediante la optimización de /Os .
MIDL2267
float/double no se admite como parámetro de nivel superior para el modo /Oi, mediante /Os
Los tipos float y double solo se pueden controlar como parámetros mediante los códigos auxiliares de optimización de /Os . Los códigos auxiliares de esta rutina se generarán mediante la optimización de /Os . Los tipos float y double dentro de estructuras, matrices o uniones todavía se pueden controlar con /Os.
MIDL2268
Es posible que los punteros a identificadores de contexto no se usen como valores devueltos.
Los identificadores de contexto se deben usar como valores devueltos directos, no como valores devueltos indirectos.
MIDL2269
los procedimientos de una interfaz de objeto deben devolver un HRESULT.
Todos los procedimientos de una interfaz de objeto que no tienen el atributo-[local] deben devolver un SCODE HRESULT/.
MIDL2270
UUID duplicado
Igual que los UUID deben ser únicos.
MIDL2271
Las interfaces [object] deben derivarse de otra interfaz [object], como IUnknown.
La herencia de interfaz solo se permite cuando se usan interfaces de objeto.
MIDL2272
(async) interfaz debe derivar de otra interfaz (asincrónica)
Las interfaces de objeto, tanto sincrónicas como asincrónicas, deben derivarse de IUnknown u otra interfaz OLE base.
MIDL2273
[IID_IS] expresión debe ser un puntero a la estructura IID.
El tipo base de la expresión [iid_is] debe ser un tipo UUID/GUID/IID.
MIDL2274
[call_as] el tipo debe ser un procedimiento [local]
El destino de un tipo [call_as], si se define, debe tener aplicado [ local].
MIDL2275
no se debe usar [call_as] sin definir en una interfaz de objeto
Debe definir el destino de un tipo [call_as]. Asegúrese de que ha proporcionado call_as rutinas para las aplicaciones que llama y las llamadas.
MIDL2276
[auto_handle] no se puede usar con [codificar] o [descodificar]
Los atributos [ encode] y [ decode] solo se pueden usar con identificadores explícitos o identificadores implícitos.
MIDL2277
No se permiten procedimientos normales en una interfaz con [codificación] o [descodificación]
Las interfaces que contienen procedimientos [codificar] o [descodificar] tampoco pueden tener procedimientos remotos.
MIDL2278
conformidad o varianza de nivel superior no permitida con [codificación] o [descodificación]
Los tipos que tienen conformidad o varianza de nivel superior no pueden usar la serialización de tipos, ya que no hay ninguna manera de proporcionar ajuste de tamaño o longitud. Sin embargo, las estructuras que las contienen pueden usar la serialización de tipos.
MIDL2279
Es posible que los parámetros [out] no tengan "const"
Dado que se modifica un parámetro [out], no se debe declarar como constante sa.
MIDL2280
Es posible que los valores devueltos no tengan "const"
Dado que se establece un valor de función cuando la función devuelve, este valor no se debe declarar como una constante.
MIDL2281
Uso no válido del atributo "retval"
Compruebe que no ha usado el atributo [opcional] y que el parámetro [retval] es el último parámetro de la lista.
MIDL2282
varias convenciones de llamada no válidas
Solo se puede aplicar una convención de llamada a un único procedimiento.
MIDL2283
atributo no válido en el procedimiento [object]
El atributo anterior solo se aplica a los procedimientos de las interfaces que no tienen el atributo [object].
MIDL2284
[out] los punteros de interfaz deben usar la doble direccionamiento indirecto
Dado que el valor modificado es el puntero a la interfaz, debe haber otro nivel de direccionamiento indirecto por encima del puntero para permitir que se devuelva.
MIDL2285
procedimiento usado dos veces como el autor de la llamada en [call_as]
Un procedimiento [local] determinado solo se puede usar una vez como destino de un [call_as], con el fin de evitar conflictos de nombres.
MIDL2286
[call_as] el destino debe tener [local] en una interfaz de objeto
El destino de un [call_as] debe ser un procedimiento [local] definido en la interfaz actual.
MIDL2287
[code] y [nocode] no se pueden usar juntos
Estos dos atributos son contradictorios y no se pueden usar juntos.
MIDL2288
Es posible que los procedimientos con atributos [tal vez] o [message] no tengan [out] parámetros o valores devueltos deben ser de tipo HRESULT o error_status_t
Dado que los procedimientos [tal vez] nunca se devuelven, no hay ninguna manera de obtener valores devueltos.
MIDL2289
se debe usar el puntero a la función
Aunque las definiciones de tipo de función se permiten en el modo /c_ext , solo se pueden usar como punteros a las funciones. Nunca se pueden transmitir como un parámetro o un valor devuelto de un procedimiento remoto.
MIDL2290
Es posible que las funciones no se pasen en una operación RPC
Las funciones y los punteros de función no se pueden pasar como parámetros ni valores devueltos de procedimientos remotos.
MIDL2291
hyper/double no se admite como valor devuelto para los modos /Oi, mediante /Os
Los códigos auxiliares de optimización /Os solo pueden controlar los valores devueltos de Hyper y double. Los códigos auxiliares de esta rutina se generarán mediante la optimización de /Os .
MIDL2292
#pragma pack(pop) sin coincidencia #pragma pack(push)
#pragma pack(push) y #pragma pack(pop) deben aparecer en pares coincidentes. Se especificaron al menos uno demasiados #pragma pack(push)s.
MIDL2293
Los campos de estructura que aceptan cadenas deben ser byte/char/wchar_t
El tipo [string] solo se puede aplicar a una estructura cuyos campos son de tipo byte o una definición de tipo equivalente a byte.
MIDL2294
[notify] no se admite para los modos /Oi, mediante /Os
El atributo [notify] solo se puede procesar mediante códigos auxiliares de optimización de /Os .
MIDL2295
no se admite el parámetro handle o el tipo de valor devuelto en un procedimiento de una interfaz [object]
Los identificadores no se pueden usar con interfaces [ object].
MIDL2296
ANSI C solo permite que no se especifique la matriz situada más a la izquierda.
En una matriz conforme, ANSI C solo permite que no se especifique la matriz situada más a la izquierda (la más significativa). Si varias dimensiones son conformes, MIDL intentará colocar un "1" en las otras dimensiones compatibles. Si las demás dimensiones se definen en una definición de tipo diferente, esto no puede ser posible. Intente colocar todas las dimensiones de matriz en la declaración de matriz para evitarlo. En cualquier caso, tenga cuidado con los cálculos de indexación de matriz realizados por el compilador; Es posible que tenga que realizar sus propios cálculos con los tamaños reales.
MIDL2297
Parámetros de unión por valor no admitidos para los modos /Oi, mediante /Os
Esta acción no se admite para la optimización totalmente interpretada. Cambio a optimización en modo mixto.
MIDL2298
El atributo [version] se omite en una interfaz [object]
El atributo [object] identifica una interfaz COM. Una lista de atributos de interfaz para una interfaz COM no puede incluir el atributo [ version].
MIDL2299
El atributo [size_is] o [max_is] no es válido en una matriz fija
Las matrices de tamaño fijo no pueden usar los atributos size_is ni max_is .
MIDL2300
[codificar] o [descodificar] no son válidos en una interfaz [object]
El atributo [object] identifica una interfaz COM. Los atributos [encode] y [ decode] habilitan la serialización. Es decir, puede proporcionar y controlar los búferes para las referencias de datos y desmarshal, pero no puede realizar la serialización en interfaces COM.
MIDL2301
[codificar] o [descodificar] en un tipo requiere /ms_ext
La serialización no forma parte de la especificación DCE-IDL. Es una extensión de Microsoft que requiere el uso del modificador de línea de comandos /ms_ext .
MIDL2302
no se admite en /env win16 o /env dos
Las plataformas de Microsoft de 16 bits no admiten el uso del tipo int en un archivo IDL. Califica el tipo int con small, short o long.
MIDL2303
[bstring] solo se puede aplicar a un puntero a "char" o "whchar_t"
Este error está obsoleto. Solo se proporciona por motivos de compatibilidad con versiones anteriores.
MIDL2304
atributo no válido en un procedimiento de una interfaz [object]
No se permite el atributo especificado en el procedimiento en una interfaz COM.
MIDL2305
atributo no válido en una interfaz [object]
No se permite el atributo especificado en una interfaz COM.
MIDL2306
demasiados parámetros o pilas demasiado grandes para los modos /Oi, mediante /Os
Esta advertencia está obsoleta. Solo se proporciona por motivos de compatibilidad con versiones anteriores. Indica que la llamada al procedimiento remoto hace que la pila crezca más de 64 K.
MIDL2307
no hay atributos en la definición de tipo de archivo ACF, por lo que no hay ningún efecto
El archivo IDL debe contener todas las instrucciones typedef que no tienen atributos. No deben producirse en archivos ACF. Si lo hacen, el compilador MIDL los interpreta como redundantes y los omite.
MIDL2308
las convenciones de llamada que no sean __stdcall o __cdecl no se admiten para los modos /Oi, mediante /Os
Las convenciones de llamada, como __pascal o __fastcall cambiar el formato de la pila. Los modos /Oi solo admiten las convenciones de llamada de __stdcall y __cdecl . Si debe usar otras convenciones de llamada, use el modo /Os .
MIDL2309
Demasiados métodos de delegación en la interfaz, requieren Windows 2000 o superior
Una interfaz puede heredar de otra. Cuando lo hace, los métodos de la interfaz base se consideran delegados. Ninguna interfaz derivada puede contener más de 256 métodos delegados.
MIDL2310
no se admiten controladores automáticos con /env mac o /env powermac
Al compilar el archivo IDL para una instancia de PowerMac, no puede usar identificadores de enlace automáticos. Debe especificar identificadores explícitos o implícitos.
MIDL2311
las instrucciones fuera del bloque de biblioteca no son válidas en el modo de compatibilidad mktyplib
Es posible que tenga que especificar el modificador de línea de comandos /mktyplib203 al compilar el archivo IDL.

Nota:
La herramienta Mktyplib.exe está obsoleta. En su lugar, use el compilador MIDL.


MIDL2312
sintaxis no válida a menos que use el modo de compatibilidad mktyplib
Es posible que tenga que especificar el modificador de línea de comandos /mktyplib203 al compilar el archivo IDL.

Nota:
La herramienta Mktyplib.exe está obsoleta. En su lugar, use el compilador MIDL.


MIDL2313
definición no válida, debe usar typedef en el modo de compatibilidad mktyplib
Es posible que tenga que especificar el modificador de línea de comandos /mktyplib203 al compilar el archivo IDL.

Nota:
La herramienta Mktyplib.exe está obsoleta. En su lugar, use el compilador MIDL.


MIDL2314
atributo de puntero explícito [ptr] [ref] omitido para punteros de interfaz
Los punteros a interfaces no pueden tener atributos IDL.
MIDL2315
Modos /Oi no implementados para PowerMac, cambiando a /Os
MIDL2316
Tipo de expresión no válido usado en el atributo
El valor predeterminado del puntero debe ser una constante.
MIDL2317
tipo no válido usado en la canalización
Las canalizaciones están limitadas a los tipos de datos IDL básicos. Por ejemplo, no se puede especificar una canalización de matrices.
MIDL2318
el procedimiento usa canalizaciones, mediante /Oicf
El modo seleccionado no admite canalizaciones. El compilador MIDL detectó el uso de una o varias canalizaciones en la interfaz. Por lo tanto, está compilando el archivo IDL en modo /Oicf .
MIDL2319
procedure tiene un atributo que requiere el uso de /Oif, los modos de conmutación
Debe compilar procedimientos [async] en modo /Oif .
MIDL2320
requisitos de optimización en conflicto, no se puede optimizar
Este error suele indicar que especificó los modos del compilador MIDL /Os y /Oi (o una variante de /Oi). También puede significar que las características especificadas en los archivos IDL y ACL requieren el uso de ambos modos. Debe seleccionar un modo u otro para optimizarlo.
MIDL2321
las canalizaciones no pueden ser elementos de matriz ni miembros de estructuras o uniones
Los tipos de datos de canalización solo pueden ser parámetros de nivel superior.
MIDL2322
uso de canalización no válido
No se pueden usar canalizaciones con los atributos [transmit_as], [represent_as] o [user_marshal]. Además, las canalizaciones no se pueden usar como tipos de valor devuelto.
MIDL2323
la característica requiere la opción avanzada de optimización interpretada; use -Oicf
Este error indica que los modificadores de línea de comandos del compilador MIDL, como /robust , requieren el uso del modo /Oicf .
MIDL2324
la característica requiere la opción avanzada de optimización interpretada; use -Oicf
Esta advertencia indica que los modificadores de línea de comandos del compilador MIDL, como /robust , requieren el uso del modo /Oicf .
MIDL2329
la opción de optimización se está eliminando por fases, use -Oic.
El modo de optimización /Oi1 se especificó en la línea de comandos MIDL. Este modo ya no se admite y se debe usar /Oicf en su lugar.
MIDL2330
la opción de optimización se está eliminando por fases, use -Oicf.
El modo de optimización /Oi2 se especificó en la línea de comandos MIDL. Este modo ya no se admite y se debe usar /Oicf en su lugar.
MIDL2331
la opción de optimización se está eliminando por fases, use -ic
El modo de optimización i1 se especificó en un atributo ACF [optimize]. Este modo ya no se admite y se debe usar icf en su lugar.
Archivo ACF de ejemplo:
[optimize("i1")] roo();    //MIDL 2331
MIDL2332
la opción de optimización se está eliminando por fases, use -icf.
El modo de optimización i2 se especificó en un atributo ACF [optimize]. Este modo ya no se admite y se debe usar icf en su lugar.
Archivo ACF de ejemplo:
[optimize("i2")] roo();    //MIDL 2332
MIDL2333
los modificadores -old y -new están obsoletos, use -oldtlb y -newtlb.
Este mensaje está obsoleto y MIDL ya no lo omite.
MIDL2334
valor de argumento no válido
Las variantes permitidas del modificador de línea de comandos /O incluyen /Os, /Oi, /Oic, /Oicf y /Oif.
MIDL2335
Tipo de expresión no válido en constante
La expresión no se evalúa como una constante.
MIDL2336
Tipo de expresión no válido en enumeración
Un valor enumerado en una definición de enumeración no se evalúa como un tipo entero.
MIDL2337
declaración de reenvío no satisfecho
El compilador MIDL no pudo resolver la definición de una declaración reenviada.
MIDL2338
los modificadores son contrarias
No puede usar los modificadores de línea de comandos /osf y /ms_ext al compilar un archivo IDL. Debe elegir uno u otro.
MIDL2339
MIDL no puede generar información de HOOKOLE para la unión no capaz de rpc
Este error está obsoleto. Se proporciona estrictamente para la compatibilidad con versiones anteriores.
MIDL2340
no se encontró ninguna expresión de caso para union
Cada campo de una unión debe tener una instrucción case con una expresión constante.
MIDL2341
[user_marshal] y [wire_marshal] no se admiten con las marcas -Oi y -Oic, use -Os o -Oicf.
Los atributos [user_marshal] y [wire_marshal] requieren las características de optimización específicas disponibles solo en /Oicf (proxy sin código con cadenas de formato rápido) o /Os (serialización de modo mixto).
MIDL2342
Las canalizaciones no se pueden usar con la serialización de datos, es decir, [codificar] o [descodificar]
No se pueden pasar canalizaciones como parámetros a procedimientos que tengan los atributos [encode] o [decode].
MIDL2343
todos los punteros de interfaz de canalización deben usar un único direccionamiento indirecto
No se puede usar un puntero a un puntero a una interfaz de canalización de esta manera.
MIDL2344
[iid_is()] no se puede usar con un puntero de interfaz de canalización
Este mensaje está obsoleto. El compilador ya no usa este mensaje.
MIDL2345
modificador -lcid no válido o no aplicable
El identificador local (LCID) que especificó no es válido.
MIDL2346
el lcid especificado es diferente de la especificación anterior
Los valores especificados en /lcid y [lcid] son diferentes. El compilador MIDL usará el último definido.
MIDL2347
importlib no se permite fuera de un bloque de biblioteca
Todas las instrucciones [importlib] deben producirse en un bloque [library].
MIDL2348
valor de punto flotante no válido
Midl no debe emitir este error. Si ve este error, notifique un error a Microsoft que proporciona todos los archivos necesarios para reproducir el error, incluidos los archivos IDL, los archivos ACF, los encabezados, etc.
MIDL2349
miembro no válido
Los procedimientos no pueden ser miembros de una biblioteca.
MIDL2350
posible miembro no válido
Para ser un miembro válido de una biblioteca, el elemento library debe ser un módulo, un dispinterface, una coclase, una instrucción if, una estructura, una unión, una enumeración o una declaración de reenvío.
MIDL2351
error de coincidencia en los tipos de canalización e interfaz
Este mensaje está obsoleto.
MIDL2352
string, variable matriz, matriz compatible y parámetros de puntero completo pueden ser incompatibles con los parámetros de canalización durante el tiempo de ejecución.
Un método que combina una o varias cadenas [in], matrices variables, matrices conformes y parámetros de puntero completos y cualquier parámetro de canalización [in] da como resultado la generación de un código auxiliar que solo se ejecuta en secuencias de protocolo ncacn_* y ncalrpc en equipos Windows. El uso del código auxiliar para realizar llamadas en secuencias de protocolo ncadg_* o aceptar llamadas de otros proveedores rpc de DCE de OSF puede generar errores en el servidor durante el tiempo de ejecución. Este error se produce a partir de Windows Server 2003.
MIDL2353
el parámetro debe estar en
Los identificadores asincrónicos deben ser parámetros [in].
MIDL2354
el tipo de parámetro de un objeto [async] debe ser un puntero doble a una interfaz.
El parámetro debe ser de tipo IAsyncManager **.
MIDL2355
tipo de identificador asincrónico incorrecto
El tipo de identificador debe ser IAsyncManager o un tipo derivado de IAsyncManager.
MIDL2356
El modificador "interno" habilita características no admitidas, use con precaución.
Evite usar este modificador.
MIDL2357
Los procedimientos asincrónicos no pueden usar el identificador automático
Los procedimientos con el atributo [async] requieren identificadores explícitos.
MIDL2358
error_status_t debe tener [comm_status] y [fault_status]
Se especificó un procedimiento con los atributos IDL [tal vez] o [message], pero el tipo de valor devuelto solo tiene los atributos de ACF [comm_status] o [fault_status]. Se requieren ambos atributos de ACF.
Archivo ACF de ejemplo:
[comm_status] roo();    //MIDL 2358
[fault_status] bar();    //MIDL 2358
[comm_status, fault_status] baz();    //OK
MIDL2359
esta construcción solo se permite dentro de un bloque de biblioteca.
Un módulo solo puede producirse dentro de un bloque de biblioteca.
MIDL2360
redefinición de tipos no válidos
Un nuevo tipo se definió recursivamente en un tipo no existente.
Ejemplo:
typedef roo roo[10];    //MIDL 2360
MIDL2361
los procedimientos con un atributo [vararg] deben tener un parámetro SAFEARRAY(VARIANT); param order is [vararg], [lcid], [retval]
La mayoría de los parámetros de los procedimientos con el atributo [vararg] deben producirse antes del parámetro SAFEARRAY(VARIANT). El parámetro SAFEARRAY(VARIANT) debe estar presente. Si la lista de parámetros contiene un parámetro con el atributo [ lcid], debe seguir el parámetro SAFEARRAY(VARIANT). Si la lista de parámetros contiene un parámetro con el atributo [retval], debe producirse después del parámetro con el atributo [lcid].
MIDL2363
demasiados métodos en la interfaz, requiere Windows 2000 o posterior
El compilador MIDL no permite más de 1024 métodos en una interfaz cuando se compila en modo /Oicf .
MIDL2364
switch se está desconectando por fases
Los modificadores siguientes están obsoletos: /hookole, /env win16 y /env.
MIDL2365
no se puede derivar de IAdviseSink, IAdviseSink2 o IAdviseSinkEx
Estas interfaces no se pueden extender.
MIDL2366
no puede asignar un valor predeterminado
Se permite asignar un valor predeterminado a un parámetro en Visual Basic, pero no en C++. Si usa C++, se omite el valor predeterminado.
MIDL2367
No se admite la generación de bibliotecas de tipos para DOS/Win16/MAC
MIDL no admite bibliotecas de tipos de 16 bits.
MIDL2368
error al generar la biblioteca de tipos, omitida
Se produjo un error nofatal al generar la biblioteca de tipos.
MIDL2369
tamaño de pila superado para /Oi, mediante /Os
El modo de optimización -Oi está limitado a 128 bytes de espacio de pila para los parámetros. El compilador ha cambiado automáticamente al modo de optimización del sistema operativo para solucionar esta limitación.
Para evitar esta advertencia, use los modos de optimización -Oicf o -Os. El modo de optimización se puede cambiar en la línea de comandos especificando -Oicf o -Os en lugar de -Oi o agregando un atributo [optimize9"icf")] o optimize[("s")] a la función en el archivo ACF.
Normalmente, esta advertencia se produce al pasar estructuras grandes como parámetros por valor. El tamaño de pila necesario se puede reducir pasando un puntero a la estructura en su lugar.
Ejemplo:
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
el uso de /robust requiere /Oicf, modos de conmutación
Debe compilar en modo /Oicf al especificar el modificador /robust en la línea de comandos.
MIDL2371
intervalo incorrecto especificado
El valor más alto especificado en un atributo [range] es menor que el valor más bajo.
Ejemplo:
void roo([range(3,2)] int a);    //MIDL 2371
MIDL2372
combinación no válida de los parámetros [in] y [out] para la interfaz [async_uuid]
Solo se permiten combinaciones simples de atributos con parámetros [in] o [out] para este tipo de interfaz.
MIDL2373
Las plataformas DOS, Win16 y MAC no se admiten con /robust
MIDL admite el modificador /robust en Microsoft Windows 2000 o posterior.
MIDL2374
La compatibilidad con los servidores proxy sin código auxiliar nt 3.51 para las interfaces de objeto se eliminará por fases; use /Oif.
Este modo está obsoleto. Use /Oif o /Oicf.
MIDL2375
[codificar] o [descodificar] con /robust requiere /Oicf
No se puede realizar la serialización cuando se especifica el modificador /robust .
MIDL2377
atributos conflictivos especificados
Se especificaron [context_handle_serialize] y [context_handle_noserialize].
MIDL2378
[serialize], [noserialize] se puede aplicar a context_handles
Los atributos de ACF [context_handle_serialize] o [context_handle_noserialize] solo se pueden aplicar a los tipos que son identificadores de contexto.
Archivo IDL de ejemplo:
typedef /*[context_handle] */ void *PV;    //Note: PV is *not* a context handle.
Archivo ACF de ejemplo:
typedef [context_handle_serialize] PV;    //MIDL 2378
MIDL2379
El compilador alcanzó un límite para una representación de cadena de formato. Consulte la documentación para obtener consejos.
El compilador MIDL tiene un límite de 64 KB para cadenas de formato. Este error suele producirse cuando los archivos IDL incluyen otros archivos IDL. El archivo IDL compuesto generado por todas las instrucciones include supera los límites de las tablas de representación de tipo del intérprete del motor de serialización. Pruebe a usar la directiva import en lugar de la directiva include en los archivos IDL. Para obtener más información, consulte Importación de archivos de encabezado del sistema, inclusión e importación.
MIDL2380
El formato de conexión puede ser incorrecto; es posible que tenga que usar -ms_conf_struct, consulte la documentación para obtener consejos.
El compilador MIDL no pudo generar un formato transmisible para los datos. Una manera común de obtener este error es definir un ms_conf_struct dentro de una estructura compleja.
MIDL2381
un tamaño de pila o un desplazamiento mayor que el límite de 64 K. Consulte la documentación para obtener consejos.
La llamada da como resultado una pila de más de 64 KB. Intente pasar los datos en bloques más pequeños.
MIDL2382
un modo de intérprete forzado para la plataforma de 64 bits
Las plataformas de 64 bits requieren el modo de compilación /Oicf.
MIDL2383
El tamaño del elemento de matriz es mayor que el límite de 64 KB.
Todos los elementos de matriz deben tener un tamaño inferior a 64 KB.
MIDL2384
solo puede haber un parámetro [Icid] en un método y debe ser último o segundo para último si el último parámetro tiene [retval]
Un parámetro con el atributo [lcid] debe producirse en último lugar. La única excepción es cuando también hay un parámetro con el atributo [retval]. Cuando se producen ambos, el segundo al último parámetro de la lista de parámetros debe tener el atributo [ lcid]. El último parámetro debe tener el atributo [retval].
MIDL2385
sintaxis incorrecta para midl_pragma
El compilador MIDL detectó un error de sintaxis desconocido en una instrucción midl_pragma.
MIDL2386
__int3264 no se admite en el modo /osf
Si necesita usar __int3264, compile en modo /ms-ext.
MIDL2387
símbolo sin resolver en la biblioteca de tipos
El compilador no pudo resolver una declaración formal ni un tipo al que se hace referencia en la biblioteca de tipos.
MIDL2388
Las canalizaciones asincrónicas no se pueden pasar por valor
Las canalizaciones asincrónicas se deben pasar por referencia o por dirección.
MIDL2389
el desplazamiento de parámetros supera el límite de 64 KB para los procedimientos interpretados
Este error suele significar que un procedimiento tiene demasiados parámetros.
MIDL2390
elemento de matriz no válido
Las canalizaciones no se pueden usar como elementos de matriz.
MIDL2391
Los miembros dispinterface deben ser métodos, propiedades o interfaces
Una interfaz dispinterface no puede contener definiciones de tipo, estructuras, enumeraciones o uniones.
MIDL2392
Procedimiento [local] sin [call_as]
Los procedimientos de objeto que tienen el atributo [local] también requieren el atributo [call_as].
MIDL2393
vector multidimensional, cambiando a /Oicf
El modo de optimización /Os no admite matrices de tamaño no confijo multidimensional. El compilador ha cambiado automáticamente el modo de optimización a /Oicf para esta función.
Esta advertencia se puede suprimir globalmente cambiando el modo del compilador especificando /Oicf en la línea de comandos MIDL o usando midl_pragma advertencia (deshabilitar: 2393) en el archivo IDL. El modo de optimización se puede cambiar para una función individual agregando el atributo [optimize("icf")] a la función en el archivo ACF.
En el ejemplo siguiente se muestra esta advertencia:
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
no se admite el tipo o la construcción en un bloque de biblioteca porque falta Oleaut32.dll compatibilidad con tipos polimórficos de 64 KB
La automatización OLE no admite tipos polimórficos (como _int3264, INT_PTR, etc.). Estos tipos tienen representaciones de datos incompatibles entre plataformas de 32 y 64 bits. Se producirá un error en la llamada remota en tiempo de ejecución en plataformas de 64 bits.

Nota:
Tenga en cuenta que a partir de la versión de Windows 2000, los archivos TLB de 64 bits son compatibles con ole Automation mediante la conversión de información de TLB de 32 bits en tiempo de ejecución. Por lo tanto, midl solo admite la generación de TLB de 32 bits.


Si MIDL se usa solo para generar un archivo de encabezado, el modificador /notlb suprimirá la generación del archivo TLB.

MIDL2396
código de intérprete antiguo que se genera para 64b
Este error está obsoleto. Si ve este error, notifique un error a Microsoft que proporciona los archivos IDL, los archivos ACF y la línea de comandos MIDL completa.
MIDL2397
El modificador del compilador ya no se admite
Ya no se admiten los modificadores o modificadores especificados.
MIDL2398
no se puede ejecutar el motor MIDL
A partir de la versión de Windows 2000 (MIDL versión 5.03.279), el compilador MIDL se implementa con dos archivos ejecutables: Midl.exe (el controlador) y Midlc.exe (el motor del compilador). Este error indica que el Midl.exe no puede iniciar Midlc.exe. Asegúrese de que Midlc.exe se encuentra en el mismo directorio que Midl.exe y de que son la misma versión.
El error puede deberse a la copia de Midl.exe pero no Midlx.exe desde la distribución más reciente. Ejecute midl o midlc en la línea de comandos sin ningún parámetro para ver el número de versión del ejecutable.
MIDL2399
Comandos incorrectos del controlador
A partir de la versión de Windows 2000 (MIDL versión 5.03.279), el compilador MIDL se implementa con dos archivos ejecutables: Midl.exe (el controlador) y Midlc.exe (el motor del compilador). Este error indica que el archivo temporal usado para pasar comandos de Midl.exe a Midlc.exe falta o está dañado. Asegúrese de que Midlc.exe se encuentra en el mismo directorio que Midl.exe y de que son la misma versión.
Es posible que el error se haya causado al intentar ejecutar Midlc.exe directamente o copiando Midl.exe pero no Midlc.exe desde la distribución más reciente. Ejecute midl o midlc en la línea de comandos sin ningún parámetro para ver el número de versión del ejecutable.
MIDL2400
para la automatización ole, los parámetros opcionales deben ser VARIANT o VARIANT *
Ole Automation requiere que todos los parámetros [opcionales] sean de tipo VARIANT o VARIANT*.
En la automatización OLE, el uso de parámetros que no son VARIANT puede provocar un error en la llamada en tiempo de ejecución o pasar datos no definidos para los parámetros [opcionales].
MIDL2401
[defaultvalue] se aplica a un valor distinto de VARIANT y [opcional]. Quite [opcional]
El atributo [defaultvalue] implica [opcional]. El atributo [ opcional] no es necesario.
MIDL2402
[opcional] el atributo es inapplicable fuera de un bloque de biblioteca.
La funcionalidad implícita por el atributo [ opcional] no es aplicable a los servidores proxy generados para una interfaz fuera de un bloque de biblioteca.
MIDL2403
El tipo de datos del parámetro [Icid] debe ser largo.
Ole Automation requiere que los parámetros con el atributo [Icid] sean de tipo long.
MIDL2404
los procedimientos con [propput], [propget] o [propref] no pueden tener más de un parámetro necesario después de [opcional] uno
No puede haber más de un parámetro sin [opcional] después del último parámetro con [opcional] al usar [propput], [propget] o [ propputref].
MIDL2405
[comm_status] o [fault_status] con el selector requiere -Oicf
El modo de optimización -Oi anterior no admite procedimientos ni parámetros con [ comm_status] o [ fault_status] con el selector (es decir, mediante [ encode] o [ descodificación]).
Esta advertencia se puede suprimir globalmente especificando -Oicf en la línea de comandos MIDL o para una función individual agregando el atributo [optimize("icf:)] a la función en el archivo ACF.
En general, se recomienda el modo de optimización -Oicf sobre el modo -Oi .
MIDL2406
error de coincidencia entre el controlador midl y la versión del compilador
A partir de la versión de Windows 2000 (MIDL versión 5.03.279), el compilador MIDL se implementa con dos archivos ejecutables: Midl.exe (el controlador) y Midlc.exe (el motor del compilador). Este error indica que la versión de Midl.exe no coincide con la versión de Midlc.exe.
El error puede deberse a la copia de Midl.exe pero no Midlc.exe desde la distribución más reciente. Ejecute midl o midlc en la línea de comandos sin ningún parámetro para ver el número de versión del ejecutable.
MIDL2407
no se especificó ningún archivo intermedio: use Midl.exe
A partir de la versión de Windows 2000 (MIDL versión 5.03.279), el compilador MIDL se implementa con dos archivos ejecutables: Midl.exe (el controlador) y Midlc.exe (el motor del compilador). Este error indica que Midlc.exe se ejecutó directamente en lugar de usar Midl.exe.
MIDL2408
problema de procesamiento con un parámetro en un procedimiento
Este error se puede ver al importar datos de un TLB y cuando un procedimiento tiene un parámetro no válido.
Si ve este error, notifique un error a Microsoft. Especifique los archivos IDL, los archivos ACF, el archivo TLB y la línea de comandos MIDL completa.
MIDL2409
problema de procesamiento con un campo en una estructura
Este error se puede ver al importar datos de un TLB y cuando una estructura tiene un campo de unión o estructura no válidos.
Si ve este error, notifique un error a Microsoft. Especifique los archivos IDL, los archivos ACF, el archivo TLB y la línea de comandos MIDL completa.
MIDL2410
incoherencia interna del compilador detectada: el desplazamiento de cadena de formato no es válido. Consulte la documentación para más información.
El compilador MIDL detectó un valor no válido en sus estructuras de datos internas. Esto puede deberse a estructuras recursivas o que el compilador infringe sus propios límites de representación para los datos internos. Para identificar o solucionar el problema, intente simplificar el archivo IDL. Para ello, puede simplificar parámetros complejos y estructuras de datos recursivas o reducir el tamaño del archivo IDL dividiándolo. Este mensaje puede ir acompañado de una impresión de diagnóstico con información adicional sobre el problema.
Si ve este error, notifique un error a Microsoft. Especifique los archivos IDL, los archivos ACF, la línea de comandos MIDL completa y la salida de diagnóstico, si existe.
MIDL2411
incoherencia interna del compilador detectada: el desplazamiento de tipos no es válido. Consulte la documentación para más información.
El compilador MIDL detectó un valor no válido en sus estructuras de datos internas. Esto puede deberse a estructuras recursivas o que el compilador infringe sus propios límites de representación para los datos internos. Para identificar o solucionar el problema, intente simplificar el archivo IDL. Para ello, simplifique parámetros complejos y estructuras de datos recursivas o haga que el archivo IDL sea más pequeño dividiendolo. Este mensaje puede ir acompañado de una impresión de diagnóstico con información adicional sobre el problema.
Si ve este error, notifique un error a Microsoft. Especifique los archivos IDL, los archivos ACF, la línea de comandos MIDL completa y la salida de diagnóstico, si existe.
MIDL2412
La sintaxis SAFEARRAY(roo) no se admite fuera del bloque de biblioteca, use LPSAFEARRAY para proxy.
Los SAFEARRAY con tipo explícito no se permiten fuera de un bloque de biblioteca. Use LPSAFEARRAY en su lugar.
En el ejemplo siguiente se muestra este error:
void roo(SAFEARRAY(long) *a); //MIDL2412 when outside a library block
void roo(LPSAFEAEEAY a);         //OK
MIDL2413
No se admiten campos de bits
MIDL no admite campos de bits de estilo C. Esto se aplica a la generación de proxy, así como a la generación de TLB.
MIDL2414
los tipos de valor devueltos complejos o de punto flotante con [descodificación] no se admiten en -Oicf, mediante -OI.
Los procedimientos con tipos de valor devuelto de punto flotante o estructura/unión no se admiten en el selector de estilo -Oicf. Una solución alternativa para 32 bits es usar el modo de optimización -Oi al serializar datos (mediante [codificar] o [descodificar]). Sin embargo, como el intérprete de estilo -Oi antiguo y la compatibilidad con el selector están programados para eliminarse por fases después de la versión de Windows 2000, se recomienda encarecidamente usar punteros como solución alternativa para este problema. Tenga en cuenta también que, normalmente, cambiar un método de interfaz para usar un puntero [out, ref] en lugar del valor devuelto que provoca el problema es totalmente compatible con versiones anteriores en la conexión y se puede ocultar fácilmente del nivel de aplicación.
Esta advertencia se puede suprimir globalmente especificando -Oi en la línea de comandos MIDL o para una función individual agregando el atributo [optimize("i")] a la función en el archivo ACF.
En el ejemplo siguiente se muestra el problema:
roo.idl:
double GetDouble();
roo.acf:
[decode] GetDouble();
Una opción para evitar esta limitación sería pasar un parámetro [out] para contener el resultado en lugar de usar un valor devuelto:
roo.idl:
void GetDouble([out] double *result); //top level pointer is a [ref] pointer
roo.acf:
[decode] GetDouble();
Como se mencionó anteriormente, la solución descrita anteriormente es buena no solo para las nuevas interfaces, sino también como solución alternativa para las antiguas. La representación bancaria del nuevo argumento "out" es la misma que para el valor devuelto (observe void como el nuevo valor devuelto).
MIDL2415
el tipo de valor devuelto no se admite para 64 bits cuando se usa [descodificar]
Los procedimientos con tipos de valor devuelto de punto flotante o estructura/unión no se admiten en modo de 64 bits al realizar la serialización de datos (mediante [ codificación] o [ descodificación]). Esto está relacionado con el intérprete oi de estilo antiguo y el serializador de datos que no se admiten en la plataforma de 64 bits. Consulte la descripción de MIDL2414 para obtener más información.
En el ejemplo siguiente se muestra este error:
roo.idl:
double GetDouble();
roo.acf:
[decode] GetDouble();
Se recomienda lo siguiente como solución alternativa para interfaces nuevas y antiguas. Use un parámetro [out] para contener el resultado en lugar de usar un valor devuelto:
roo.idl:
void GetDouble([out] double *result); //top level pointer is a [ref] pointer.
roo.acf:
[decode] GetDouble();
Tenga en cuenta que esta solución es totalmente compatible con versiones anteriores en la conexión, ya que la representación de cable de un puntero [ref, out] o un doble es el mismo que el de un doble.
MIDL2416
es posible que el tipo transmitido no contenga un puntero completo para [wire_marshal] o [user_marshal]
Es posible que los tipos con los atributos [ wire_marshal] o [ user_marshal] no contengan punteros completos ([ ptr]). Use [ unique] o [ ref] en su lugar.
En el ejemplo siguiente se muestra este error:
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
el tipo transmitido debe ser un puntero o tener un tamaño constante para [wire_marshal] y [user_marshal]
Los tipos de nivel superior con los atributos [ wire_marshal] o [ user_marshal] deben tener un tamaño bien definido en tiempo de compilación. No pueden ser ni contener matrices de tamaño variable o conformes.
En el ejemplo siguiente se muestra este error:
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
los procedimientos con [propget] deben tener al menos un parámetro o un valor devuelto.
Los procedimientos con el atributo [propget] deben tener algún medio para devolver el valor de la propiedad. Deben tener al menos un parámetro [out] o un valor devuelto.
MIDL2461
El atributo [readonly] se aplicó en el nivel de método.
El atributo [readonly] solo se puede aplicar en el nivel de parámetro.
MIDL2465
Las estructuras que contienen matrices conformes deben pasarse por referencia
Los parámetros de nivel superior de RPC deben tener un tamaño bien definido en tiempo de compilación. No pueden ser, ni contener matrices de tamaño variable o conformes. Además, los usuarios no pueden codificar o descodificar un tipo sin un tamaño bien definido. Las aplicaciones deben pasar struct o struct conforme variable variable por referencia.
En el ejemplo siguiente se muestra este error:
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
código> de error interno del sistema del compilador<: el compilador no puede continuar por un motivo desconocido. Consulte la documentación de una solución alternativa.
El compilador no pudo continuar y se desconoce la causa del error. El número de error hexadecimal es un identificador de error del sistema. Es posible que se haya producido un error en la compilación debido a un problema externo, como una condición de memoria insuficiente. En ese caso, puede encontrar más información en Winerror.h o Ntstatus.h.
Hay dos situaciones que suelen generar este error:
  • El compilador MIDL no se pudo recuperar después de detectar un error en el archivo IDL. Si MIDL devolvió algún mensaje de error sobre el archivo IDL, intente corregirlos y volver a compilar. Si no hay ningún mensaje de error, es posible que el compilador haya producido un error antes de que pueda notificar un error. Busque un error de sintaxis en la línea para la que se notifica el error interno del compilador.
  • El compilador MIDL no pudo generar código correcto en una opción de optimización especificada. Intente cambiar los modos del compilador, compilar en optimización en modo mixto (/Os) o quitar todas las optimizaciones. O bien, vuelva a compilar con la marca /NO_FORMAT_OPT para suprimir la optimización predeterminada de MIDL de descriptores de procedimiento y tipo.
En ocasiones, este error se produce incluso cuando el archivo IDL es correcto y no se usan opciones de optimización. Si este es el caso, intente volver a escribir la sección de código en las proximidades de donde se notificó el error quitando las modificaciones recientes, simplificando o reorganizando tipos de datos, cambiando prototipos o, de lo contrario, comienzan a comentar partes del archivo IDL para localizar el código del problema.
Si ninguna de estas opciones funciona o cree que el problema puede estar relacionado con un error en Midl.exe, notifique a Microsoft y proporcione todos los detalles pertinentes.