Share via


dual 属性

デュアル属性は、IDispatch を介して VTBL を介して直接プロパティとメソッドを公開するインターフェイスを識別します。

[
    uuid(uuid-number), 
    oleautomation,
    dual 
  [ , optional-attribute-list]
]
interface interface-name
{
    . . .
};

パラメーター

uuid-number

インターフェイスの汎用一意の識別番号を指定します

optional-attribute-list

0 個以上の追加の MIDL 属性のリストを指定します。

interface-name

デュアル属性が適用されるインターフェイスの名前。

注釈

デュアル属性によって識別されるインターフェイスは、Automation と互換性があり、IDispatch から派生する必要があります。 この属性は、ディスパッチインターフェイスでは使用できません。

デュアル属性は、IDispatch インターフェイスとコンポーネント オブジェクト モデル (COM) インターフェイスの両方であるインターフェイスを作成します。 デュアル インターフェイスの VTBL の最初の 7 つのエントリは IDispatch の 7 つのメンバーであり、残りのエントリはデュアル インターフェイスのメンバーに直接アクセスするためのエントリです。 デュアル インターフェイスのメンバーに対して指定されたすべてのパラメーターと戻り値の型は、オートメーション互換型である必要があります。

デュアル インターフェイスのすべてのメンバーは、関数の戻り値として HRESULT を渡す必要があります。 他の値を返す必要があるプロパティ アクセサー関数などのメンバーは、関数の値を返す出力パラメーターを示す最後のパラメーターを outretval として指定する必要があります。 さらに、複数のロケールをサポートする必要があるメンバーは 、lcid パラメーターを渡す必要があります。

デュアル インターフェイスは、直接 VTBL バインドの速度と IDispatch バインドの柔軟性の両方を提供します。 このため、可能な限りデュアル インターフェイスをお勧めします。

Note

アプリケーションがインターフェイス呼び出し内でこのポインターをキャストしてオブジェクト データにアクセスする場合は、オブジェクト内の VTBL ポインターを独自の VTBL ポインターに対してチェックして、適切なプロキシに接続していることを確認する必要があります。

 

インターフェイスで dual を指定すると、インターフェイスは Automation と互換性があるため、TYPEFLAG_FDUALフラグとTYPEFLAG_FOLEAUTOMATION フラグの両方が設定されます。

Flags

TYPEFLAG_FDUAL、TYPEFLAG_FOLEAUTOMATION

[
    uuid(1e196b20-1f3c-1069-996b-00dd010fe676), 
    oleautomation, dual
]
interface IHello : IDispatch
{
    //Diverse properties and methods defined here.
};

関連項目

MIDL を使用したタイプ ライブラリの生成

インターフェイス

Lcid

oleautomation

ODL ファイルの構文

ODL ファイルの例

retval