一.IObjectSafety
浏览器安全等级
http://blog.csdn.net/sstower/article/details/6586687
二.IProvideClassInfo2
Supporting IProvideClassInfo2
Many containers, such as Visual Basic and Internet Explorer, use a control's IProvideClassInfo2 interface to determine the control's event interface. When a control doesn't support IProvideClassInfo2, these containers assume that the control doesn't source events and never establish a connection point to your control. Other containers, such as test container, don't use a control's IProvideClassInfo2 interface and browse a control's type information to determine the default source interface.
ATL provides an implementation of this interface in IProvideClassInfo2Impl. To use it, derive your control class from IProvideClassInfo2Impl. The IProvideClassInfo2 interface itself derives from the IProvideClassInfo interface, so when you update your control's interface map, you need to provide entries for both interfaces.
class ATL_NO_VTABLE CBullsEye :
public IProvideClassInfo2Impl<&CLSID_BullsEye,
&DIID__IBullsEyeEvents,
&LIBID_ATLInternalsLib>,
...
{
...
BEGIN_COM_MAP(CBullsEye)
...
// Support for connection points
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY(IProvideClassInfo)
END_COM_MAP()
...
};
Reference:http://support.microsoft.com/kb/200839
三.