2.1 ATL, a classe IObjectSafetyImpl marcou o controle como seguro para script. Por razões de segurança, este padrão foi removido, então você deve especificar explicitamente suas opções de segurança usando os segundo parâmetros de modelo. Agora você deve expor essa classe usando COM_INTERFACE_ENTRY ao invés de COM_INTERFACE_ENTRY_IMPL.
ATL 3.0 usa a palavra-chave compilador uuidof ( classe ) para obter o IID correspondente para uma determinada classe. Devido às alterações no macros COM_INTERFACE_ENTRY, agora você simplesmente incluir o cabeçalho para a interface usar, em vez de também vincular a uma biblioteca que define as IIDs correspondentes para essa interface. Essa alteração pode causar problemas se o cabeçalho gerado anteriormente por uma versão antiga do MIDL, ou se ele foi codificado mão e não marcado apropriadamente.
Se a declaração para a interface no cabeçalho não tiver sido marcada com um associado __declspec(uuid), qualquer tentativa de usar a palavra-chave __uuidof() para essa interface irá falhar. Você pode reverter para as velhas macros COM_INTERFACE_ENTRY (ATL 2. x) estilo definindo _ATL_NO_UUIDOF em suas configurações de compilação para resolver qualquer problema com esse novo comportamento.
Além de _ATL_DEBUG_QI e _ATL_DEBUG_REFCOUNT, presentes no ATL 2. x, há o novo ATL_DEBUG_INTERFACES, que irá traçar para o console de depuração qualquer vazamentos interface que são detectados quando _Module.Term é chamado (quando o servidor for desligado).
Ver também
Depurando dicas para objetos ATL
| Macro | Comentário |
| COM_INTERFACE_ENTRY_IMPL | Obsoleto. Substituir por COM_INTERFACE_ENTRY. |
| COM_INTERFACE_ENTRY_IMPL_IID | Obsoleto. Substituir por COM_INTERFACE_ENTRY_IID. |
| CHAIN_MSG_MAP_ALT_DYNAMIC | Obsoleto e excluídos. |
| BEGIN_PROPERTY_MAP | Obsoleto. Use a macro de mapa novo propriedade, BEGIN_PROP_MAP, conforme descrito em Novas Macros. |
| END_PROPERTY_MAP | Obsoleto. Use a macro de mapa novo propriedade, END_PROP_MAP, conforme descrito em Novas Macros. |