W ppkt 2.1 ATL klasy IObjectSafetyImpl oznaczone kontroli jako bezpieczne do obsługi skryptów. Ze względów bezpieczeństwa to ustawienie domyślne zostało usunięte, więc należy jawnie określić opcje bezpieczeństwa przy użyciu drugiego parametrów szablonu. Należy teraz wystawiać tej klasy za pomocą COM_INTERFACE_ENTRY zamiast COM_INTERFACE_ENTRY_IMPL.
ATL 3.0 używa słowa kluczowego kompilatora __uuidof ( klasy ) Aby uzyskać odpowiedni identyfikator IID dla danej klasy. Ze względu na zmiany w makrach COM_INTERFACE_ENTRYteraz możesz po prostu zawiera nagłówek dla tego interfejsu, aby użyć, zamiast na również łączenie z biblioteki, w której definiuje IID pasujące dla tego interfejsu. Ta zmiana może spowodować problemy, jeśli nagłówek wcześniej został wygenerowany przez starą wersję MIDL lub został kodowane dłoni i nie oznaczone odpowiednio.
Jeśli deklaracja interfejsu w nagłówku nie została oznaczona z skojarzone __declspec(uuid), a następnie powiedzie się, każda próba użycia słowa kluczowego __uuidof() dla tego interfejsu. Definiując _ATL_NO_UUIDOF w ustawieniach kompilacji w celu obejścia problemów z to nowe zachowanie można przywrócić starej makra COM_INTERFACE_ENTRY styl (ATL 2.x).
Oprócz _ATL_DEBUG_QI i _ATL_DEBUG_REFCOUNT, obecne w ATL 2.x, jest nowy _ATL_DEBUG_INTERFACES, który będzie śledził w konsoli debugowania wszelkie przecieki interfejsu, które są wykrywane podczas _Module.Term
nazywa się (jeśli serwer zostanie wyłączony).
Zobacz też
Debugowanie porady dla obiektów ATL
Makro | Komentarz |
COM_INTERFACE_ENTRY_IMPL | Przestarzałe. Zastąp COM_INTERFACE_ENTRY. |
COM_INTERFACE_ENTRY_IMPL_IID | Przestarzałe. Zastąp COM_INTERFACE_ENTRY_IID. |
CHAIN_MSG_MAP_ALT_DYNAMIC | Przestarzałe i usunięte. |
BEGIN_PROPERTY_MAP | Przestarzałe. Użyj właściwości nowe mapy makro, BEGIN_PROP_MAP, zgodnie z opisem w Nowych makr. |
END_PROPERTY_MAP | Przestarzałe. Użyj właściwości nowe mapy makro, END_PROP_MAP, zgodnie z opisem w Nowych makr. |