Поделиться через


Ошибки компилятора

Во время компиляции MIDL создаются следующие сообщения об ошибках:

Код возврата Описание
MIDL2000
необходимо указать /c_ext для абстрактных деклараторов
Абстрактные деклараторы представляют собой расширение Майкрософт для RPC и не определены в DCE RPC. Поэтому, если файл содержит абстрактные деклараторы, компиляция с параметром /osf невозможна, который обеспечивает строгую совместимость DCE. В MIDL версии 3.0 и более поздних используется параметр /c_ext в качестве параметра по умолчанию; параметр /osf отключает параметр /c_ext . Сведения об абстрактных деклараторах см. в разделе Текст ACF.
MIDL2001
Создание экземпляра данных является недопустимым; Необходимо использовать "extern" или "static"
Объявление и инициализация в IDL-файле несовместимы с DCE RPC. Эта функция является расширением Майкрософт, которое недоступно при компиляции в режиме совместимости DCE (/osf).
MIDL2002
переполнение стека компилятора
Во время обработки IDL-файла компилятору не хнуло места в стеке. Эта проблема может возникать, когда компилятор обрабатывает сложное объявление или выражение. Чтобы решить эту проблему, упростите сложное объявление или выражение.
MIDL2003
Переопределение
Это сообщение об ошибке может появиться в следующих случаях: тип был переопределен; прототип процедуры был переопределен; элемент структуры или объединения с тем же именем уже существует; Параметр с тем же именем уже существует в прототипе.
MIDL2004
Будет использоваться привязка [auto_handle]
Тип дескриптора не определен как тип дескриптора по умолчанию. Компилятор предполагает, что в качестве дескриптора привязки для указанной процедуры будет использоваться автоматический дескриптор.
MIDL2005
нехватка памяти
Во время компиляции у компилятора закончилась память. Уменьшите размер или сложность IDL-файла или выделите больше памяти для процесса.
MIDL2006
рекурсивное определение
Рекурсивно определена структура или объединение. Эта ошибка может возникать, если отсутствует спецификация указателя в определении вложенной структуры.
MIDL2007
импорт игнорируется; файл уже импортирован
Импорт IDL-файла является идемпотентной операцией. Включение его более одного раза не оказывает никакого влияния. Все операции импорта, кроме первой, игнорируются.
MIDL2008
Для разреженных перечислений требуется /c_ext или /ms_ext
Назначение значений констант перечисления несовместимо с DCE RPC. Если вы хотите использовать расширения Майкрософт для MIDL, которые позволяют присваивать значения констант перечисления, компиляцию с параметром /osf , который обеспечивает строгую совместимость DCE, нельзя. В MIDL версии 3.0 и более поздних используются параметры /c_ext и /ms_ext по умолчанию; Параметр /osf отключает эти параметры расширения.
MIDL2009
неопределенный символ
В выражении используется неопределенный символ. Эта ошибка может возникать при использовании неопределенного перечислимого значения.
MIDL2010
Тип, используемый в файле ACF, не определенный в IDL-файле
Используется неопределенный тип.
MIDL2011
Объявление неразрешенного типа
Тип, указанный в дополнительном поле сведений об ошибке, не определен в другом месте IDL-файла.
MIDL2012
Для использования констант расширенных символов требуется /ms_ext или /c_ext
Константы расширенных символов — это расширение Майкрософт для DCE IDL. Чтобы использовать тип данных wchar_t, нельзя выполнить компиляцию с параметром /osf , который переопределяет параметры компилятора MIDL по умолчанию /ms_ext и /c_ext.
MIDL2013
Для использования строк расширенных символов требуется /ms_ext или /c_ext
Строковые константы с расширенными символами — это расширение Майкрософт для DCE IDL. Чтобы использовать тип данных wchar_t, нельзя выполнить компиляцию с параметром /osf , который переопределяет параметры компилятора MIDL по умолчанию /ms_ext и /c_ext.
MIDL2014
несогласованное переопределение типа wchar_t
Тип wchar_t переопределен как тип, который не эквивалентен неподписанным коротким DOS *.
MIDL2015
Importlib не найден
Компилятору не удалось найти библиотеку типов, указанную директивой [ importlib]. Проверьте правильность пути и имени библиотеки.
MIDL2016
два блока библиотеки
Два блока библиотеки (даже с разными именами) в одном исходном файле являются недопустимыми. Объедините все элементы в один блок библиотеки.
MIDL2017
Оператор dispinterface требует определения для IDispatch
Эта ошибка обычно возникает, если файлы Stdole2.tlb или Oaidl.idl не импортируются.
MIDL2018
ошибка при доступе к библиотеке типов
Компилятору не удалось найти указанную библиотеку типов. Убедитесь, что вы правильно указали путь.
MIDL2019
ошибка при доступе к сведениям о типе
Импортированная библиотека типов повреждена, недопустима или создана только частично.
MIDL2020
ошибка при создании библиотеки типов
Не удалось создать библиотеку типов. Одной из возможных причин этой ошибки является указание пути к IDL-файлу длиной более 126 символов. Oleaut32.dll не поддерживает имена путей длиной более 126 символов.
MIDL2021
повторяющийся идентификатор
Приложения используют оператор id в IDL-файлах, чтобы указать DISPID для функций-членов. Функции-члены могут быть свойствами или методами интерфейсов или dispinterfaces. Эта ошибка указывает, что IDL-файл указывает один и тот же номер идентификатора для двух методов или свойств.
MIDL2022
Недопустимое или отсутствующее значение атрибута записи
Аргументом атрибута записи может быть строка, указывающая именованную точку входа, или порядковый номер, определяющий точку входа. Этот аргумент либо отсутствует, либо содержит недопустимое значение.
MIDL2023
предполагается, что восстановление ошибки
Компилятор MIDL обнаружил недопустимые символы в IDL-файле.
MIDL2024
ошибка отмены восстановления
Компилятор MIDL обнаружил недопустимые символы в IDL-файле. Он будет игнорировать незаконные символы.
MIDL2025
синтаксическая ошибка
Компилятор обнаружил синтаксическую ошибку в указанной строке.
MIDL2026
не удается выполнить восстановление после предыдущих синтаксических ошибок; прерывание компиляции
Компилятор MIDL автоматически пытается восстановиться после синтаксических ошибок путем добавления или удаления синтаксических элементов. Это сообщение указывает, что, несмотря на эти попытки восстановления, компилятор обнаружил слишком много ошибок. Исправьте указанные ошибки и перекомпиляция.
MIDL2027
Неизвестный параметр pragma
Указанная директива C не поддерживается в MIDL. Удалите прагму из IDL-файла.
MIDL2028
функция не реализована
Функция MIDL, хотя и является частью определения языка, не реализована в Microsoft RPC и не поддерживается компилятором MIDL. Например, не реализованы следующие функции языка: битовый набор, канал и международный тип символов. Нереализованная языковая функция отображается в дополнительном поле сведений об ошибке сообщения об ошибке.
MIDL2029
Тип не реализован
Указанный тип данных, хотя и легальный ключевое слово MIDL, не реализован в Microsoft RPC.
MIDL2030
не-указатель, используемый в операции разыменования
Тип данных, который не является указателем, связан с операциями указателя. Невозможно получить доступ к объекту через указанный не-указатель.
MIDL2031
выражение имеет деление на ноль
Константное выражение содержит деление на ноль.
MIDL2032
выражение использует несовместимые типы
Левая и правая стороны оператора в выражении имеют несовместимые типы.
MIDL2033
Неархейное выражение использует оператор индекса
Выражение использует операцию индексирования массива для элемента данных, который не является типом массива.
MIDL2034
Выражение слева не оценивается как struct/union/перечисление
Оператор прямой или косвенной ссылки "." или "->" применен к объекту данных, который не является структурой, объединением или перечислением. С помощью указанного объекта невозможно получить прямую или непрямую ссылку.
MIDL2035
Ожидается константное выражение
В синтаксисе ожидалось константное выражение. Например, для границ массива требуется константное выражение. Компилятор выдает это сообщение об ошибке, если привязка массива определена переменной или неопределенным символом.
MIDL2036
Невозможно вычислить выражение во время компиляции
Компилятор не может вычислить выражение во время компиляции.
MIDL2037
выражение не реализовано
Функция, поддерживаемая в предыдущих выпусках компилятора MIDL, не поддерживается в версии компилятора, поставляемой вместе с Microsoft RPC. Удалите указанное выражение.
MIDL2038
атрибут no [pointer_default], предполагающий [уникальный] для всех неназначенных указателей
Компилятор MIDL предлагает три разных варианта по умолчанию для указателей, которые не имеют атрибутов указателя. Параметры функции, которые являются указателями верхнего уровня, по умолчанию используют [ref] указатели. Указатели, внедренные в структуры, и указатели на другие указатели (не указатели верхнего уровня) по умолчанию на тип, заданный атрибутом [pointer_default]. Если атрибут [pointer_default] не указан, эти указатели неуровневого уровня по умолчанию используют уникальные указатели. Это сообщение об ошибке указывает на последний случай: атрибут [pointer_default] не указан, и существует по крайней мере один указатель не верхнего уровня, который будет рассматриваться как уникальный указатель. Дополнительные сведения см. в разделе Типы указателей по умолчанию.
MIDL2039
интерфейс не соответствует требованиям к маршалингу автоматизации
Интерфейс не соответствует требованиям для интерфейса OLE Automation. Убедитесь, что интерфейс является производным от IUnknown или IDispatch.
MIDL2040
[out] Только параметр не может быть указателем на открытую структуру
Параметр [out]-only использовался в качестве указателя на структуру, называемую открытой структурой, передаваемый диапазон и размер которой определяются во время выполнения. Заглушка сервера не знает, сколько места нужно выделить для открытой структуры. Используйте указатель на указатель на открытую структуру и убедитесь, что серверное приложение выделяет для нее достаточно места.
MIDL2041
[out] Только параметр не может быть неотразимой строкой
Массив со строковым атрибутом объявлен как параметр [out]-only без указания размера. Заглушка сервера нуждается в сведениях о размере для выделения памяти для строки. Можно удалить строковый атрибут и добавить атрибут [size_is] или изменить параметр на параметр [in, out].
MIDL2042
Параметр [out] не является указателем
Все параметры [out] должны быть указателями в соответствии с соглашением о вызове по значению языка программирования C. Параметр направления [out] указывает, что сервер передает значение клиенту. Согласно соглашению о вызове по значению сервер может передавать данные клиенту, только если аргумент функции является указателем.
MIDL2043
Открытая структура не может быть параметром
Открытая структура содержит соответствующий массив в качестве последнего элемента. Структура или объединение усекаются, когда последний элемент этой структуры или объединения является соответствующим массивом.
MIDL2044
[out] Дескриптор контекста или универсальный дескриптор должен быть указан в качестве указателя на этот тип дескриптора.
Параметр дескриптора контекста или определяемый пользователем дескриптор с атрибутом направления [out] должен быть указателем на указатель.
MIDL2045
Дескриптор контекста не должен быть производным от типа с атрибутом [transmit_as]
Дескрипторы контекста должны передаваться как типы дескрипторов контекста. Они не могут передаваться как другие типы и не могут быть производными от [transmit_is], [represent_as], [wire_marshal] или [user_marshal].
MIDL2046
Не удается указать переменное число аргументов для удаленной процедуры
Удаленные вызовы процедур, указывающие переменное число аргументов во время компиляции, несовместимы с определением RPC DCE. В Microsoft RPC нельзя использовать переменное число аргументов.
MIDL2047
Именованный параметр не может быть "void"
Параметр с базовым типом void указывается с именем.
MIDL2048
параметр является производным от coclass или module
Coclass задает объект верхнего уровня, содержащий интерфейсы и dispinterfaces. Его нельзя передать в качестве параметра.
MIDL2049
дескриптором привязки может быть только первый параметр; Необходимо указать параметр /ms_ext
DCE RPC разрешает только первый параметр быть дескриптором привязки. Компиляция с параметром /osf отключает переключатель /ms_ext по умолчанию, который поддерживает несколько параметров дескриптора и параметров дескриптора в позиции, отличной от самой левой позиции.
MIDL2050
Не удается использовать [comm_status] как для параметра, так и для возвращаемого типа
Процедура и один из ее параметров имеют атрибут [comm_status]. Атрибут [comm_status] указывает, что только один объект данных за раз может иметь тип error_status_t.
MIDL2051
Атрибут [local] в процедуре требует /ms_ext
Атрибут [local] является расширением Майкрософт для DCE IDL. Чтобы использовать этот атрибут в функции, нельзя скомпилировать с параметром /osf . Параметр /osf переопределяет параметры компилятора MIDL по умолчанию /ms_ext и /c_ext.
MIDL2052
Атрибуты свойств можно использовать только с процедурами
Неправильное использование атрибута [propget], [propput] или [propputref]. Убедитесь, что вы правильно написали имя функции свойства, а свойство и функция имеют одно и то же имя.
MIDL2053
Процедура может иметь не более одного атрибута свойства
Для функции можно указать не более одного атрибута [propget], [propput] или [propputref].
MIDL2054
процедура имеет недопустимое сочетание атрибутов операции
Некоторые атрибуты нельзя использовать в связи с другими атрибутами. Ознакомьтесь со справочником по языку MIDL, чтобы узнать о точных требованиях и синтаксисе атрибутов, используемых в этой процедуре.
MIDL2055
поле, наследующее от соответствующего массива, должно быть последним элементом структуры
Структура содержит соответствующий массив, который не является последним элементом в структуре. Соответствующий массив должен отображаться как последний элемент структуры.
MIDL2056
повторяющаяся метка [case]
Указана повторяющаяся метка регистра. Отобразится повторяющаяся метка.
MIDL2057
Для дискриминированного объединения не указан [по умолчанию] регистр
Дискриминируемое объединение было указано без регистра по умолчанию.
MIDL2058
Не удается разрешить выражение атрибута
Невозможно разрешить выражение, связанное с атрибутом . Эта ошибка обычно возникает, когда переменная, отображаемая в выражении, не определена. Например, ошибка может возникнуть, если переменная s не определена и используется атрибутом [size_is].
MIDL2059
Выражение атрибута должно иметь целочисленный тип, не поддерживая 64-разрядные выражения
Указанная переменная атрибута или выражение должны быть целочисленным типом. Эта ошибка возникает, если тип выражения атрибута не разрешается в целое число.
MIDL2060
[byte_count] требуется /ms_ext
Атрибут [byte_count] является расширением Майкрософт для DCE IDL. Для использования этого атрибута нельзя скомпилировать с параметром /osf , который переопределяет параметры компилятора MIDL по умолчанию /ms_ext и /c_ext.
MIDL2061
[byte_count] может применяться только к параметрам out типа указателя.
Атрибут [byte_count] может применяться только к параметрам [out], а все параметры [out] должны быть типами указателей.
MIDL2062
Невозможно указать [byte_count] в указателе на соответствующий массив или структуру
Атрибут [byte_count] не может применяться к соответствующему массиву или структуре.
MIDL2063
параметр, указывающий число байтов не только [in], или параметр числа байтов не является [out] только
Значение, связанное с [byte_count], должно передаваться от клиента к серверу; он должен быть параметром [in]. Параметр [byte_count] не обязательно должен быть параметром [in, out].
MIDL2064
параметр, указывающий число байтов, не является целочисленным типом
Значение, связанное с числом байтов, должно быть целочисленным типом int, small, short или long.
MIDL2065
Не удается указать [byte_count] в параметре с атрибутами размера
Атрибут [byte_count] нельзя использовать с другими атрибутами размера, такими как [size_is] или [length_is].
MIDL2066
[case] выражение не является константой
Выражение, указанное для метки регистра, не является константой.
MIDL2067
Выражение [case] не имеет целочисленного типа
Выражение, указанное для метки регистра, не является целочисленным типом.
MIDL2068
для указания [context_handle] для типа, отличного от void *, требуется /ms_ext
Для совместимости DCE-RPC дескриптор контекста должен быть указателем типа void *. Если вы хотите, чтобы дескрипторы контекста были связаны с типами, отличными от void *, не используйте параметр компилятора MIDL /osf, который переопределяет переключатель компилятора MIDL по умолчанию /ms_ext.
MIDL2069
Не удается указать несколько параметров с каждым из comm_status/fault_status
Процедура может иметь только один параметр с атрибутом [comm_status]. Он может иметь не более одного параметра с атрибутом [fault_status].
MIDL2070
параметр comm_status/fault_status должен быть параметром указателя только [out]
Типы кода ошибок [comm_status] и [fault_status] передаются от сервера к клиенту и поэтому должны быть указаны в качестве параметра [out]. Из-за ограничений языка программирования C все параметры [out] должны быть указателями.
MIDL2071
Синтаксическая ошибка конечной точки
Неправильный синтаксис конечной точки.
MIDL2072
неприменимый атрибут
Указанный атрибут не может быть применен в этой конструкции. Например, атрибут string применяется к массивам char или указателям char и не может применяться к структуре, состоящей из двух коротких целых чисел:
typedef [string] struct moo 
{
    short x;
    short y;
};
MIDL2073
[выделение] требуется /ms_ext
Атрибут allocate представляет расширение Майкрософт, которое не определено как часть RPC DCE. Чтобы использовать этот атрибут, нельзя скомпилировать с параметром /osf , который переопределяет параметр компилятора MIDL по умолчанию /ms_ext
MIDL2074
недопустимый режим [выделение]
Указан недопустимый режим для конструкции атрибута [allocate]. Четыре допустимых режима: single_node, all_nodes, on_null и всегда.
MIDL2075
Атрибуты length не могут применяться с атрибутом string
При использовании атрибута string созданные файлы-заглушки вызывают функцию strlen , чтобы определить длину строки. Не используйте атрибут length и строковый атрибут для одной и той же переменной.
MIDL2076
Невозможно одновременно указать [last_is] и [length_is]
И [last_is], и [length_is] указаны для одного массива. Эти атрибуты связаны следующим образом: length = last first + 1. Так как каждое значение может быть производным от другого, не указывайте оба значения.
MIDL2077
Невозможно одновременно указать [max_is] и [size_is]
Для одного массива указаны и [ max_is], и [ size_is]. Эти атрибуты связаны следующим образом: max = size + 1. Так как каждое значение может быть производным от другого, не указывайте оба значения.
MIDL2078
атрибут [switch_is], указанный при использовании объединения
Для объединения не было указано дискриминант. Атрибут [switch_is] указывает дискриминант, используемый для выбора полей объединения.
MIDL2079
no [uuid] specified
Для интерфейса не указан UUID.
MIDL2080
[uuid] игнорируется в интерфейсе [local]
Использование атрибута [local] в интерфейсе объекта приводит к тому, что компилятор MIDL игнорирует атрибут [uuid]. Нельзя использовать оба атрибута в интерфейсе RPC.
MIDL2081
несоответствие типов между выражениями атрибутов длины и размера
Выражения атрибутов длины и размера должны иметь одинаковые типы. Например, это предупреждение выдается, если переменная атрибута для выражения [size_is] имеет тип unsigned long , а переменная атрибута для выражения [length_is] имеет тип long.
MIDL2082
Атрибут [string] должен быть указан "byte", "char" или "wchar_t" массива или указателя
Строковый атрибут не может применяться к указателю или массиву, базовым типом которых не является байт, char или структура , в которых все члены являются типом byte или char .
MIDL2083
несоответствие между типом выражения [switch_is] и типом переключателя объединения
Если объединение [switch_type] не указано, тип переключателя совпадает с типом поля [switch_is].
MIDL2084
[transmit_as] не должно применяться к типу, который является производным от дескриптора контекста.
Дескрипторы контекста не могут передаваться как другие типы.
MIDL2085
[transmit_as] должен указывать переводимый тип
Указанный тип [transmit_as] является производным от типа, который не может быть передан Microsoft RPC, например void, void *или int. Используйте определенный базовый тип RPC; в случае int добавьте описатели размера, такие как small, short или long , чтобы квалифицировать значение int.
MIDL2086
передаваемый тип для [transmit_as] и [represent_as] не должен быть указателем или производным от указателя
Передаваемый тип не может быть указателем или производным от указателя.
MIDL2087
представленный тип для [transmit_as] и [represent_as] не должен быть производным от соответствующего или изменяющегося массива, его эквивалента указателя или соответствующей или изменяющейся структуры
Тип, к которому применен [transmit_as], не может быть производным от соответствующего массива или структуры (массива или структуры, размер которых определяется во время выполнения).
MIDL2088
Неправильный формат [uuid]
Формат UUID не соответствует спецификации. UUID должен быть строкой, состоящей из пяти последовательностей шестнадцатеричных цифр длиной 8, 4, 4, 4 и 12 цифр. "12345678-1234-ABCD-EF01-28A49C28F17D" является допустимым UUID. Используйте функцию UuidCreate или служебную программу для создания допустимого UUID.
MIDL2089
uuid не является шестнадцатеричным числом
UUID, указанный для интерфейса, содержит недопустимые символы в шестнадцатеричном представлении чисел. Символы от 0 до 9 и от A до F допустимы в шестнадцатеричном представлении.
MIDL2090
Необязательные параметры должны находиться после обязательных параметров
Описание порядка списков параметров см. в разделе [необязательно] справочника по языку MIDL.
MIDL2091
[dllname] требуется, если используется [запись]
Если вы указываете точку входа в библиотеку DLL, необходимо также указать имя этой библиотеки DLL с помощью атрибута [dllname].
MIDL2092
[bindable] является недопустимым без [propget], [propput] или [propputref]
Атрибут [bindable] действителен только для свойства, поэтому необходимо также указать одну из функций доступа к свойству или настройки свойств.
MIDL2093
Процедуры с [propput] или [propputref] должны иметь по крайней мере один параметр.
Процедура [propput] или [ propputref] должна иметь по крайней мере параметр [in] со свойством для задания; Процедура [propget] должна иметь по крайней мере параметр [out, retval] для получения свойства или ссылки.
MIDL2094
Атрибут [id] является обязательным
Для этой функции-члена из-за используемого синтаксиса dispinterface требуется DISPID, который указывается с помощью атрибута [ id]. При указании dispinterface с помощью свойств и методов необходимо указать DISPID для каждого свойства и метода.
MIDL2095
Имя интерфейса, указанное в ACF, не соответствует указанному в IDL-файле
В текущем режиме компилятора имя, следующее за интерфейсом ключевое слово в ACF, должно совпадать с именем интерфейса, ключевое слово в IDL-файле. Имена интерфейсов в файлах IDL и ACF могут отличаться при компиляции с помощью параметра компилятора MIDL /acf.
MIDL2096
повторяющийся атрибут
Указаны повторяющиеся или конфликтующие атрибуты. Эта ошибка часто возникает, когда два атрибута являются взаимоисключающими. Например, атрибуты [code] и [nocode] нельзя использовать одновременно.
MIDL2097
Параметр с атрибутом [comm_status] или [fault_status] должен быть указателем на тип error_status_t
Если в качестве атрибута параметра используется [fault_status] или [comm_status], параметр должен быть параметром [out] типа error_status_t. При возникновении ошибки сервера параметру присваивается код ошибки. После успешного завершения удаленного вызова процедура задает значение .
MIDL2098
Не удается указать [local] процедуру в файле ACF
В ACF указана локальная процедура. Локальную процедуру можно указать только в IDL-файле.
MIDL2099
указанный тип не определен как дескриптор
Тип, указанный в атрибуте [implicit_handle], не определен как тип дескриптора. Измените определение типа или имя типа, указанное атрибутом .
MIDL2100
процедура не определена
Атрибут был применен к процедуре в ACF, и эта процедура не определена в IDL-файле.
MIDL2101
этот параметр не существует в IDL-файле
Параметр, указанный в ACF, не существует в определении В IDL-файле. Все параметры, функции и определения типов, отображаемые в ACF, должны соответствовать параметрам, функциям и типам, ранее определенным в IDL-файле.
MIDL2102
эта конструкция с границами массива не поддерживается
В настоящее время MIDL поддерживает выражение верхней и нижней границ массива в виде Массив[Нижний .. Upper] только в том случае, если константа, задающая нижнюю границу массива, разрешается в нулевое значение.
MIDL2103
Спецификация с привязкой массива недопустима
Пользовательская спецификация границ массива для массива фиксированного размера недопустима. Пример:
typedef short Array[-1]
MIDL2104
Указатель на соответствующий массив или массив, содержащий соответствующий массив, не поддерживается
Недопустимое использование соответствующего массива. Правила, регулирующие соответствующие массивы, см. в разделе Массивы и RPC.
MIDL2105
pointee/array не является производным от размера
Соответствующий массив указан без указания размера. Размер можно указать с помощью атрибута [max_is] или [size_is].
MIDL2106
В библиотеке типов разрешены только фиксированные массивы и safeARRAY.
Вы использовали тип массива в инструкции library, который не может использоваться в библиотеке типов.
MIDL2107
SAFEARRAY являются законными только внутри блока библиотеки
Компилятор MIDL не распознает SAFEARRAY как допустимый тип данных, за исключением случаев, когда создается библиотека типов.
MIDL2108
неправильная константная символа
Символ конца строки не допускается в символьных константах.
MIDL2109
конец файла, найденного в примечании
Символ конца файла обнаружен в комментарии.
MIDL2110
конец файла, найденного в строке
В строке обнаружен символ конца файла.
MIDL2111
Длина идентификатора превышает 31 символ
Идентификаторы ограничены 31 буквенно-цифровым символом. Имена идентификаторов длиной более 31 символа усекаются.
MIDL2112
конец строки, найденной в строке
В строке обнаружен символ конца строки. Убедитесь, что вы включили символ в двойных кавычках, который завершает строку.
MIDL2113
Строковая константа превышает ограничение в 255 символов
Длина строки превысила максимально допустимую длину в 255 символов.
MIDL2114
Длина идентификатора превышает 255 символов и была усечена
Длина идентификатора превысила максимально допустимую длину в 255 символов. Лишние символы в идентификаторе усекаются.
MIDL2115
константы слишком большие
Константа слишком велика для внутреннего представления.
MIDL2116
ошибка числового анализа
Компилятору не удалось проанализировать числовой идентификатор.
MIDL2117
ошибка при открытии файла
Операционная система сообщила об ошибке при попытке открыть выходной файл. Эта ошибка может быть вызвана слишком длинным именем для файловой системы или повторяющимся именем файла.
MIDL2118
привязка ошибки к функции
MIDL2119
ошибка инициализации OLE
MIDL2120
при загрузке библиотеки ошибок
MIDL2121
[out] только параметр не должен быть производным от указателя или массива верхнего уровня [unique] или [ptr]
Уникальный указатель не может быть параметром [out]only. По определению уникальный указатель может меняться с NULL на не null. Сведения о параметре [out]-only не передаются от клиента к серверу.
MIDL2122
атрибут неприменим для этого объединения, не допускающего RPC
Только атрибуты [switch_is] и [switch_type] применяются к объединению, которое передается в рамках удаленного вызова процедуры.
MIDL2123
Выражение, используемое для атрибута size, не должно быть производным от параметра [out]-only
Значение параметра [out]-only не передается на сервер и не может использоваться для определения длины или размера параметра [in].
MIDL2124
Выражение, используемое для атрибута length для параметра [in], не может быть производным от параметра [out]-only
Значение параметра [out]-only не передается на сервер и не может использоваться для определения длины или размера параметра [in].
MIDL2125
использование "int" needs /c_ext
MIDL — это строго типизированный язык. Все параметры, передаваемые по сети, должны быть производными от одного из базовых типов MIDL. Тип int не определен как часть MIDL. Передаваемые данные должны содержать спецификатор размера: маленький, короткий или длинный. Данные, которые не передаются по сети, могут быть включены в интерфейс; используйте параметр /c_ext .
MIDL2126
Поле структуры или объединения не должно быть "void"
Поля в структуре или объединении должны быть объявлены как определенные базовые типы, поддерживаемые MIDL, или тип, производный от базовых типов. Типы Void не допускаются в удаленных операциях.
MIDL2127
Элемент массива не должен быть пустым
Элемент массива не может быть пустым.
MIDL2128
использование квалификаторов типа и /или модификаторов требует /c_ext
Модификаторы типа, такие как _cdecl и _far , можно компилировать только при указании параметра /c_ext .
MIDL2129
Поле структуры или объединения не должно быть производным от функции
Поля структуры или объединения должны быть базовыми типами MIDL или типами, производными от этих базовых типов. Функции не являются законными в области структуры или объединения.
MIDL2130
Элемент array не должен быть функцией
Элемент массива не может быть функцией.
MIDL2131
Параметр не должен быть функцией
Параметр удаленной процедуры должен быть переменной указанного типа. Функция не может быть параметром удаленной процедуры.
MIDL2132
Структуре или объединению с битовыми полями требуется /c_ext
Необходимо указать параметр компилятора MIDL /c_ext , чтобы разрешить битовые поля в структурах, которые не передаются в удаленном вызове процедуры.
MIDL2133
спецификация битового поля для другого типа, который "int" является расширением, не совместимым с ANSI
Спецификация языка программирования ANSI C не позволяет применять битовые поля к не целочисленным типам.
MIDL2134
Спецификация битового поля может применяться только к простым целочисленным типам
Спецификация языка программирования ANSI C не позволяет применять битовые поля к не целочисленным типам.
MIDL2135
Поле структуры или объединения не должно быть производным от handle_t или контекстного дескриптора
Дескрипторы контекста не могут передаваться как часть другой структуры. Они должны передаваться в виде дескрипторов контекста.
MIDL2136
Элемент array не должен быть производным от handle_t или дескриптора контекста
Дескрипторы контекста не могут передаваться как часть массива.
MIDL2137
эта спецификация объединения нуждается в /c_ext
Объединение, отображающееся в определении интерфейса, должно быть связано с дискриминантом или объявлено как локальное. Данные, которые не передаются по сети, могут быть неявно объявлены как локальные при использовании параметра /c_ext , который является midl по умолчанию. Этот IDL нельзя скомпилировать с помощью параметра /osf .
MIDL2138
параметр, производный от int, должен иметь описатель размера "small", "short" или "long" с "int"
Тип int является допустимым типом MIDL только на 32-разрядных платформах, в 16-разрядных системах int должен сопровождаться спецификацией размера. Используйте один из описателей размера small, short или long.
MIDL2139
Тип параметра не может быть производным от void или void*
MIDL — это строго типизированный язык. Все параметры, передаваемые по сети, должны быть производными от одного из базовых типов MIDL. MIDL не поддерживает void в качестве базового типа. Необходимо изменить объявление на допустимый тип MIDL.
MIDL2140
параметр, производный от структуры или объединения, содержащего битовые поля, не поддерживается
Битовые поля не определяются как допустимый тип данных в DCE RPC.
MIDL2141
использование параметра, наследующего от типа, содержащего модификаторы типа/квалификаторы типа, требуется /c_ext
Использование ключевых слов, таких как far, near, const и volatile , в IDL-файле является расширением Майкрософт для DCE RPC. Эти ключевые слова недоступны при компиляции с помощью параметра /osf , который отключает параметр расширения /c_ext по умолчанию.
MIDL2142
параметр не должен быть производным от указателя на функцию
Библиотеки времени выполнения RPC передают указатель и связанные с ним данные между клиентом и сервером. Указатели на функции не могут передаваться в качестве параметров, так как функция не может быть передана по сети.
MIDL2143
параметр не должен быть производным от объединения, поддерживающего неrpc
Союз должен быть связан с дискриминантом. Используйте атрибуты [switch_is] и [switch_type].
MIDL2144
тип возвращаемого значения является производным от типа int. Необходимо использовать описатели размера с int
В 16-разрядных системах тип int не является допустимым типом MIDL, если он не сопровождается спецификацией размера. Используйте один из описателей размера small, short или long.
MIDL2145
Тип возвращаемого значения не должен быть производным от указателя void
MIDL — это строго типизированный язык. Все параметры, передаваемые по сети, должны быть производными от одного из базовых типов MIDL. Типы Void не определяются как часть MIDL. Необходимо изменить объявление на допустимый тип MIDL.
MIDL2146
Тип возвращаемого значения не должен быть производным от структуры или объединения, содержащего битовые поля
Битовые поля не определяются как допустимый тип данных в DCE RPC.
MIDL2147
Тип возвращаемого значения не должен быть производным от объединения, поддерживающего неrpc
Союз должен быть связан с дискриминантом. Используйте атрибуты [switch_is] и [switch_type].
MIDL2148
Тип возвращаемого значения не должен быть производным от указателя на функцию
Библиотеки времени выполнения RPC передают указатель и связанные с ним данные между клиентом и сервером. Указатели на функции не могут передаваться в качестве параметров, так как RPC не определяет метод для передачи связанной функции по сети.
MIDL2149
составные инициализаторы не поддерживаются
DCE RPC поддерживает только простую инициализацию. Структура или массив не могут быть инициализированы в IDL-файле.
MIDL2150
Атрибутам ACF в IDL-файле требуется параметр /app_config
Расширение Майкрософт позволяет указывать атрибуты ACF в IDL-файле. Используйте параметр /app_config , чтобы активировать это расширение.
MIDL2151
для одного строковый комментарий требуется /ms_ext или /c_ext
Однострочные комментарии, использующие два символа косой черты (//), представляют собой расширение Майкрософт для DCE RPC. При компиляции с параметром /osf нельзя использовать однострочные комментарии.
MIDL2152
Неправильный формат [версия]
Номер версии интерфейса в заголовке интерфейса должен быть указан в основном формате. minor, где каждое число может варьироваться от 0 до 65535.
MIDL2153
Для "подписанного" требуется /ms_ext или /c_ext
Использование подписанного ключевое слово является расширением Майкрософт для DCE RPC. Параметр /osf нельзя использовать, если вы хотите использовать эту функцию.
MIDL2154
несоответствие в типе назначения
Тип переменной не соответствует типу значения, присвоенного переменной.
MIDL2155
объявление должно иметь вид: const <type> \<declarator> = <initializing expression>
Объявление несовместимо с синтаксисом RPC DCE. Используйте параметр /ms_ext или /c_ext режима компилятора MIDL.
MIDL2156
Объявление должно иметь "const"
Объявления в IDL-файле должны быть константными выражениями, которые используют ключевое слово const, например:
const short x = 2;
MIDL2157
struct/union/enum не должно определяться в спецификации типа параметров
Структура, объединение или перечислимый тип должны быть явно указаны вне прототипа функции.
MIDL2158
Атрибут [allocate] должен применяться только к типам указателей non-void
Атрибут [allocate] предназначен для сложных структур данных на основе указателя. Если указан атрибут [allocate], файл-заглушка проходит по структуре данных, чтобы вычислить общий размер всех объектов, доступных из указателя, и всех других указателей в структуре данных. Измените тип на тип невоидного указателя или удалите атрибут [allocate] и используйте другой метод для определения его размера выделения, например оператор sizeof .
MIDL2159
Массив или эквивалентная конструкция указателя не может быть производным от некапсулированного объединения
Каждый союз должен быть связан с дискриминантом. Массивы объединений не допускаются, так как они не предоставляют связанный дискриминант. Массивы структур, в которых структура упаковывает объединение и его дискриминант, разрешены, так как заглушки могут использовать дискриминант для определения размера каждого объединения.
MIDL2160
поле не должно быть производным от типа error_status_t
Тип error_status_t можно использовать только в качестве параметра или возвращаемого типа. Он не может быть внедрен в поле структуры или объединения.
MIDL2161
Union имеет по крайней мере одну руку без метки case
Объявление объединения не соответствует требуемому синтаксису MIDL для объединения. Для каждого профсоюзного подразделения требуется метка case или метка по умолчанию, которая выбирает это объединение.
MIDL2162
параметр или возвращаемое значение не должны быть производными от типа, к которому применено [ignore]
Атрибут [ignore] — это атрибут поля, который может применяться только к полям, таким как поля структур и массивов. Атрибут [ignore] указывает, что заглушка не должна разыменовывать указатель во время передачи и не допускается, если она конфликтует с другими атрибутами, которые должны быть разыменовываемыми, например с параметрами [out] и возвращаемыми функциями значениями.
MIDL2163
К указателю уже применен атрибут указателя
К одному указателю можно применить только один из атрибутов указателя, [ref], [unique] или [ptr].
MIDL2164
Поле или параметр не должны быть производными от структуры, которая является рекурсивной с помощью указателя ссылки
По определению ссылочный указатель не может иметь значение NULL. Рекурсивная структура данных, определенная с помощью указателя ссылки, не имеет элементов NULL и по соглашению не является упреющей. Используйте атрибут указателя [unique], чтобы позволить структуре данных указать элемент NULL , или переопределить структуру данных как нерекурсивную структуру данных.
MIDL2165
Для использования поля, производного от указателя void, требуется /c_ext
Тип void * и другие типы и квалификаторы типов, которые не поддерживаются DCE IDL, разрешены в IDL-файле только при использовании параметров компилятора MIDL по умолчанию. Использование параметра /osf переопределяет это значение по умолчанию. Если необходимо выполнить компиляцию в режиме совместимости osf, необходимо переопределить тип указателя.
MIDL2166
Для использования этого атрибута требуется /ms_ext
Эта языковая функция является расширением Майкрософт для DCE IDL. Эту функцию нельзя использовать при компиляции в режиме совместимости osf ( /osf ).
MIDL2167
Этот атрибут разрешен только с новыми библиотеками типов форматов
Для использования этого атрибута требуется версия Oleaut32.dll, предоставляемая вместе с Windows 2000 или более поздней версии.
MIDL2168
использование wchar_t требуется /ms_ext или /c_ext
Тип расширенных символов представляет расширение для DCE IDL. Компилятор MIDL не принимает тип расширенных символов при указании параметра /osf .
MIDL2169
Для неименованных полей требуется /ms_ext или /c_ext
DCE IDL не поддерживает использование неименованных структур или объединений, встроенных в другие структуры или объединения. В DCE IDL все такие внедренные поля должны иметь имена. Компилятор MIDL не разрешает их использование при указании параметра /osf .
MIDL2170
Неименованные поля могут быть производными только от типов структуры или объединения
Расширение Майкрософт для DCE IDL, которое поддерживает неименованные поля, применяется только к структурам и объединениям. Для соблюдения этого ограничения необходимо присвоить имя полю или переопределить его.
MIDL2171
Поле объединения не может быть производным от соответствующего или изменяющегося массива или его эквивалента указателя
Соответствующий массив не может отображаться отдельно в объединении, но должен сопровождаться значением, указывающим размер массива. Вместо использования массива в качестве руки объединения используйте структуру, состоящую из соответствующего массива и идентификатора, указывающего его размер.
MIDL2172
атрибут no [pointer_default] задан, при условии, что [ptr] для всех неатрированных указателей в интерфейсе
Реализация DCE IDL указывает, что все указатели в каждом IDL-файле должны быть связаны с атрибутами указателя. Если явный атрибут указателя не назначен параметру или типу указателя и в IDL-файле не указан атрибут [pointer_default], полный атрибут указателя ptr связывается с указателем. Атрибуты указателя можно изменить с помощью явных атрибутов указателя, указав атрибут [pointer_default] или указав параметр /ms_ext , чтобы изменить значение по умолчанию для неаттрибуированных указателей на [уникальный].
MIDL2173
Инициализация выражения должна разрешаться в константное выражение
Если выражение используется в качестве инициализатора, оно должно быть константным. Это верно во всех режимах компилятора MIDL. Выражение должно быть разрешаемым во время компиляции. Укажите литеральную константу или выражение, которое разрешается в константу, а не в переменную.
MIDL2174
выражение атрибута должно иметь тип integer, char, boolean или перечисление
Указанный тип не разрешается в допустимый тип коммутатора. Используйте целочисленный, символьный, байтовый, логический тип или тип перечисления либо тип, производный от одного из этих типов.
MIDL2175
недопустимая констант
Указанная константа выходит за пределы допустимого диапазона для указанного типа.
MIDL2176
атрибут не реализован; Игнорировать
Указанный атрибут не реализован в этом выпуске Microsoft RPC. Компилятор MIDL продолжает обработку IDL-файла так, как если бы атрибут отсутствует.
MIDL2177
Тип возвращаемого значения не должен быть производным от указателя [ссылка]
Возвращаемые функцией значения, определенные как типы указателей, должны быть указаны как [уникальные] или полные указатели. Нельзя использовать ссылочные указатели.
MIDL2178
Выражение атрибута должно быть именем переменной или выражением разыменования указателя в этом режиме. Необходимо указать параметр /ms_ext.
Компилятор IDL DCE требует, чтобы размер, связанный с атрибутом [size_is], был указан переменной или переменной указателя. Если вы хотите воспользоваться расширением Майкрософт, которое позволяет определять атрибут [size_is] константным выражением, нельзя использовать параметр компилятора /osf .
MIDL2179
Параметр не должен быть производным от рекурсивного некапсулированного объединения
Объединение должно включать дискриминант, поэтому у него не может быть другого союза в качестве элемента. Объединение может быть внедрено в другое объединение только в том случае, если оно является частью структуры, включающей дискриминант.
MIDL2180
Параметр binding-handle не может быть только [out]
Параметр дескриптора, определяемый компилятором MIDL в качестве дескриптора привязки для этой операции, должен быть параметром [in]. Параметры [out]-only не определены в заглушку клиента, а дескриптор привязки должен быть определен на клиенте.
MIDL2181
Указатель на дескриптор не может быть [unique] или [ptr]
Нельзя использовать уникальные и полные атрибуты указателя для указателя на дескриптор. Эти атрибуты допускают значение NULL, а дескриптор привязки не может иметь значение NULL. Используйте атрибут [ref] для получения параметра binding-handle от ссылочных указателей.
MIDL2182
Параметр, который не является дескриптором привязки, не должен быть производным от handle_t
Примитивный тип дескриптора handle_t не является допустимым типом данных, передаваемым по сети. Измените тип параметра на тип, отличный от handle_t, или удалите параметр.
MIDL2183
Обнаружен непредвиденный конец файла
Компилятор MIDL обнаружил конец файла, прежде чем ему удалось успешно разрешить все синтаксические элементы файла. Убедитесь, что завершающий символ правой скобки (}) присутствует в конце файла, или проверка синтаксис.
MIDL2184
К типу, наследуемого от handle_t, не должен применяться [transmit_as]
Примитивный тип дескриптора handle_t не передается по сети.
MIDL2185
[context_handle] не должно применяться к типу, к которому применен [дескриптор]
Атрибуты [context_handle] и [handle] нельзя применить к одному типу.
MIDL2186
[дескриптор] не должен указываться для типа, производного от void или void *
Тип, указанный с атрибутом [handle], может передаваться по сети, но тип void* не является передаваемым типом. Тип дескриптора должен разрешаться в тип, производный от переводимых базовых типов.
MIDL2187
Параметр должен иметь значение [in], [out] или [in,out] в этом режиме. Необходимо указать /ms_ext или /c_ext
Компилятор IDL DCE требует, чтобы все параметры имели явные параметры направления. Чтобы использовать расширения Майкрософт для DCE IDL, нельзя использовать параметр /osf , который переопределяет /ms_ext и /c_ext.
MIDL2188
передаваемый тип не может быть производным от void для [transmit_as], [represent_as], [wire_marshal], [user_marshal]
Атрибут [transmit_as] применяется только к типам указателей. Используйте тип void* вместо void.
MIDL2189
Значение void должно быть указано в первой и единственной спецификации параметра.
Ключевое слово void неправильно отображается с другими параметрами функции. Чтобы указать функцию без параметров, ключевое слово void должен быть единственным элементом списка параметров, как показано в следующем примере:
void Moo(void)
MIDL2190
[switch_is] должен быть указан только для типа, производного от некапсулированного объединения.
Неправильно применяется ключевое слово [switch_is]. Его можно использовать только с некапсулированными типами объединения.
MIDL2191
в этой версии не реализованы строковые структуры
DCE IDL позволяет атрибуту [string] применяться к структуре, элементы которой состоят только из символов, байтов или типов, которые разрешаются в символы или байты. Эта функция не поддерживается в Microsoft RPC. Атрибут [string] не может применяться к структуре в целом. Однако его можно применить к каждому отдельному массиву.
MIDL2192
тип switch может быть только целочисленным, char, логическим или перечислением
Указанный тип не разрешается в допустимый тип коммутатора. Используйте целое число, символ, байт, логический тип, тип перечисления или тип, производный от одного из этих типов.
MIDL2193
Не следует указывать [handle] для типа, производного от handle_t
Тип дескриптора должен быть определен с помощью одного и только одного из типов или атрибутов дескриптора. Используйте примитивный тип handle_t или атрибут [handle], но не оба типа. Определяемый пользователем тип дескриптора должен быть передаваемым, но тип handle_t не передается по сети.
MIDL2194
параметр, производный от handle_t, не должен быть параметром [out]
Дескриптор примитивного типа handle_t имеет смысл только для той стороны приложения, в которой он определен. Тип handle_t не передается по сети.
MIDL2195
выражение атрибута является производным от разыменования указателя [unique] или [ptr]
Хотя атрибуты [unique] и полные указатели позволяют указателям иметь значения NULL , выражение, определяющее атрибут размера или длины, никогда не должно иметь значение NULL . При использовании указателей MIDL ограничивает выражения указателями [ссылка].
MIDL2196
Для cpp_quote требуется /ms_ext
Атрибут cpp_quote является расширением Майкрософт для DCE IDL. Не используйте параметр компилятора MIDL /osf, который переопределяет /ms_ext.
MIDL2197
для uuid с кавычками требуется /ms_ext
Возможность указывать значение UUID в кавычках — это расширение Майкрософт для DCE IDL. Не используйте параметр компилятора MIDL /osf, который переопределяет /ms_ext.
MIDL2198
Тип возвращаемого значения не может быть производным от некапсулированного объединения
Неинкапсулированное объединение не может использоваться в качестве возвращаемого типа функции. Чтобы вернуть тип объединения, укажите тип объединения в качестве параметра [out] или [in, out].
MIDL2199
Тип возвращаемого значения не может быть производным от соответствующей структуры
Размер возвращаемого типа должен быть константой. В качестве возвращаемого типа нельзя указать структуру, содержащую соответствующий массив, даже если структура также включает описатель размера. Чтобы вернуть соответствующую структуру, укажите структуру в качестве параметра [out] или [in, out].
MIDL2200
[transmit_as] не должно применяться к типу, наследуемого от универсального дескриптора.
В этом выпуске атрибуты [handle] и [transmit_as] не могут быть объединены в одном типе.
MIDL2201
[дескриптор] не должен применяться к типу, к которому применено [transmit_as]
В этом выпуске атрибуты [handle] и [transmit_as] не могут быть объединены в одном типе.
MIDL2202
Недопустимый тип, указанный для объявления const
Объявления констант ограничены целочисленными, символьными, расширенными символами, строковыми и логическими типами.
MIDL2203
операнда для оператора sizeof не поддерживается
Компилятор MIDL поддерживает операцию sizeof только для простых типов. Указанный операнд не вычисляет целочисленный тип.
MIDL2204
это имя уже используется в качестве имени идентификатора const
Идентификатор ранее использовался для идентификации константы в объявлении const . Измените имя одного из идентификаторов, чтобы они были уникальными.
MIDL2205
несогласованное переопределение типа error_status_t
Тип error_status_t должен разрешаться в тип unsigned long. Другие определения типов использовать нельзя.
MIDL2206
[case] значение вне диапазона типа переключателя
Значение, связанное с регистром оператора switch, выходит за пределы диапазона для указанного типа переключателя. Например, эта ошибка возникает при использовании длинного целочисленного значения в операторе case для короткого целочисленного типа.
MIDL2207
параметр, производный от wchar_t, требует /ms_ext
Тип расширенных символов wchar_t является расширением Майкрософт для DCE IDL. Не используйте параметр компилятора MIDL /osf, который переопределяет /ms_ext
MIDL2208
этот интерфейс имеет только обратные вызовы
Обратные вызовы допустимы только в контексте удаленного вызова процедуры. Интерфейс должен включать по крайней мере один прототип функции для удаленного вызова процедуры, не включающий атрибут [callback].
MIDL2209
атрибут с избыточностью; Игнорировать
Указанный атрибут применялся несколько раз. Несколько экземпляров одного атрибута игнорируются.
MIDL2210
Тип дескриптора контекста, используемый для неявного дескриптора
Тип, определенный с помощью атрибута [context_handle], указан в качестве типа дескриптора в атрибуте [ implicit_handle]. Таким образом невозможно объединить атрибуты.
MIDL2211
конфликтующие параметры, указанные для [allocate]
Параметры, указанные для атрибута ACF [allocate], представляют конфликтующие директивы. Например, укажите параметр all_nodes или параметр single_node, но не оба варианта.
MIDL2212
ошибка при записи в файл
При записи в файл произошла ошибка. Это условие может быть вызвано ошибками, связанными с дискового пространства, дескрипторами файлов, ограничениями доступа к файлам и сбоями оборудования.
MIDL2213
тип переключателя не найден при определении объединения с использованием типа [switch_is]
Определение объединения не включает явный атрибут [switch_type]. Тип переменной, заданный атрибутом [switch_is], используется в качестве типа переключателя.
MIDL2214
семантическое проверка неполным из-за предыдущих ошибок
Компилятор MIDL выполняет два прохода по входным файлам для разрешения любых объявлений пересылки. Из-за ошибок, возникших во время первого прохода, проверка на наличие второго прохода не выполнена. Неотвеченные ошибки, связанные с объявлениями пересылки, могут по-прежнему присутствовать в файле.
MIDL2215
параметр handle или тип возвращаемого значения не поддерживается в процедуре [callback]
Процедура [callback] выполняется в контексте вызова от клиента к серверу и использует тот же дескриптор привязки, что и исходный вызов. Явные параметры дескриптора привязки или возвращаемые типы не разрешены в функциях обратного вызова.
MIDL2216
[ptr] не поддерживает псевдонимы в этой версии
Псевдоним возникает, когда данные доступны через несколько имен указателя или переменной. Удалите псевдоним. Дополнительные сведения см. в разделе Уникальные указатели.
MIDL2217
параметр уже определен как дескриптор контекста
Параметр ранее был определен как дескриптор контекста.
MIDL2218
[context_handle] не должен быть производным от handle_t
Три характеристики дескриптора: тип handle_t, атрибут [дескриптор] и атрибут [context_handle] являются взаимоисключающими. Одновременно к типу или параметру может применяться только одна характеристика.
MIDL2219
Размер массива превышает 65536 байт
На некоторых платформах Майкрософт максимальный размер передаваемых данных составляет 64 КБ. Измените приложение таким образом, чтобы все передаваемые данные соответствовали максимальному передаваемого размера.
MIDL2220
Размер структуры превышает 65536 байт
На некоторых платформах Майкрософт максимальный размер передаваемых данных составляет 64 КБ. Измените приложение таким образом, чтобы все передаваемые данные соответствовали максимальному передаваемого размера.
MIDL2221
Поле некапсулированного объединения не может быть другим некапсулированным объединением
Для объединения, передаваемых в рамках удаленного вызова процедуры, требуется связанный элемент данных , дискриминант, который выбирает руку объединения. Профсоюзы, вложенные в другие профсоюзы, не предлагают дискриминантных; в результате они не могут быть переданы в такой форме. Создайте структуру, состоящую из объединения и его дискриминанта.
MIDL2222
атрибуты указателя, примененные к внедренным массивам; Игнорировать
Атрибут указателя может применяться к массиву только в том случае, если массив является параметром верхнего уровня. Другие атрибуты указателя, применяемые к массивам, внедренным в другие структуры данных, игнорируются.
MIDL2223
[выделение] является недопустимым для передаваемого или представленного типа для [transmit_as], [represent_as], [wire_marshal] или [user_marshal]
Атрибуты [transmit_as] и [allocate] не могут одновременно применяться к одному типу. Атрибут [transmit_as] различает представленные и передаваемые типы, а атрибут [allocate] предполагает, что представленный тип совпадает с передаваемым типом.
MIDL2224
В этом режиме импорта необходимо указать [switch_type]
MIDL2225
[implicit_handle] тип undefined; предполагается, что универсальный дескриптор
Тип дескриптора, указанный в ACF, не определен в IDL-файле. Компилятор MIDL предполагает, что тип дескриптора разрешается в примитивный тип дескриптора handle_t. Добавьте атрибут [handle] в определение типа, если вы хотите, чтобы дескриптор вел себя как определяемый пользователем или универсальный дескриптор.
MIDL2226
Элемент array не должен быть производным от error_status_t
В этом выпуске Microsoft RPC тип error_status_t может отображаться только в качестве параметра или возвращаемого типа. Он не может отображаться в массивах.
MIDL2227
[выделение] недопустимо для типа, производного от дескриптора примитива, универсального или контекстного дескриптора
По умолчанию атрибут ACF [allocate] не может применяться к обработке типов.
MIDL2228
передаваемый или представленный тип не должен быть производным от error_status_t
В этом выпуске Microsoft RPC тип error_status_t нельзя использовать с атрибутом [transmit_as].
MIDL2229
дискриминант объединения не должен быть производным от поля с примененным к нему [ignore]
Объединение, используемое в удаленном вызове процедуры, должно быть связано с другим элементом данных, который называется дискриминантным, который выбирает руку объединения. Дискриминант должен быть передан. Атрибут [ignore] не может применяться к дискриминанту объединения.
MIDL2230
[nocode] игнорируется для стороне сервера, так как "/server none" не указан
Некоторые компиляторы IDL DCE создают ошибку при применении атрибута [nocode] к процедуре в интерфейсе, для которого создаются файлы заглушки сервера. Так как сервер должен поддерживать все операции, [nocode] не должен применяться к процедуре в этом режиме, или необходимо использовать параметр /server none компилятора MIDL, чтобы явно указать, что серверные подпрограммы не должны создаваться.
MIDL2231
нет удаленных процедур, указанных в интерфейсе, отличном от [локального]; Заглушки клиента или сервера не создаются
Предоставленный интерфейс не имеет удаленных процедур, поэтому будут создаваться только файлы заголовков.
MIDL2232
слишком много вариантов по умолчанию, указанных для инкапсулированного объединения
Инкапсулированное объединение может иметь только одно значение по умолчанию: arm.
MIDL2233
слишком много интерфейсов по умолчанию, указанных для coclass
Coclass может содержать не более двух [по умолчанию] членов: один для представления исходящего (исходного) интерфейса или dispinterface, а другой — для представления входящего интерфейса (приемника) или dispinterface.
MIDL2234
элементы с [defaultvtable] также должны иметь [источник]
Интерфейс defaultvtable создает второй исходный интерфейс для объекта, который позволяет приемникам получать события через V-таблицу.
MIDL2235
Спецификация объединения без полей недопустима
Профсоюзы должны иметь по крайней мере одно поле.
MIDL2236
значение вне диапазона
Указанное значение регистра выходит за пределы диапазона типа переключателя.
MIDL2237
[context_handle] должен применяться к типу указателя
Дескрипторы контекста всегда должны быть типами указателей. DCE указывает, что все дескрипторы контекста должны быть типом void *.
MIDL2238
Тип возвращаемого значения не должен быть производным от handle_t
handle_t не может быть возвращено.
MIDL2239
[handle] не должен применяться к типу, наследуемого от дескриптора контекста
Тип не может быть одновременно дескриптором контекста и универсальным дескриптором.
MIDL2240
Поле, наследующее от int, должно иметь описатель размера "small", "short" или "long" с "int"
Тип int не может быть перенесен в 16-разрядных системах, так как размер int может отличаться на разных компьютерах.
MIDL2241
поле не должно быть производным от типа void или void *
void и void * нельзя использовать в качестве типов параметров для удаленных процедур.
MIDL2242
поле не должно быть производным от структуры, содержащей битовые поля
Структуры, содержащие битовые поля, нельзя использовать в качестве параметров или возвращаемых типов для удаленных процедур.
MIDL2243
поле не должно быть производным от объединения, не допускающего RPC
Для передачи объединение должно быть указано как некапсулированное объединение или инкапсулированное объединение. Обычные профсоюзы C не имеют дискриминант, необходимый для передачи союза по сети.
MIDL2244
поле не должно быть производным от указателя на функцию
Указатели на функции не могут передаваться в удаленные процедуры. Указатели на функции указывают на код функции, и код функции не может передаваться по сети с помощью RPC.
MIDL2245
Не удается использовать [fault_status] для параметра и возвращаемого типа
Атрибут [fault_status] можно использовать только один раз для каждой процедуры. Атрибут [comm_status] можно использовать независимо друг от друга.
MIDL2246
Тип возвращаемого значения слишком сложный для режимов /Oi с использованием /Os
Большие возвращаемые типы, передаваемые по значению, могут обрабатываться только заглушками оптимизации /Os . Заглушки для этой подпрограммы будут созданы с помощью оптимизации /Os .
MIDL2247
универсальный тип дескриптора слишком велик для режимов /Oi с использованием /Os
Крупные универсальные типы дескрипторов, передаваемые по значению, могут обрабатываться только заглушками оптимизации /Os . Заглушки для этой подпрограммы будут созданы с помощью оптимизации /Os .
MIDL2248
[allocate(all_nodes)] в параметре [in,out] может привести к потере исходной памяти.
Использование [allocate(all_nodes)] в параметре [in, out] должно перераспределять непрерывную память для направления [out], что приводит к потере параметра [in]. Такое использование не рекомендуется.
MIDL2249
не может иметь указатель [ref] в качестве руки объединения
Опорные указатели всегда должны указывать на допустимую память, но объединение [in, out] с указателем на ссылку может возвращать указатель, если в направлении [in] используется другой тип.
MIDL2250
возврат дескрипторов контекста, не поддерживаемых для режимов /Oi, с помощью /Os
MIDL не поддерживает дескриптор контекста в полностью интерпретируемых режимах оптимизации. Переключение на оптимизацию в смешанном режиме.
MIDL2251
использование дополнительного параметра [comm_status] или [fault_status] не поддерживается для режимов /Oi, используя /Os
Атрибуты [comm_status] и [fault_status] могут обрабатываться только заглушками оптимизации /Os . Заглушки для этой подпрограммы будут созданы с помощью оптимизации /Os .
MIDL2252
использование неизвестного типа для [represent_as] или [user_marshal] не поддерживается для режимов /Oi, используя /Os
Использование атрибута [represent_as] с локальным типом, не определенным в IDL-файле или импортированным IDL-файлом, может обрабатываться только заглушками оптимизации /Os . Заглушки для этой подпрограммы будут созданы с помощью оптимизации /Os .
MIDL2253
Типы массивов с [transmit_as] или [represent_as] не поддерживаются в возвращаемом типе для режимов /Oi с использованием /Os
Возврат массива с применением [transmit_as] или [represent_as] может обрабатываться только заглушками оптимизации /Os . Заглушки для этой подпрограммы будут созданы с помощью оптимизации /Os .
MIDL2254
Типы массивов с [transmit_as] или [represent_as] не поддерживаются для режимов /Oi с использованием /Os
Это действие не поддерживается для полностью интерпретируемой оптимизации. Переключение на оптимизацию в смешанном режиме.
MIDL2255
[обратный вызов] требуется /ms_ext
Атрибут [callback] является расширением Майкрософт и требует включения параметра /ms_ext . Не компилируйте с параметром /osf, который переопределяет /ms_ext.
MIDL2256
Зависимость циклического интерфейса
Этот интерфейс использует себя (прямо или косвенно) в качестве базового интерфейса.
MIDL2257
В качестве корневого интерфейса можно использовать только IUnknown.
В настоящее время все интерфейсы должны иметь IUnknown в качестве корневого интерфейса.
MIDL2258
[IID_IS] может применяться только к указателям на интерфейсы
Атрибут [iid_is] можно применять только к указателям интерфейса, хотя их можно указать как указатели на IUnknown *.
MIDL2259
интерфейсы можно использовать только в конструкциях указателя на интерфейс
Имена интерфейсов не могут использоваться только в качестве базовых интерфейсов или указателей интерфейса.
MIDL2260
Указатели интерфейса должны иметь UUID/IID
Базовым типом выражения [iid_is] должен быть тип UUID/GUID/IID.
MIDL2261
для определений и объявлений за пределами текста интерфейса требуется /ms_ext
Размещение объявлений и определений за пределами любого текста интерфейса является расширением Майкрософт и требует использования параметра /ms_ext .
MIDL2262
Для нескольких интерфейсов в одном файле требуется /ms_ext
Использование нескольких интерфейсов в одном IDL-файле является расширением Майкрософт и недоступно при компиляции в режиме /osf .
MIDL2263
разрешен только один из [implicit_handle], [auto_handle]или [explicit_handle]
Каждый интерфейс может иметь только один из этих трех атрибутов.
MIDL2264
[implicit_handle] ссылается на тип, который не является дескриптором
Неявные дескрипторы должны иметь один из типов дескрипторов.
MIDL2265
[object] procs можно использовать только с "/env win32"
Интерфейсы с атрибутом [object] нельзя использовать с 16-разрядными средами.
MIDL2266
[обратный вызов] с параметром -env dos/win16 не поддерживается для /Oi, используя /Os
Обратные вызовы в 16-разрядных средах могут обрабатываться только заглушками оптимизации /Os . Заглушки для этой подпрограммы будут созданы с помощью оптимизации /Os .
MIDL2267
float/double не поддерживается в качестве параметра верхнего уровня для режима /Oi с использованием /Os
Типы float и double могут обрабатываться в качестве параметров только заглушками оптимизации /Os . Заглушки для этой подпрограммы будут созданы с помощью оптимизации /Os . Типы float и double в структурах, массивах или объединениях по-прежнему могут обрабатываться с помощью /Os.
MIDL2268
Указатели на дескрипторы контекста не могут использоваться в качестве возвращаемых значений
Дескрипторы контекста должны использоваться в качестве прямых возвращаемых значений, а не косвенных возвращаемых значений.
MIDL2269
процедуры в интерфейсе объекта должны возвращать HRESULT
Все процедуры в интерфейсе объекта, не имеющие атрибута -[local], должны возвращать SCODE HRESULT/.
MIDL2270
дублировать UUID
То же, что и идентификаторы UUID, должны быть уникальными.
MIDL2271
Интерфейсы [object] должны быть производными от другого интерфейса [object], например IUnknown
Наследование интерфейсов допускается только при использовании интерфейсов объектов.
MIDL2272
(асинхронный) интерфейс должен быть производным от другого (асинхронного) интерфейса
Интерфейсы объектов, как синхронные, так и асинхронные, должны быть производными от IUnknown или другого базового интерфейса OLE.
MIDL2273
Выражение [IID_IS] должно быть указателем на структуру IID
Базовым типом выражения [iid_is] должен быть тип UUID/GUID/IID.
MIDL2274
Тип [call_as] должен быть [локальной] процедурой
Целевой объект типа [call_as], если он определен, должен иметь значение [ local].
MIDL2275
undefined [call_as] не должны использоваться в интерфейсе объекта
Необходимо определить целевой объект типа [call_as]. Убедитесь, что вы предоставили call_as подпрограммы для вызывающих и вызываемых приложений.
MIDL2276
[auto_handle] не может использоваться с [encode] или [decode]
Атрибуты [ encode] и [ decode] можно использовать только с явными дескрипторами или неявными дескрипторами.
MIDL2277
обычные процедуры не допускаются в интерфейсе с [encode] или [decode]
Интерфейсы, содержащие процедуры [encode] или [decode], также не могут иметь удаленные процедуры.
MIDL2278
Соответствие или дисперсия верхнего уровня не допускаются при использовании [encode] или [decode]
Типы, имеющие соответствие или дисперсию верхнего уровня, не могут использовать сериализацию типов, так как невозможно обеспечить изменение размера или удлинение. Однако структурам, содержащим их, разрешено использовать сериализацию типов.
MIDL2279
Параметр [out] может не иметь "const"
Так как параметр [out] изменен, он не должен объявляться как константа sa.
MIDL2280
Возвращаемые значения могут не иметь "const"
Так как значение функции задается при возврате функции, это значение не должно объявляться как константа.
MIDL2281
Недопустимое использование атрибута "retval"
Убедитесь, что вы не использовали атрибут [необязательный] и что параметр [retval] является последним параметром в списке.
MIDL2282
несколько соглашений о вызовах недопустимы
К одной процедуре можно применить только одно соглашение о вызовах.
MIDL2283
атрибут недопустим в процедуре [object]
Приведенный выше атрибут применяется только к процедурам в интерфейсах, у которых нет атрибута [object].
MIDL2284
[out] Указатели интерфейса должны использовать двойное косвенное
Так как измененное значение является указателем на интерфейс, над указателем должен быть другой уровень косвенного обращения, чтобы его можно было вернуть.
MIDL2285
процедура используется дважды в качестве вызывающего в [call_as]
Данная [локальная] процедура может использоваться только один раз в качестве цели [call_as], чтобы избежать столкновений имен.
MIDL2286
[call_as] целевой объект должен иметь [локальный] в интерфейсе объекта
Целью [call_as] должна быть определенная [локальная] процедура в текущем интерфейсе.
MIDL2287
[code] и [nocode] не могут использоваться вместе
Эти два атрибута являются противоречивыми и не могут использоваться вместе.
MIDL2288
процедуры с атрибутами [maybe] или [message] могут не иметь параметров [out], или возвращаемые значения должны иметь тип HRESULT или error_status_t
Так как процедуры [возможно] никогда не возвращаются, получить возвращаемые значения невозможно.
MIDL2289
Необходимо использовать указатель на функцию
Хотя определения типов функций разрешены в режиме /c_ext , их можно использовать только в качестве указателей на функции. Они никогда не могут передаваться в качестве параметра или возвращаемого значения удаленной процедуры.
MIDL2290
Функции могут не передаваться в операции RPC
Функции и указатели функций не могут передаваться в качестве параметров или возвращаемых значений удаленных процедур.
MIDL2291
Hyper/double не поддерживается в качестве возвращаемого значения для режимов /Oi с использованием /Os
Возвращаемые значения Hyper и double могут обрабатываться только заглушками оптимизации /Os . Заглушки для этой подпрограммы будут созданы с помощью оптимизации /Os .
MIDL2292
#pragma pack(pop) без сопоставления #pragma pack(push)
#pragma pack(push) и #pragma pack(pop) должны отображаться в соответствующих парах. Указано по крайней мере одно слишком много #pragma pack(push)s.
MIDL2293
Строковые поля структуры должны иметь значение byte/char/wchar_t
Тип [string] может применяться только к структуре, все поля которой имеют тип byte или определение типа, эквивалентное byte.
MIDL2294
[notify] не поддерживается для режимов /Oi с использованием /Os
Атрибут [notify] может обрабатываться только заглушками оптимизации /Os .
MIDL2295
параметр handle или тип возвращаемого значения не поддерживается в процедуре в интерфейсе [object]
Дескрипторы не могут использоваться с интерфейсами [ object].
MIDL2296
ANSI C позволяет не указать только крайний левый массив, привязанный к
В соответствующем массиве ANSI C позволяет не указать только самый левый (наиболее значительный) массив. Если несколько измерений соответствуют, MIDL попытается поместить "1" в другие соответствующие измерения. Если другие измерения определены в другом определении типа, это невозможно. Попробуйте поместить все измерения массива в объявление массива, чтобы избежать этого. В любом случае остерегайтесь вычислений индексирования массивов, выполняемых компилятором; Может потребоваться выполнить собственные вычисления с использованием фактических размеров.
MIDL2297
Параметры объединения по значению не поддерживаются для режимов /Oi с использованием /Os
Это действие не поддерживается для полностью интерпретируемой оптимизации. Переключение на оптимизацию в смешанном режиме.
MIDL2298
Атрибут [версия] игнорируется в интерфейсе [object]
Атрибут [object] идентифицирует COM-интерфейс. Список атрибутов интерфейса для COM-интерфейса не может содержать атрибут [ version].
MIDL2299
Атрибут [size_is] или [max_is] недопустим в фиксированном массиве
Массивы фиксированного размера не могут использовать атрибуты size_is или max_is .
MIDL2300
[encode] или [decode] недопустимы в интерфейсе [object]
Атрибут [object] идентифицирует COM-интерфейс. Атрибуты [encode] и [ decode] обеспечивают сериализацию. Это значит, что вы можете предоставлять буферы и управлять ими для маршалирования и отмены маршалирования данных, однако нельзя выполнять сериализацию в COM-интерфейсах.
MIDL2301
[encode] или [decode] для типа требуется /ms_ext
Сериализация не является частью спецификации DCE-IDL. Это расширение Майкрософт, которое требует использования параметра командной строки /ms_ext .
MIDL2302
int не поддерживается в /env win16 или /env dos
16-разрядные платформы Майкрософт не поддерживают использование типа int в IDL-файле. Квалифицируйте тип intс небольшим, коротким или длинным.
MIDL2303
[bstring] может применяться только к указателю на "char" или "whchar_t"
Эта ошибка устарела. Он предоставляется только для обеспечения обратной совместимости.
MIDL2304
недопустимый атрибут для процедуры в интерфейсе [object]
Указанный атрибут не допускается в процедуре в COM-интерфейсе.
MIDL2305
недопустимый атрибут в интерфейсе [object]
Указанный атрибут не допускается в COM-интерфейсе.
MIDL2306
слишком много параметров или слишком большой стек для режимов /Oi с помощью /Os
Это предупреждение устарело. Он предоставляется только для обеспечения обратной совместимости. Это означает, что вызов удаленной процедуры приводит к тому, что размер стека превышает 64 K.
MIDL2307
нет атрибутов в определении типа файла ACF, поэтому не оказывает влияния
IDL-файл должен содержать все операторы typedef, которые не имеют атрибутов. Они не должны встречаться в файлах ACF. В этом случае компилятор MIDL интерпретирует их как избыточные и игнорирует.
MIDL2308
соглашения о вызовах, отличные от __stdcall или __cdecl, не поддерживаются для режимов /Oi с использованием /Os
Соглашения о вызовах, такие как __pascal или __fastcall изменить формат стека. Режимы /Oi поддерживают только соглашения о вызовах __stdcall и __cdecl . Если необходимо использовать другие соглашения о вызовах, используйте режим /Os .
MIDL2309
Слишком много методов делегирования в интерфейсе, требуется Windows 2000 или более поздней версии
Один интерфейс может наследовать от другого. В этом случае методы базового интерфейса считаются делегированными. Ни один производный интерфейс не может содержать более 256 делегированных методов.
MIDL2310
auto handles not supported with /env mac or /env powermac
При компиляции IDL-файла для PowerMac нельзя использовать автоматические дескрипторы привязки. Необходимо указать явные или неявные дескрипторы.
MIDL2311
инструкции за пределами блока библиотеки являются недопустимыми в режиме совместимости mktyplib
При компиляции IDL-файла может потребоваться указать параметр командной строки /mktyplib203 .

Примечание.
Средство Mktyplib.exe устарело. Вместо этого используйте компилятор MIDL.


MIDL2312
недопустимый синтаксис, если не используется режим совместимости mktyplib
При компиляции IDL-файла может потребоваться указать параметр командной строки /mktyplib203 .

Примечание.
Средство Mktyplib.exe устарело. Вместо этого используйте компилятор MIDL.


MIDL2313
недопустимое определение, должно использовать typedef в режиме совместимости mktyplib
При компиляции IDL-файла может потребоваться указать параметр командной строки /mktyplib203 .

Примечание.
Средство Mktyplib.exe устарело. Вместо этого используйте компилятор MIDL.


MIDL2314
явный атрибут указателя [ptr] [ссылка] игнорируется для указателей интерфейса
Указатели на интерфейсы не могут иметь атрибуты IDL.
MIDL2315
Режимы /Oi не реализованы для PowerMac, переключение на /Os
MIDL2316
Недопустимый тип выражения, используемый в атрибуте
Значение по умолчанию для указателя должно быть константой.
MIDL2317
Недопустимый тип, используемый в канале
Каналы ограничены базовыми типами данных IDL. Например, нельзя указать канал массивов.
MIDL2318
в процедуре используются каналы, с помощью /Oicf
Выбранный режим не поддерживает каналы. Компилятор MIDL обнаружил использование одного или нескольких каналов в интерфейсе. Таким образом, он компилируется IDL-файл в режиме /Oicf .
MIDL2319
в процедуре есть атрибут , который требует использования параметра /Oif, переключения режимов
Необходимо скомпилировать [асинхронные] процедуры в режиме /Oif .
MIDL2320
конфликтующие требования к оптимизации, не удается оптимизировать
Эта ошибка часто указывает на то, что вы указали режимы компилятора MIDL /Os и /Oi (или вариант / Oi). Это также может означать, что функции, указанные в файлах IDL и ACL, требуют использования обоих режимов. Для оптимизации необходимо выбрать один или другой режим.
MIDL2321
Каналы не могут быть элементами массива, элементами структур или объединений
Типы данных канала могут быть только параметрами верхнего уровня.
MIDL2322
недопустимое использование канала
Нельзя использовать каналы с атрибутами [transmit_as], [represent_as] или [user_marshal]. Кроме того, каналы нельзя использовать в качестве возвращаемых типов.
MIDL2323
для функции требуется вариант расширенной интерпретируемой оптимизации; use -Oicf
Эта ошибка указывает, что параметры командной строки компилятора MIDL, такие как /robust , требуют использования режима /Oicf .
MIDL2324
для функции требуется вариант расширенной интерпретируемой оптимизации; use -Oicf
Это предупреждение указывает, что параметры командной строки компилятора MIDL, такие как /robust , требуют использования режима /Oicf .
MIDL2329
параметр оптимизации постепенно сменяется, используйте -Oic
Режим оптимизации /Oi1 был указан в командной строке MIDL. Этот режим больше не поддерживается, и вместо него следует использовать /Oicf .
MIDL2330
параметр оптимизации постепенно сменяется, используйте -Oicf
Режим оптимизации /Oi2 был указан в командной строке MIDL. Этот режим больше не поддерживается, и вместо него следует использовать /Oicf .
MIDL2331
параметр оптимизации постепенно сменяется, используйте -ic
Режим оптимизации i1 был указан в атрибуте [optimize] ACF. Этот режим больше не поддерживается, и вместо него следует использовать icf.
Пример файла ACF:
[optimize("i1")] roo();    //MIDL 2331
MIDL2332
параметр оптимизации постепенно сменяется, используйте -icf
Режим оптимизации i2 был указан в атрибуте ACF [optimize]. Этот режим больше не поддерживается, и вместо него следует использовать icf.
Пример файла ACF:
[optimize("i2")] roo();    //MIDL 2332
MIDL2333
Параметры -old и -new устарели, используйте -oldtlb и -newtlb.
Это сообщение устарело и больше не опущено MIDL.
MIDL2334
недопустимое значение аргумента
Допустимые варианты параметра командной строки /O включают /Os, /Oi, /Oic, /Oicf и /Oif.
MIDL2335
Недопустимый тип выражения в константе
Выражение не вычисляет константу.
MIDL2336
Недопустимый тип выражения в перечислении
Перечисляемое значение в определении перечисления не вычисляется как целочисленный тип.
MIDL2337
объявление неудовлетворительного перенаправления
Компилятору MIDL не удалось разрешить определение прямого объявления.
MIDL2338
переключатели являются противоречивыми
Параметры командной строки /osf и /ms_ext нельзя использовать при компиляции IDL-файла. Вы должны выбрать один или другой.
MIDL2339
MIDL не может создать сведения о HOOKOLE для объединения без RPC
Эта ошибка устарела. Он предоставляется исключительно для обеспечения обратной совместимости.
MIDL2340
Выражение регистра не найдено для объединения
Каждое поле объединения должно иметь оператор case с константным выражением.
MIDL2341
[user_marshal] и [wire_marshal] не поддерживаются с флагами -Oi и -Oic, используйте -Os или -Oicf.
Атрибуты [user_marshal] и [wire_marshal] требуют специальных функций оптимизации, доступных только в /Oicf (прокси-сервер без кода с строками быстрого форматирования) или /Os (маршалинг в смешанном режиме).
MIDL2342
каналы нельзя использовать с сериализацией данных, т. е. [кодирование] и/или [декодирование]
Нельзя передавать каналы в качестве параметров процедурам, имеющим атрибуты [encode] или [decode].
MIDL2343
Все указатели интерфейса канала должны использовать одно косвенное обращение
Таким образом нельзя использовать указатель на указатель на интерфейс канала.
MIDL2344
[iid_is()] не может использоваться с указателем интерфейса канала
Это сообщение устарело. Это сообщение больше не используется компилятором.
MIDL2345
Недопустимый или неприменимый параметр -lcid
Указанный локальный идентификатор (LCID) является недопустимым.
MIDL2346
указанный код кода отличается от предыдущей спецификации
Значения, указанные в параметрах /lcid и [lcid], отличаются. Компилятор MIDL будет использовать последний определенный.
MIDL2347
Importlib не допускается за пределами блока библиотеки
Все инструкции [importlib] должны находиться в блоке [library].
MIDL2348
Недопустимое значение с плавающей запятой
Эта ошибка не должна выдаваться MIDL. Если вы видите эту ошибку, сообщите об ошибке в корпорацию Майкрософт, предоставив все файлы, необходимые для воспроизведения ошибки, включая IDL-файлы, файлы ACF, заголовки и т. д.
MIDL2349
недопустимый элемент
Процедуры не могут быть членами библиотеки.
MIDL2350
возможный недопустимый элемент
Чтобы быть допустимым членом библиотеки, элемент библиотеки должен быть модулем, dispinterface, coclass, оператором if, структурой, объединением, перечислением или объявлением вперед.
MIDL2351
несоответствие типов каналов и интерфейсов
Это сообщение устарело.
MIDL2352
Параметры string, различных массивов, соответствующего массива и полного указателя могут быть несовместимы с параметрами канала во время выполнения
Метод, объединяющий одну или несколько строк [in], различные массивы, соответствующие массивы и полные параметры указателя и любой параметр канала [in], приводит к созданию заглушки, которая выполняется только в последовательностях протокола ncacn_* и ncalrpc на компьютерах Windows. Использование заглушки для выполнения вызовов последовательностей протокола ncadg_* или приема вызовов от других поставщиков RPC OSF DCE может привести к сбоям на сервере во время выполнения. Эта ошибка возникает начиная с Windows Server 2003.
MIDL2353
параметр должен находиться в
Асинхронные дескрипторы должны иметь параметры [in].
MIDL2354
Тип параметра объекта [async] должен быть двойным указателем на интерфейс
Параметр должен иметь тип IAsyncManager **.
MIDL2355
Неправильный тип асинхронного дескриптора
Тип дескриптора должен быть IAsyncManager или тип, производный от IAsyncManager.
MIDL2356
Параметр "внутренний" включает неподдерживаемые функции, используйте их с осторожностью
Избегайте использования этого параметра.
MIDL2357
Асинхронные процедуры не могут использовать автоматический дескриптор
Для процедур с атрибутом [async] требуются явные дескрипторы.
MIDL2358
error_status_t должны иметь как [comm_status], так и [fault_status]
Процедура была указана с атрибутами IDL [возможно] или [message], но тип возвращаемого значения имеет только атрибуты ACF [comm_status] или [fault_status]. Оба атрибута ACF являются обязательными.
Пример файла ACF:
[comm_status] roo();    //MIDL 2358
[fault_status] bar();    //MIDL 2358
[comm_status, fault_status] baz();    //OK
MIDL2359
эта конструкция разрешена только в блоке библиотеки
Модуль может находиться только в блоке библиотеки.
MIDL2360
Недопустимое переопределение типа
Новый тип рекурсивно определен для несуществующего типа.
Пример
typedef roo roo[10];    //MIDL 2360
MIDL2361
процедуры с атрибутом [vararg] должны иметь параметр SAFEARRAY(VARIANT); param order is [vararg], [lcid], [retval]
Большинство параметров для процедур с атрибутом [vararg] должны находиться перед параметром SAFEARRAY(VARIANT). Должен присутствовать параметр SAFEARRAY(VARIANT). Если список параметров содержит параметр с атрибутом [lcid], он должен следовать параметру SAFEARRAY(VARIANT). Если список параметров содержит параметр с атрибутом [retval], он должен возникать после параметра с атрибутом [lcid].
MIDL2363
слишком много методов в интерфейсе, требуется Windows 2000 или более поздней версии
Компилятор MIDL не допускает более 1024 методов в интерфейсе при компиляции в режиме /Oicf .
MIDL2364
переключение в настоящее время поэтапное отключение
Следующие параметры устарели: /hookole, /env win16 и /env.
MIDL2365
не может быть производным от IAdviseSink, IAdviseSink2 или IAdviseSinkEx
Эти интерфейсы нельзя расширить.
MIDL2366
Не удается назначить значение по умолчанию
Назначение значения по умолчанию параметру разрешено в Visual Basic, но не в C++. Если вы используете C++, значение по умолчанию игнорируется.
MIDL2367
Создание библиотеки типов для DOS,Win16/MAC не поддерживается
MIDL не поддерживает 16-разрядные библиотеки типов.
MIDL2368
ошибка при создании библиотеки типов, игнорируется
При создании библиотеки типов произошла некритичная ошибка.
MIDL2369
Превышен размер стека для /Oi с использованием /Os
Режим оптимизации -Oi ограничен 128 байтами пространства стека для параметров. Компилятор автоматически переключился в режим оптимизации ос, чтобы обойти это ограничение.
Чтобы избежать этого предупреждения, используйте режимы оптимизации -Oicf или -Os. Режим оптимизации можно изменить в командной строке, указав -Oicf или -Os вместо -Oi или добавив атрибут [optimize9"icf")] или optimize[("s")] в функцию в файле ACF.
Это предупреждение обычно возникает при передаче больших структур в качестве параметров по значению. Требуемый размер стека можно уменьшить, передав указатель на структуру.
Пример
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
для использования параметра /robust требуется /Oicf, переключение режимов
Компиляция должна выполняться в режиме /Oicf при указании параметра /robust в командной строке.
MIDL2371
Указан неправильный диапазон
Наибольшее значение, указанное в атрибуте [range], меньше наименьшего значения.
Пример
void roo([range(3,2)] int a);    //MIDL 2371
MIDL2372
недопустимое сочетание параметров [in] only и [out] для интерфейса [async_uuid]
Для интерфейса этого типа разрешены только простые сочетания атрибутов с параметрами [in] или [out].
MIDL2373
Платформы DOS, Win16 и MAC не поддерживаются с /robust
MIDL поддерживает переключатель /robust в Microsoft Windows 2000 или более поздней версии.
MIDL2374
поддержка прокси-серверов без заглушки в стиле NT 3.51 для интерфейсов объектов будет прекращена; используйте /Oif.
Этот режим устарел. Используйте /Oif или /Oicf.
MIDL2375
[encode] или [decode] с параметром /robust требует /Oicf
Сериализация не может быть выполнена, если указан параметр /robust .
MIDL2377
указанные конфликтующие атрибуты
Указаны как [context_handle_serialize], так и [context_handle_noserialize].
MIDL2378
[serialize], [noserialize] можно применить к context_handles
Атрибуты ACF [context_handle_serialize] или [context_handle_noserialize] можно применять только к типам, которые являются дескрипторами контекста.
Пример IDL-файла:
typedef /*[context_handle] */ void *PV;    //Note: PV is *not* a context handle.
Пример файла ACF:
typedef [context_handle_serialize] PV;    //MIDL 2378
MIDL2379
Компилятор достиг ограничения для представления строки формата. Советы см. в документации.
Компилятор MIDL имеет ограничение в 64 КБ для строк форматирования. Эта ошибка обычно возникает, когда IDL-файлы включают другие файлы IDL. Составной IDL-файл, созданный всеми операторами include, превышает ограничения таблиц представлений типов интерпретатора механизма маршалинга. Попробуйте использовать директиву import, а не директиву include в IDL-файлах. Дополнительные сведения см. в статье Импорт системных файлов заголовков, включение и импорт.
MIDL2380
Формат провода может быть неправильным. Возможно, вам потребуется использовать -ms_conf_struct, см. документацию для получения рекомендаций
Компилятору MIDL не удалось создать передаваемый формат для данных. Один из распространенных способов получить эту ошибку — определить ms_conf_struct внутри сложной структуры.
MIDL2381
размер стека или смещение, превышающее ограничение в 64 КБ. Советы см. в документации.
Вызов приводит к стеку размером более 64 КБ. Попробуйте передать данные небольшими блоками.
MIDL2382
режим интерпретатора, принудительный для 64-разрядной платформы
Для 64-разрядных платформ требуется режим компиляции /Oicf.
MIDL2383
Размер элемента массива превышает ограничение в 64 КБ.
Размер всех элементов массива должен быть меньше 64 КБ.
MIDL2384
в методе может быть только один параметр [Icid], и он должен быть последним или вторым, если последний параметр имеет [retval]
Параметр с атрибутом [lcid] должен быть последним. Единственным исключением является параметр с атрибутом [retval]. При возникновении обоих параметров второй по последний параметр в списке параметров должен иметь атрибут [ lcid]. Последний параметр должен иметь атрибут [retval].
MIDL2385
неправильный синтаксис для midl_pragma
Компилятор MIDL обнаружил неизвестная синтаксическая ошибка в инструкции midl_pragma.
MIDL2386
__int3264 не поддерживается в режиме /osf
Если вам нужно использовать __int3264, выполните компиляцию в режиме /ms-ext.
MIDL2387
Неразрешенный символ в библиотеке типов
Компилятору не удалось разрешить формальное объявление или тип, на который ссылается ссылка, в библиотеке типов.
MIDL2388
асинхронные каналы не могут быть переданы по значению
Асинхронные каналы должны передаваться по ссылке или по адресу.
MIDL2389
смещение параметров превышает ограничение в 64 КБ для интерпретируемых процедур
Эта ошибка обычно означает, что процедура имеет слишком много параметров.
MIDL2390
Недопустимый элемент массива
Каналы нельзя использовать в качестве элементов массива.
MIDL2391
Члены dispinterface должны быть методами, свойствами или интерфейсами
Dispinterface не может содержать определения типов, структуры, перечисления или объединения.
MIDL2392
Процедура [local] без [call_as]
Для процедур объектов с атрибутом [local] также требуется атрибут [call_as].
MIDL2393
многомерный вектор, переключение на /Oicf
Режим оптимизации /Os не поддерживает многомерные массивы нефиксированного размера. Компилятор автоматически переключил режим оптимизации на /Oicf для этой функции.
Это предупреждение можно подавить глобально, изменив режим компилятора, указав параметр /Oicf в командной строке MIDL или используя предупреждение midl_pragma (отключить 2393) в IDL-файле. Режим оптимизации можно изменить для отдельной функции, добавив атрибут [optimize("icf")] в функцию в файле ACF.
В следующем примере показано это предупреждение:
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
Тип или конструкция не поддерживаются в блоке библиотеки, так как отсутствует Oleaut32.dll поддержка полиморфных типов размером 64 КБ
Автоматизация OLE не поддерживает полиморфные типы (например, _int3264, INT_PTR и т. д.). Эти типы имеют несовместимые представления данных между 32-разрядными и 64-разрядными платформами. Удаленный вызов завершится ошибкой во время выполнения на 64-разрядных платформах.

Примечание.
Обратите внимание, что с выпуска Windows 2000 64-разрядные файлы TLB поддерживаются OLE-автоматизацией путем преобразования 32-разрядной информации О TLB во время выполнения. Поэтому MIDL поддерживает только 32-разрядное создание TLB.


Если MIDL используется только для создания файла заголовка, параметр /notlb подавляет создание TLB-файла.

MIDL2396
старый код интерпретатора, создаваемый для 64b
Эта ошибка устарела. Если вы видите эту ошибку, сообщите об ошибке в корпорацию Майкрософт, предоставив ваши IDL-файлы, файлы ACF и полную строку midl-командной строки.
MIDL2397
параметр компилятора больше не поддерживается
Указанные коммутаторы или коммутаторы больше не поддерживаются.
MIDL2398
Не удается выполнить подсистему MIDL
Начиная с выпуска Windows 2000 (MIDL версии 5.03.279) компилятор MIDL реализуется с использованием двух исполняемых файлов: Midl.exe (драйвер) и Midlc.exe (подсистема компилятора). Эта ошибка указывает, что Midl.exe не может запустить Midlc.exe. Убедитесь, что Midlc.exe находится в том же каталоге, что и Midl.exe, и что они имеют ту же версию.
Ошибка могла быть вызвана копированием Midl.exe, но не Midlx.exe из последнего дистрибутива. Запустите midl и (или ) midlc в командной строке без параметров, чтобы увидеть номер версии исполняемого файла.
MIDL2399
Недопустимые команды от драйвера
Начиная с выпуска Windows 2000 (MIDL версии 5.03.279) компилятор MIDL реализуется с использованием двух исполняемых файлов: Midl.exe (драйвер) и Midlc.exe (обработчик компилятора). Эта ошибка означает, что временный файл, используемый для передачи команд из Midl.exe в Midlc.exe, отсутствует или поврежден. Убедитесь, что Midlc.exe находится в том же каталоге, что и Midl.exe, и что они имеют ту же версию.
Ошибка могла быть вызвана попыткой запустить Midlc.exe напрямую или копированием Midl.exe, но не Midlc.exe из последнего дистрибутива. Запустите midl и/или midlc в командной строке без параметров, чтобы просмотреть номер версии исполняемого файла.
MIDL2400
Для ole-автоматизации необязательными параметрами должны быть VARIANT или VARIANT *
Ole Automation требует, чтобы все [необязательные] параметры были типа VARIANT или VARIANT*.
При автоматизации OLE использование параметров, отличных от VARIANT, может привести к сбою вызова во время выполнения или передаче неопределенных данных для параметров [необязательно].
MIDL2401
[значение по умолчанию] применяется к типам, не-VARIANT и [необязательным]. Удалите [необязательно]
Атрибут [defaultvalue] подразумевает [необязательный]. Атрибут [ необязательный] не требуется.
MIDL2402
Атрибут [необязательный] неприменим за пределами блока библиотеки
Функциональные возможности, подразумеваемые атрибутом [ optional], не применяются к прокси-посредникам, созданным для интерфейса за пределами блока библиотеки.
MIDL2403
Тип данных параметра [Icid] должен быть длинным.
Ole Automation требует, чтобы параметры с атрибутом [Icid] были типа long.
MIDL2404
Процедуры с [propput], [propget] или [propref] не могут иметь более одного обязательного параметра после [необязательного]
После последнего параметра с [необязательным] при использовании [propput], [propget] или [ propputref] не может быть более одного параметра без [необязательного].
MIDL2405
[comm_status] или [fault_status] с маринованием требуется -Oicf
Старый режим оптимизации -Oi не поддерживает процедуры или параметры с [ comm_status] или [ fault_status] с маринованием (то есть с использованием [ encode] и/или [ decode]).
Это предупреждение можно отключить глобально, указав параметр -Oicf в командной строке MIDL или для отдельной функции, добавив атрибут [optimize("icf:)] в функцию в файле ACF.
Как правило, режим оптимизации -Oicf рекомендуется использовать вместо режима -Oi .
MIDL2406
Несоответствие версий драйвера midl и компилятора
Начиная с выпуска Windows 2000 (MIDL версии 5.03.279) компилятор MIDL реализуется с использованием двух исполняемых файлов: Midl.exe (драйвер) и Midlc.exe (обработчик компилятора). Эта ошибка означает, что версия Midl.exe не соответствует версии Midlc.exe.
Ошибка могла быть вызвана копированием Midl.exe, но не Midlc.exe из последнего дистрибутива. Запустите midl и/или midlc в командной строке без параметров, чтобы просмотреть номер версии исполняемого файла.
MIDL2407
Промежуточный файл не указан: используйте Midl.exe
Начиная с выпуска Windows 2000 (MIDL версии 5.03.279) компилятор MIDL реализуется с использованием двух исполняемых файлов: Midl.exe (драйвер) и Midlc.exe (обработчик компилятора). Эта ошибка указывает на то, что Midlc.exe выполнялся напрямую вместо использования Midl.exe.
MIDL2408
проблема обработки с параметром в процедуре
Эта ошибка может возникать при импорте данных из подсистемы балансировки нагрузки и при недопустимом параметре процедуры.
Если вы видите эту ошибку, сообщите об ошибке в корпорацию Майкрософт. Укажите IDL-файлы, файлы ACF, TLB-файл и полную командную строку MIDL.
MIDL2409
Обработка проблемы с полем в структуре
Эта ошибка может возникать при импорте данных из подсистемы балансировки нагрузки, а также при том, что структура имеет недопустимую структуру или поле объединения.
Если вы видите эту ошибку, сообщите об ошибке в корпорацию Майкрософт. Укажите IDL-файлы, файлы ACF, TLB-файл и полную командную строку MIDL.
MIDL2410
Обнаружено внутреннее несоответствие компилятора: недопустимое смещение строки формата. Дополнительные сведения см. в документации.
Компилятор MIDL обнаружил недопустимое значение во внутренних структурах данных. Это может быть вызвано рекурсивными структурами или нарушением компилятором собственных ограничений представления внутренних данных. Чтобы определить и (или) обойти проблему, попробуйте упростить IDL-файл. Это можно сделать путем упрощения сложных параметров и рекурсивных структур данных или уменьшения размера IDL-файла путем его разделения. Это сообщение может сопровождаться диагностической распечаткой с дополнительными сведениями о проблеме.
Если вы видите эту ошибку, сообщите об ошибке в корпорацию Майкрософт. Укажите IDL-файлы, файлы ACF, полную командную строку MIDL и выходные данные диагностики, если таковые есть.
MIDL2411
Обнаружено внутреннее несоответствие компилятора: недопустимое смещение типа. Дополнительные сведения см. в документации.
Компилятор MIDL обнаружил недопустимое значение во внутренних структурах данных. Это может быть вызвано рекурсивными структурами или нарушением компилятором собственных ограничений представления внутренних данных. Чтобы определить и (или) обойти проблему, попробуйте упростить IDL-файл. Это можно сделать путем упрощения сложных параметров и рекурсивных структур данных или уменьшения размера IDL-файла путем его разделения. Это сообщение может сопровождаться диагностической распечаткой с дополнительными сведениями о проблеме.
Если вы видите эту ошибку, сообщите об ошибке в корпорацию Майкрософт. Укажите IDL-файлы, файлы ACF, полную командную строку MIDL и выходные данные диагностики, если таковые есть.
MIDL2412
Синтаксис SAFEARRAY(roo) не поддерживается за пределами блока библиотеки. Используйте LPSAFEARRAY для прокси-сервера.
Явно типизированные файлы SAFEARRAY не допускаются за пределами блока библиотеки. Вместо этого используйте LPSAFEARRAY.
В следующем примере показана эта ошибка:
void roo(SAFEARRAY(long) *a); //MIDL2412 when outside a library block
void roo(LPSAFEAEEAY a);         //OK
MIDL2413
битовые поля не поддерживаются
Битовые поля в стиле C не поддерживаются MIDL. Это относится как к поколению прокси-сервера, так и к генерации TLB.
MIDL2414
Типы с плавающей запятой или сложные возвращаемые типы с [decode] не поддерживаются в -Oicf, используя -OI
Процедуры с типом возвращаемых значений с плавающей запятой или типами структуры или объединения не поддерживаются в собирание стиля -Oicf. Обходной вариант для 32-разрядной версии является использование режима оптимизации -Oi при сериализации данных (с помощью [encode] и /или [decode]). Тем не менее, так как старый интерпретатор стиля -Oi и поддержка пиклинга планируется поэтапно вывести из эксплуатации после выпуска Windows 2000, настоятельно рекомендуется использовать указатели в качестве решения этой проблемы. Кроме того, обратите внимание, что обычно изменение метода интерфейса для использования указателя [out, ref] вместо возвращаемого значения, вызывающего проблему, является полностью обратной совместимостью по сети и может быть легко скрыта на уровне приложения.
Это предупреждение можно отключить глобально, указав параметр -Oi в командной строке MIDL или для отдельной функции, добавив атрибут [optimize("i")] в функцию в файле ACF.
В следующем примере показана проблема:
roo.idl:
double GetDouble();
roo.acf:
[decode] GetDouble();
Один из вариантов обойти это ограничение — передать параметр [out] для хранения результата вместо использования возвращаемого значения:
roo.idl:
void GetDouble([out] double *result); //top level pointer is a [ref] pointer
roo.acf:
[decode] GetDouble();
Как упоминалось ранее, описанное выше решение хорошо подходит не только для новых интерфейсов, но и для обхода старых интерфейсов. Представление нового аргумента out совпадает с представлением для возвращаемого значения (примечание void в качестве нового возвращаемого значения).
MIDL2415
тип возвращаемого значения не поддерживается для 64-разрядной версии при использовании [decode]
Процедуры с плавающей запятой или возвращаемыми типами структуры или объединения не поддерживаются в 64-разрядном режиме при выполнении сериализации данных (с использованием [ encode] и/или [ decode]). Это связано с тем, что интерпретатор -Oi и сериализатор данных старого стиля не поддерживаются на 64-разрядной платформе. Дополнительные сведения см. в описании MIDL2414.
В следующем примере показана эта ошибка:
roo.idl:
double GetDouble();
roo.acf:
[decode] GetDouble();
Следующее рекомендуется как для новых, так и для старых интерфейсов. Используйте параметр [out] для хранения результата вместо возвращаемого значения:
roo.idl:
void GetDouble([out] double *result); //top level pointer is a [ref] pointer.
roo.acf:
[decode] GetDouble();
Обратите внимание, что это решение полностью совместимо с обратной совместимостью по проводу, так как проводное представление указателя [ref, out] или double совпадает с представлением двойника.
MIDL2416
передаваемый тип не может содержать полный указатель на [wire_marshal] или [user_marshal]
Типы с атрибутами [ wire_marshal] или [ user_marshal] могут не содержать полных указателей ([ ptr]). Вместо этого используйте [ unique] или [ ref].
В следующем примере показана эта ошибка:
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
передаваемый тип должен быть указателем или иметь константный размер для [wire_marshal] и [user_marshal]
Типы верхнего уровня с атрибутами [ wire_marshal] или [ user_marshal] должны иметь четко определенный размер во время компиляции. Они не могут быть или содержать соответствующие массивы или массивы разного размера.
В следующем примере показана эта ошибка:
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
процедуры с [propget] должны иметь по крайней мере один параметр или возвращаемое значение.
Процедуры с атрибутом [propget] должны иметь некоторые средства возврата значения свойства. Они должны иметь по крайней мере один параметр [out] или возвращаемое значение.
MIDL2461
Атрибут [readonly] был применен на уровне метода.
Атрибут [readonly] может применяться только на уровне параметров.
MIDL2465
Структуры, содержащие соответствующие массивы, должны передаваться по ссылке
Параметры верхнего уровня в RPC должны иметь четко определенный размер во время компиляции. Они не могут быть, а также содержать соответствующий массив или массив разного размера. Кроме того, пользователи не могут кодировать и декодировать тип без четко определенного размера. Приложения должны передавать соответствующую структуру или соответствующую переменную структуру по ссылке.
В следующем примере показана эта ошибка:
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
Код> системной ошибки внутреннего компилятора <— компилятор не может продолжить работу по неизвестной причине. Обходной путь см. в документации.
Компилятору не удалось продолжить работу, и причина ошибки неизвестна. Шестнадцатеричный номер ошибки является идентификатором системной ошибки. Возможно, компиляция завершилась сбоем из-за внешней проблемы, например из-за нехватки памяти. В этом случае дополнительные сведения можно найти в winerror.h или Ntstatus.h.
Эта ошибка обычно возникает в двух ситуациях:
  • Компилятору MIDL не удалось восстановиться после обнаружения ошибки в IDL-файле. Если MIDL вернул какие-либо сообщения об ошибках, связанные с файлом IDL, попробуйте исправить их и перекомпилировать. Если сообщений об ошибках нет, возможно, компилятор завершился ошибкой, прежде чем сообщить об ошибке. Найдите синтаксическую ошибку в строке, для которой сообщается внутренняя ошибка компилятора.
  • Компилятору MIDL не удалось создать правильный код при заданном параметре оптимизации. Попробуйте изменить режимы компилятора, выполнить компиляцию в смешанном режиме оптимизации (/Os) или удалить все оптимизации. Или выполните повторную компиляцию с помощью флага /NO_FORMAT_OPT для подавления оптимизации по умолчанию MIDL для дескрипторов процедур и типов.
Иногда эта ошибка возникает, даже если IDL-файл является правильным и параметры оптимизации не используются. В этом случае попробуйте переписать раздел кода рядом с тем местом, где сообщалось об ошибке, удалив все последние изменения, упростив или переуположив типы данных, изменив прототипы, или начните комментировать части IDL-файла, чтобы найти код проблемы.
Если ни один из этих вариантов не работает или вы считаете, что проблема может быть связана с ошибкой в Midl.exe, сообщите корпорации Майкрософт все соответствующие сведения.