Переключатель /Os
Параметр /Os задает смешанный метод для маршалирования кода заглушки, передаваемого между клиентом и сервером.
midl /Os
Этот параметр не имеет параметров.
Перед выбором метода маршалинга кода необходимо учесть важные вопросы. Эти проблемы касаются размера и производительности. Компилятор MIDL предоставляет два метода маршалинга кода: смешанный режим (/Os) и полностью интерпретируемый (/Oi). Полностью интерпретируемый метод маршалирует данные полностью в автономном режиме. Это значительно уменьшает размер кода заглушки, но также приводит к снижению производительности.
Используйте режим midl по умолчанию /Oicf /robust для всех целей, кроме обратной совместимости. Этот режим является безопасным стандартным режимом компилятора MIDL; любой другой режим следует использовать только после тщательного рассмотрения последствий для безопасности, понимая, что будущие расширения будут реализованы только для режима по умолчанию. В смешанном режиме компилятор маршалирует некоторые параметры в сгенерированных заглушках. Хотя это приводит к увеличению размера заглушки, она также может повысить производительность.
MIDL обеспечивает полную поддержку многомерных массивов и указателей многомерного размера только в режиме /Oicf . В режимах /Os и /Oi компилятор поддерживает простые варианты, например массивы фиксированного размера. Использование многомерных массивов в режимах /Os или /Oi может привести к неправильному маршалингу параметров. Корпорация Майкрософт рекомендует использовать параметр командной строки /Oicf , когда интерфейс определяет параметры, которые являются многомерными массивами или указателями многомерного размера.
Чтобы дополнительно определить уровень градации в способе маршалинга данных, эта версия RPC предоставляет атрибут [optimize]. Этот атрибут используется в качестве атрибута интерфейса ACF или атрибута операции для выбора режима маршалинга.
midl /Os filename.idl