/robust スイッチ
/robust スイッチは、実行時に NDR エンジンが整合性チェックを実行するために使用する追加のエラー チェック情報を生成するように MIDL コンパイラに指示します。
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 仕様に従って、この相関引数は 2 つの異なる場所に表示されます。 たとえば、 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 はワイヤ上で 2 回表されます。最初はそれ自体として、次に pBarType 引数を表すBAR_TYPE要素の配列を使用します。 各引数は、独自のワイヤ表現に従って、個別にアンマーシャリングされます。 通常、Size 引数とそのコピーは、他の引数の一部を表すために使用され、同じ値を持ちます。 ただし、引数 Size が破損した場合 (たとえば、BAR_TYPESのブロックが割り当てられたブロックより大きい場合)、サーバー アプリケーションは Size 引数の値を使用して受信データを測定するため、応答を停止する可能性があります。
範囲属性を使用して有効な範囲チェックを実装するには、/robust スイッチが必要です。
midl /robust /Oicf filename.idl