В ATL 2.1 клас IObjectSafetyImpl позначений елемент керування як безпечного для сценаріїв. З міркувань безпеки цього за промовчанням видалено, тому необхідно явно вказати параметри безпеки, використовуючи другий параметри шаблона. Ви тепер повинні піддавати цього класу COM_INTERFACE_ENTRY , а не COM_INTERFACE_ENTRY_IMPL.
ATL 3.0 використовує ключове слово компілятор __uuidof ( класу ) для отримання відповідного IID для даного класу. З-за змін у макроси COM_INTERFACE_ENTRYтепер ви просто включити заголовок для інтерфейсу, використання, замість того, щоб також посилання на бібліотеку, яка визначає зіставлення ідентифікаторів IID для цього інтерфейсу. Ця зміна може спричинити проблеми, якщо заголовок раніше була породжена стару версію MIDL або було закодовані руки і не позначені належним чином.
Декларація для інтерфейсу у заголовку не позначений з пов'язаних __declspec(uuid), то будь-яка спроба використовувати ключове __uuidof() для інтерфейсу, що вдасться. Можна повернутися до старих макросів COM_INTERFACE_ENTRY стиль (ATL 2. x) шляхом визначення _ATL_NO_UUIDOF в настройках побудувати для усунення будь-яких проблем з цієї нової поведінки.
На додаток до _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, як описано в Нові макроси. |