COM_INTERFACE_ENTRY 매크로

QueryInterface에 의해 액세스할 수 있도록이 매크로 COM 지도로 개체의 인터페이스를 입력 합니다. COM 맵에 항목의 순서는 주문 인터페이스는 일치 하는 IID 에 대 한 QueryInterface 동안 검사 됩니다.

QueryInterface 를 통해 자사의 인터페이스를 노출 하 고 싶어 하는 각 개체에는 자체 COM 맵이 있어야 합니다. COM 맵 BEGIN_COM_MAP매크로 함께 시작 됩니다. COM_INTERFACE_ENTRY 매크로 하나 이상의 인터페이스 항목 추가 하 고 지도 END_COM_MAP 매크로 함께 완료 됩니다. 예를 들어:

BEGIN_COM_MAP(CMyObject)
 nbsp;? COM_INTERFACE_ENTRY(IDispatch)
 ?? COM_INTERFACE_ENTRY(IMyObject)
END_COM_MAP)(&N)

ATL 참조 COMMAP 샘플 예제 COM의 다른 종류를 사용 하 여 매핑할 항목 매크로 대 한。

참고 COM 지도에서 첫 번째 항목 COM 맵을 포함 하는 개체에 인터페이스 이어야 합니다. COM_INTERFACE_ENTRY_CHAIN,이 시점에서 검색할 다른 개체의 COM 맵을 함께 COM 맵 항목을 시작할 수 없습니다 따라서, 어디 COM_INTERFACE_ENTRY_CHAIN (COtherObject) 개체의 COM 맵을에 나타납니다. 다른 개체의 COM 맵을 먼저 검색, 귀하의 COM 맵에 IUnknown 에 대 한 인터페이스 항목을 추가 하려는 경우 다음 다른 개체의 COM 맵을 체인. 예를 들어:

BEGIN_COM_MAP(CThisObject)
 nbsp; COM_INTERFACE_ENTRY(IUnknown)
 ? COM_INTERFACE_ENTRY_CHAIN(COtherObject)
END_COM_MAP)(&N)

주의 nbsp; ATL 버전 3.0으로의 컴파일러 키워드를 사용 __uuidof ( 클래스 ) 주어진된 클래스에 대 한 해당 IID를 가져옵니다. 버전 3.0에서에서 효과적인 COM_INTERFACE_ENTRY 매크로의 변경으로 인해 이제 단순히 포함 또한 해당 인터페이스에 대 한 일치 하는 Iid를 정의 하는 라이브러리에 연결 하는 대신 사용 하 여 인터페이스에 대 한 헤더. 이 변경 헤더는 MIDL의 이전 버전에서 이전에 생성 된 또는 손으로 코딩 되었고 적절 하 게 표시 되지 않은 경우 문제가 발생할 수 있습니다. 헤더의 인터페이스에 대 한 선언을 표시 하지 않은 경우는 관련 된 __declspec ( uuid )다음 해당 인터페이스 실패에 대 한 __uuidof 키워드를 사용 하려고 합니다. 이 새로운 동작은 모든 문제를 해결 하려면 빌드 설정에서 _ATL_NO_UUIDOF 을 정의 하 여 이전 (ATL 2.x) COM_INTERFACE_ENTRY 매크로 되돌릴 수 있습니다(&N).

다음은 사용 가능한 항목 매크로:

COM 맵 엔트리 매크로

COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
COM_INTERFACE_ENTRY_FUNC
COM_INTERFACE_ENTRY_FUNC_BLIND
COM_INTERFACE_ENTRY_TEAR_OFF
COM_INTERFACE_ENTRY_CACHED_TEAR_OFF
COM_INTERFACE_ENTRY_AGGREGATE
COM_INTERFACE_ENTRY_AGGREGATE_BLIND
COM_INTERFACE_ENTRY_AUTOAGGREGATE
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND
COM_INTERFACE_ENTRY_CHAIN
COM_INTERFACE_ENTRY_BREAK
COM_INTERFACE_ENTRY_NOINTERFACE

ATL 매크로 및 전역 함수

Index