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에서 파생되어야 합니다. dispinterface에서는 이 특성이 허용되지 않습니다.
이중 특성은 IDispatch 인터페이스와 COM(구성 요소 개체 모델) 인터페이스인 인터페이스를 만듭니다. 이중 인터페이스에 대한 VTBL의 처음 7개 항목은 IDispatch의 7개 멤버이며 나머지 항목은 이중 인터페이스의 멤버에 직접 액세스하기 위한 것입니다. 이중 인터페이스의 멤버에 대해 지정된 모든 매개 변수 및 반환 형식은 Automation 호환 형식이어야 합니다.
이중 인터페이스의 모든 멤버는 HRESULT를 함수 반환 값으로 전달해야 합니다. 다른 값을 반환해야 하는 속성 접근자 함수와 같은 멤버는 함수의 값을 반환하는 출력 매개 변수를 나타내는 마지막 매개 변수를 out, retval로 지정해야 합니다. 또한 여러 로캘을 지원해야 하는 멤버는 lcid 매개 변수를 전달해야 합니다.
이중 인터페이스는 직접 VTBL 바인딩의 속도와 IDispatch 바인딩의 유연성을 모두 제공합니다. 이러한 이유로 가능하면 이중 인터페이스를 사용하는 것이 좋습니다.
참고
애플리케이션이 인터페이스 호출 내에서 이 포인터를 캐스팅하여 개체 데이터에 액세스하는 경우 개체의 VTBL 포인터를 고유한 VTBL 포인터에 대해 검사 적절한 프록시에 연결되어 있는지 확인해야 합니다.
인터페이스에 이중 을 지정하면 인터페이스가 Automation과 호환되므로 TYPEFLAG_FDUAL 플래그와 TYPEFLAG_FOLEAUTOMATION 플래그가 모두 설정됩니다.
TYPEFLAG_FDUAL, TYPEFLAG_FOLEAUTOMATION
[
uuid(1e196b20-1f3c-1069-996b-00dd010fe676),
oleautomation, dual
]
interface IHello : IDispatch
{
//Diverse properties and methods defined here.
};