다음을 통해 공유


ChainInterfaces 구조체

인터페이스 ID 집합에 적용할 수 있는 확인 및 초기화 함수를 지정합니다.

구문

template <
    typename I0,
    typename I1,
    typename I2 = Details::Nil,
    typename I3 = Details::Nil,
    typename I4 = Details::Nil,
    typename I5 = Details::Nil,
    typename I6 = Details::Nil,
    typename I7 = Details::Nil,
    typename I8 = Details::Nil,
    typename I9 = Details::Nil
>
struct ChainInterfaces : I0;

template <
    typename DerivedType,
    typename BaseType,
    bool hasImplements,
    typename I1,
    typename I2,
    typename I3,
    typename I4,
    typename I5,
    typename I6,
    typename I7,
    typename I8,
    typename I9
>
struct ChainInterfaces<
    MixIn<
        DerivedType,
        BaseType,
        hasImplements
    >, I1, I2, I3, I4, I5, I6, I7, I8, I9
>;

매개 변수

I0
(필수) 인터페이스 ID 0.

I1
(필수) 인터페이스 ID 1.

I2
(선택 사항) 인터페이스 ID 2.

I3
(선택 사항) 인터페이스 ID 3.

I4
(선택 사항) 인터페이스 ID 4.

I5
(선택 사항) 인터페이스 ID 5.

I6
(선택 사항) 인터페이스 ID 6.

I7
(선택 사항) 인터페이스 ID 7.

I8
(선택 사항) 인터페이스 ID 8.

I9
(선택 사항) 인터페이스 ID 9.

DerivedType
파생 형식입니다.

BaseType
파생 형식의 기본 형식입니다.

hasImplements
이 경우 trueImplements 구조에서 파생되지 않는 클래스와 MixIn 구조를 사용할 수 없다는 것을 의미하는 부울 값입니다.

멤버

보호된 메서드

속성 설명
ChainInterfaces::CanCastTo 지정된 인터페이스 ID를 템플릿 매개 변수로 정의된 ChainInterface 각 특수화로 캐스팅할 수 있는지 여부를 나타냅니다.
ChainInterfaces::CastToUnknown I0 템플릿 매개 변수로 정의된 형식의 인터페이스 포인터를 포인터로 캐스팅합니다IUnknown.
ChainInterfaces::FillArrayWithIid I0 템플릿 매개 변수로 정의된 인터페이스 ID를 지정된 인터페이스 ID 배열의 지정된 위치에 저장합니다.
ChainInterfaces::Verify 템플릿 매개 변수 I0에서 I9까지 정의된 각 인터페이스가 I0에서 IUnknown 상속되고 IInspectableI0이 I1에서 I9까지 상속되는지 확인합니다.

보호된 상수

이름 설명
ChainInterfaces::IidCount 템플릿 매개 변수 I0~I9로 지정된 인터페이스에 포함된 총 인터페이스 ID 수입니다.

상속 계층 구조

I0

ChainInterfaces

요구 사항

헤더: implements.h

네임스페이스: Microsoft::WRL

ChainInterfaces::CanCastTo

지정된 인터페이스 ID를 기본이 아닌 템플릿 매개 변수로 정의된 각 특수화로 캐스팅할 수 있는지 여부를 나타냅니다.

__forceinline bool CanCastTo(
   REFIID riid,
   _Deref_out_ void **ppv
);

매개 변수

riid
인터페이스 ID입니다.

ppv
성공적으로 캐스팅된 마지막 인터페이스 ID에 대한 포인터입니다.

Return Value

true모든 캐스트 작업이 성공하면 이고, 그렇지 않으면 . false

ChainInterfaces::CastToUnknown

I0 템플릿 매개 변수로 정의된 형식의 인터페이스 포인터를 포인터로 캐스팅합니다IUnknown.

__forceinline IUnknown* CastToUnknown();

Return Value

IUnknown에 대한 포인터입니다.

ChainInterfaces::FillArrayWithIid

I0 템플릿 매개 변수로 정의된 인터페이스 ID를 지정된 인터페이스 ID 배열의 지정된 위치에 저장합니다.

__forceinline static void FillArrayWithIid(
   _Inout_ unsigned long &index,
   _In_ IID* iids
);

매개 변수

색인
iids 배열의 인덱스 값에 대한 포인터입니다 .

iids
인터페이스 ID의 배열입니다.

ChainInterfaces::IidCount

템플릿 매개 변수 I0~I9로 지정된 인터페이스에 포함된 총 인터페이스 ID 수입니다.

static const unsigned long IidCount = Details::InterfaceTraits<I0>::IidCount + Details::InterfaceTraits<I1>::IidCount + Details::InterfaceTraits<I2>::IidCount + Details::InterfaceTraits<I3>::IidCount + Details::InterfaceTraits<I4>::IidCount + Details::InterfaceTraits<I5>::IidCount + Details::InterfaceTraits<I6>::IidCount + Details::InterfaceTraits<I7>::IidCount + Details::InterfaceTraits<I8>::IidCount + Details::InterfaceTraits<I9>::IidCount;

Return Value

인터페이스 ID의 총 개수입니다.

설명

템플릿 매개 변수 I0I1이 필요하며 매개 변수 I2~I9선택 사항입니다. 각 인터페이스의 IID 수는 일반적으로 1입니다.

ChainInterfaces::Verify

템플릿 매개 변수 I0에서 I9까지 정의된 각 인터페이스가 I0에서 IUnknown 상속되고 IInspectableI0이 I1에서 I9까지 상속되는지 확인합니다.

WRL_NOTHROW __forceinline static void Verify();

설명

확인 작업이 실패하는 경우 static_assert에서 실패를 설명하는 오류 메시지를 내보냅니다.

템플릿 매개 변수 I0I1이 필요하며 매개 변수 I2~I9선택 사항입니다.