다음을 통해 공유


COM_INTERFACE_ENTRY Macros

이러한 매크로에 액세스할 수 있도록 개체의 인터페이스의 COM 맵에 입력 QueryInterface. COM 맵에 순서 순서 인터페이스에 대 한 일치 체크 됩니다입니다 IIDQueryInterface.

각 개체의 인터페이스를 통해 노출 하려는 QueryInterface COM 맵 자체에 있어야 합니다. 매크로와 COM 맵을 시작 BEGIN_COM_MAP. 인터페이스 항목 중 하나 이상에 추가 되는 COM_INTERFACE_ENTRY 매크로 및 지도 완료로 END_COM_MAP 매크로. 예를 들면 다음과 같습니다.

BEGIN_COM_MAP(CMyObject)
   COM_INTERFACE_ENTRY(IMyObject)
   COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

첫 번째 COM 맵 엔트리 인터페이스의 COM 맵에 포함 된 개체를 해야 합니다. 따라서 COM 맵에 항목을 시작할 수 없습니다 COM_INTERFACE_ENTRY_CHAIN, COM 맵을 다른 지점에서 검색할 개체를 발생 하는 위치 COM_INTERFACE_ENTRY_CHAIN (COtherObject) 해당 개체의 COM 맵에 나타납니다. 먼저 다른 개체의 COM 맵을 검색할 경우 인터페이스 항목에 대 한 추가 IUnknown COM 맵에 다음 개체의 COM 맵을 체인으로 연결 합니다. 예를 들면 다음과 같습니다.

BEGIN_COM_MAP(CThisObject)
   COM_INTERFACE_ENTRY(IUnknown)
   COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()

경고

3.0 버전 부터는 ATL 컴파일러 키워드를 사용 하 여 __uuidof (class) 특정된 클래스에 대 한 IID를 얻을 수 있습니다.변경 된 COM_INTERFACE_ENTRY 매크로 간단 하 게도 일치 하는 Iid는 인터페이스를 정의 하는 라이브러리에 연결 하는 대신 사용 하는 인터페이스에 대 한 헤더를 포함 하는 이제 3.0 버전에서 유효한.이 변경 문제는 헤더 이전에 이전 버전의 MIDL에 의해 생성 된 또는 핸드 코딩 되었고 제대로 표시 되지 않은 경우 발생할 수 있습니다.없습니다 인터페이스 헤더에서에 대 한 선언을 표시 된 경우와 관련 __declspec ( uuid )를 사용 하려면 다음 시도 __uuidof 키워드를 해당 인터페이스에 대해 사용할 수 없습니다.이전 (ATL 2.x) 되돌릴 수 COM_INTERFACE_ENTRY 매크로 정의 하 여 _ATL_NO_UUIDOF 에서이 새로운 동작을 사용 하 여 문제를 해결 하려면 빌드 설정을.

COM 맵 엔트리 매크로

다음 항목을 사용할 수 있는 매크로입니다.

요구 사항

헤더: atlcom.h

참고 항목

기타 리소스

COM Map Macros

ATL 매크로