次の方法で共有


/Oi スイッチ

/Oi スイッチと /Oic スイッチは、完全に解釈されたマーシャリング メソッドを使用するように MIDL コンパイラに指示します。 /Oicf スイッチには、パフォーマンスの強化が追加されています。

midl /{Oi | Oic | Oif | Oicf}

スイッチ オプション

大井

クライアントとサーバーの間で渡されるスタブ コードをマーシャリングするための完全に解釈されたメソッドを指定します。

このスイッチは廃止されています。 代わりに /Oicf スイッチを使用することをお勧めします。

 

Oic

/Oi のすべての機能を提供し、オブジェクト インターフェイスのクライアント スタブ コードのサイズをさらに小さくする、マーシャリングのコードレス プロキシ メソッドを指定します。

このスイッチは廃止されています。 代わりに /Oicf スイッチを使用することをお勧めします。

 

Oif または Oicf

/Oi と /Oic によって提供されるすべての機能を含むが、/Oi または/Oic よりも優れたパフォーマンスを提供する新しいインタープリター (高速書式指定文字列) を使用するマーシャリングのコードレス プロキシ メソッドを指定します。 このスイッチには最近の RPC の機能強化が含まれており、最新の RPC シナリオに推奨されます。

注釈

サポート プラットフォームに関連する制限事項に注意してください。

MIDL 3.0 コンパイラには、完全に解釈された ( /Oi/Oic/Oicf) と混合モード ( /Os) という 2 つのコードをマーシャリングするためのメソッドが用意されています。 MIDL バージョン 6.0.359 以降、MIDL コンパイラは既定で /Oicf/robust スタブを生成します。 一部の言語機能は、一部のモードではサポートされていません。 この場合、コンパイラは自動的に適切なモードに切り替え、警告を発行します。

パフォーマンスに問題がある場合は、混合モード ( /Os) メソッドが最適な方法です。 このモードでは、コンパイラは、生成されたスタブ内の一部のパラメーターをインラインでマーシャリングすることを選択します。 これによりスタブ サイズが大きくなりますが、パフォーマンスが向上します。

完全に解釈されたメソッドは、データを完全にオフラインでマーシャリングします。 これにより、スタブ コードのサイズが大幅に削減されますが、パフォーマンスが低下します。 また、完全に解釈されるメソッドでは、各プロシージャに 16 個のパラメーターの制限があります。 16 個を超えるパラメーターを含むプロシージャは、 /Os モードで自動的に処理されます。 解釈されるモードの中で、 /Oicf は最高のパフォーマンスを提供し、 /Oi は最高の下位互換性を提供します。

アプリケーションで MIDL 3.0 で導入された MIDL 機能 ([wire_marshal] 属性や [user_marshal] 属性など) を使用する場合は、/Oif オプションを使用できます。 アプリケーションで パイプ を使用する場合は、 /Oif オプションを使用する必要があります。別のモードを指定すると、MIDL コンパイラは /Oif に切り替わります。

スタブ コードのマーシャリング方法を微調整するために、MICROSOFT RPC は ACF [optimize] 属性を提供します。 この属性は、インターフェイス属性または操作属性として使用され、個々のインターフェイスまたは個々の操作のマーシャリング モードを選択します。

呼び出し規則

/Oi/Oic、または /Oif スイッチを使用して解釈されたメソッドで MIDL コンパイラによって生成されたスタブは、C コンパイル時に stdcall または cdecl プロシージャとしてコンパイルする必要があります。 PASCAL または Fastcall 呼び出し規則は機能しません。 さらに、サーバー スタブは stdcall としてコンパイルする必要があります。

例示

midl /Oi filename.idl

midl /Oic filename.idl

midl /Oif filename.idl

こちらも参照ください

/堅牢

/no_robust

一般的な MIDL コマンド ライン構文

/Os

最適化

/no_format_opt