Any sense in marking an IUnknown-derived interface as dual in IDL?

com, com-interop, idl, midl, windows

Solution

In this answer to another question concerning marshaling user voyce points to this article that basically states the following:

When any interface (IDispatch-derived or not) is marked either `dual` or `oleautomation` (or both) it is treated specially when `RegisterTypeLib()` is invoked (which is typically done by DllRegisterServer). For each such interface an HKCR\Interface{InterfaceId} key is created under which {00020424-0000-0000-C0000-000000000046} class is referenced as proxy/stub. This class id corresponds to typelib marshaller also known as oleautomation marshaller.

Problem

Reviewing our code I've found a curious definition in one of .idl files: ``` [ object, uuid(uuidhere), dual, nonextensible, oleautomation, hidden ] interface IOurInterface : IUnknown { //methods here }; ``` How can an interface derived directly from `IUnknown` possibly be a dual interface? Will anything break if I remove the `dual` attribute?

Original source

Related problems