Портування з ATL 2.1

IObjectSafetyImpl

В ATL 2.1 клас IObjectSafetyImpl позначений елемент керування як безпечного для сценаріїв. З міркувань безпеки цього за промовчанням видалено, тому необхідно явно вказати параметри безпеки, використовуючи другий параметри шаблона. Ви тепер повинні піддавати цього класу COM_INTERFACE_ENTRY , а не COM_INTERFACE_ENTRY_IMPL.

_ATL_NO_UUIDOF

ATL 3.0 використовує ключове слово компілятор __uuidof ( класу ) для отримання відповідного IID для даного класу. З-за змін у макроси COM_INTERFACE_ENTRYтепер ви просто включити заголовок для інтерфейсу, використання, замість того, щоб також посилання на бібліотеку, яка визначає зіставлення ідентифікаторів IID для цього інтерфейсу. Ця зміна може спричинити проблеми, якщо заголовок раніше була породжена стару версію MIDL або було закодовані руки і не позначені належним чином.

Декларація для інтерфейсу у заголовку не позначений з пов'язаних __declspec(uuid), то будь-яка спроба використовувати ключове __uuidof() для інтерфейсу, що вдасться. Можна повернутися до старих макросів COM_INTERFACE_ENTRY стиль (ATL 2. x) шляхом визначення _ATL_NO_UUIDOF в настройках побудувати для усунення будь-яких проблем з цієї нової поведінки.

Нові _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