次の方法で共有


/backward_compat スイッチ

/backward_compat スイッチは、RPC/COM スタブを生成するときに、いくつかの高度な機能をオフにするように MIDL コンパイラに指示します。

midl /backward_compat { maybenull_sizeis | zeroout_alignmentgap | 
     BSTR_byvalue_escaping | string_defaultvalue | signed_wchar_t }

スイッチ オプション

maybenull_sizeis

MIDL コンパイル全体に [disable_consistency_check] 属性を適用します。

zeroout_alignmentgap

マーシャリングされたバッファー内のギャップのゼロ化をオフにします。

BSTR_byvalue_escaping

MIDL コンパイラに、BSTR の ̃\n†™ や †̃\t€ ™ などのエスケープ シーケンスを受け入れるよう指示します。

string_defaultvalue

MIDL コンパイラが [defaultvalue] 属性の文字列を VARIANT に強制します。値を正しい型に強制する前に、 型をVT_I4します。

signed_wchar_t

VISUAL Basic との互換性のために、wchar_t型を署名済みとして扱うように MIDL に指示します。

解説

  • maybenull_sizeis: [disable_consistency_check] を参照してください。

  • zeroout_alignmentgap: IDL がターゲット NT60 以上でコンパイルされると、MIDL によってスタブが作成され、ワイヤ バッファー内のメンバーまたは構造体間のアライン ギャップがゼロになります。 コマンド ライン スイッチ /backward_compat zeroout_alignmentgap は、MIDL にこの機能を無効にするように指示します。

    次の構造例では、ワイヤ バッファーに 7 バイトのアラインメント ギャップが含まれているので、ハイパー メンバーを char メンバーの後に 8 に揃えます。 ターゲット NT60 以上の場合、スイッチを使用しない限り、MIDL はそのギャップをゼロにします。

    IDL ファイル:

    typedef struct _structwithgaps{
        char c;
        // 7 byte gap to align the following hyper to 8 
        hyper h;
    } structwithgap;
    

    このスイッチを使用すると、開示リスクが大幅に増加する可能性があり、パフォーマンスが若干向上する可能性があります。

  • BSTR_byvalue_escaping: 既定では、MIDL コンパイラは、文字列定数を VT_LPSTR 型またはVT_LPWSTR ™型に変換するときに、OLE オートメーションの文字列定数で ̃\ñ や †™ などのエスケープ シーケンスを処理しません。 この下位互換性スイッチ オプションを使用すると、エスケープ シーケンスが評価されます。

  • string_defaultvalue: MIDL コンパイラが [defaultvalue] 属性の数値文字列を VARIANT に強制します。値を正しい型に強制する前に、 型をVT_I4します。 これにより、場合によっては精度が失われる可能性があるため、このスイッチ オプションは推奨されません。

  • signed_wchar_t: VISUAL Basic との互換性のために、WCHAR_T型を署名済みとして扱うように MIDL に指示します。