Переключатель /robust

Параметр /robust сообщает компилятору MIDL о необходимости генерировать дополнительные сведения о проверке ошибок, которые подсистема NDR использует для выполнения проверок целостности во время выполнения.

midl /robust {/Oicf | /Oif }

Параметры переключения

/Oicf

/Oif

Эти коммутаторы идентичны по своей функциональности. Они указывают метод маршалинга без кода прокси-сервера и используют строки быстрого формата для повышения производительности. См. / Oi.

Комментарии

При использовании параметра /robust создаются дополнительные сведения, которые позволяют подсистеме представления сетевых данных (NDR) выполнять проверку ошибок во время выполнения для коррелированных аргументов в динамических массивах, объединениях и указателях интерфейса вне в приложениях DCOM. Параметр /robust доступен только в Windows 2000 и более поздних версиях Windows.

Коррелирующий аргумент — это аргумент, использующий любой из атрибутов, которые позволяют определять размер объекта данных во время выполнения: size_is, length_is, first_is, last_is, max_is, switch_is и iid_is. В соответствии со спецификацией OSF-DCE для представления провода этот коррелирующий аргумент отображается в двух разных местах. Например, рассмотрим типичное использование атрибута size_is :

HRESULT Func1([in] long Size, 
              [in, size_is(Size)]BAR_TYPE *pBarType);

В этом примере клиент передает значение long, указывающее размер блока BAR_TYPEs (с точки зрения количества BAR_TYPES элементов), и указатель на фактический блок BAR_TYPEs. Аргумент Size коррелирует с аргументом pBarType. В соответствии со спецификацией OSF-DCE аргумент Size представлен дважды на проводе— сначала как сам по себе, а затем с массивом BAR_TYPE элементов, представляющих аргумент pBarType. Каждый аргумент немаршалируется независимо в соответствии с собственным представлением провода. Как правило, аргумент Size и его копия, которая используется для представления части другого аргумента, имеют одинаковые значения. Однако если аргумент Size поврежден (например, когда блок BAR_TYPES больше выделенного), серверное приложение может перестать отвечать, так как использует значение аргумента Size для измерения входящих данных.

Параметр /robust необходим для реализации допустимой проверки диапазона с помощью атрибута range .

Примеры

midl /robust /Oicf filename.idl

См. также раздел

Общий синтаксис командной строки MIDL

/Эй

Диапазон