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


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

Параметры /Oi и /Oic направляют компилятор MIDL на использование полностью интерпретированного метода маршалинга. Параметр /Oicf обеспечивает дополнительные улучшения производительности.

midl /{Oi | Oic | Oif | Oicf}

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

Эй

Указывает полностью интерпретируемый метод для маршалинга кода заглушки, передаваемого между клиентом и сервером.

Примечание

Этот параметр устарел. Рекомендуется использовать вместо него параметр /Oicf .

 

Оик

Указывает метод маршалинга без кода прокси-сервера, который предоставляет все возможности /Oi , а также дополнительно уменьшает размер кода заглушки клиента для интерфейсов объектов.

Примечание

Этот параметр устарел. Рекомендуется использовать вместо него параметр /Oicf .

 

Oif или Oicf

Указывает метод маршалинга без кода прокси-сервера, который включает все функции, предоставляемые /Oi и /Oic , но использует новый интерпретатор (строки быстрого форматирования), который обеспечивает лучшую производительность, чем /Oi или /Oic. Этот параметр включает последние улучшения RPC и рекомендуется для современных сценариев RPC.

Комментарии

Обратите внимание на ограничения, связанные со вспомогательными платформами.

Компилятор MIDL 3.0 предоставляет два метода маршалинга кода: полностью интерпретируемый ( /Oi, /Oic и /Oicf) и смешанный режим ( /Os). Начиная с MIDL версии 6.0.359, компилятор MIDL по умолчанию создает заглушки /Oicf /robust . Некоторые языковые функции не поддерживаются в некоторых режимах. В этом случае компилятор автоматически переключается в соответствующий режим и выдает предупреждение.

Если производительность является проблемой, оптимальным подходом может быть смешанный режим ( /Os). В этом режиме компилятор выбирает маршал некоторых параметров, встроенных в созданные заглушки. Хотя это приводит к увеличению размера заглушки, она обеспечивает повышенную производительность.

Полностью интерпретируемый метод маршалирует данные полностью в автономном режиме. Это значительно уменьшает размер кода заглушки, но приводит к снижению производительности. Кроме того, при использовании полностью интерпретированного метода существует ограничение в 16 параметров для каждой процедуры. Любая процедура, содержащая более 16 параметров, будет автоматически обрабатываться в режиме /Os . Среди интерпретируемых режимов /Oicf обеспечивает лучшую производительность, а /Oi — наилучшую обратную совместимость.

Вы можете использовать параметр /Oif , если приложение использует функции MIDL, появившиеся в MIDL 3.0, такие как атрибуты [wire_marshal] и [user_marshal]. Если приложение использует каналы , необходимо использовать параметр /Oif ; Если указать другой режим, компилятор MIDL переключится на /Oif.

Чтобы точно настроить способ маршалирования кода заглушки, Microsoft RPC предоставляет атрибут ACF [optimize]. Этот атрибут используется в качестве атрибута интерфейса или атрибута операции для выбора режима маршалинга для отдельных интерфейсов или для отдельных операций.

Соглашения о вызовах

Заглушки, созданные компилятором MIDL в интерпретируемом методе с помощью параметров /Oi, /Oic или /Oif , должны быть скомпилированы как процедура stdcall или cdecl во время компиляции C. Соглашение о вызовах PASCAL или Fastcall не будет работать. Кроме того, заглушка сервера должна быть скомпилирована как stdcall.

Примеры

midl /Oi имя файла.idl

midl /Oic filename.idl

midl /Oif filename.idl

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

/Надежные

/no_robust

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

/Os

Оптимизировать

/no_format_opt