ATL 2.1에서 이식

IObjectSafetyImpl

ATL 2.1, IObjectSafetyImpl 클래스 컨트롤을 스크립트 사용에 안전한 것으로 표시 합니다. 보안상의 이유로이 기본값이 제거 되었습니다, 그래서 두 번째 템플릿 매개 변수를 사용 하 여 안전 옵션을 명시적으로 지정 해야 합니다. 이제 COM_INTERFACE_ENTRY_IMPL 보다는 오히려 COM_INTERFACE_ENTRY 를 사용 하 여이 클래스를 노출 해야 합니다.

_ATL_NO_UUIDOF

ATL 3.0 컴파일러 키워드를 사용 하 여 __uuidof ( 클래스 ) 주어진된 클래스에 대 한 해당 IID를 가져옵니다. COM_INTERFACE_ENTRY 매크로의 변경으로 인해 이제 단순히 포함 또한 해당 인터페이스에 대 한 일치 하는 Iid를 정의 하는 라이브러리에 연결 하는 대신 사용 하 여 인터페이스에 대 한 헤더. 이 변경 헤더는 MIDL의 오래 된 버전에 의해 이전에 생성 된 또는 손으로 코딩 되었고 적절 하 게 표시 되지 않은 경우 문제가 발생할 수 있습니다.

헤더의 인터페이스에 대 한 선언은 관련된 __declspec(uuid)으로 표시 하지 않은, __uuidof 키워드를 사용 하 여 해당 인터페이스에 대 한 모든 시도가 실패 합니다. 이 새로운 동작은 모든 문제를 해결 하려면 빌드 설정에서 _ATL_NO_UUIDOF 을 정의 하 여 이전 스타일 (ATL 2.x) COM_INTERFACE_ENTRY 매크로 되돌릴 수 있습니다.

새 _ATL_DEBUG_INTERFACES

_ATL_DEBUG_QI 및 _ATL_DEBUG_REFCOUNT, ATL 2.x에 외에 거기에는 새 _ATL_DEBUG_INTERFACES, 디버그 콘솔은 모든 인터페이스 누수 추적 것입니다 하는 때를 감지 _Module.Term (해당 되는 때 서버가 종료) 라고。

참고 항목

ATL 개체에 대 한 팁을 디버깅

오래 된 매크로

매크로 댓글
COM_INTERFACE_ENTRY_IMPL 사용 되지 않음. COM_INTERFACE_ENTRY 바꿉니다。
COM_INTERFACE_ENTRY_IMPL_IID 사용 되지 않음. COM_INTERFACE_ENTRY_IID 바꿉니다。
CHAIN_MSG_MAP_ALT_DYNAMIC 오래 된 및 삭제。
BEGIN_PROPERTY_MAP 사용 되지 않음. 새 매크로 에 설명 된 대로 새 속성 맵 매크로 BEGIN_PROP_MAP를 사용 하 여。
END_PROPERTY_MAP 사용 되지 않음. 새 매크로 에 설명 된 대로 새 속성 맵 매크로 END_PROP_MAP를 사용 하 여。

Index