The creation of dual interface is a little bit more complex, since we have to combine together the IDispatch method table with the table that actually implements the functionality. The vtable argument that createDualInterface implements is assumed to be IUnknown derived. The details of how to call createDispInterface and createDualInterface is taken care of by the implementation of IUnknown that ComServ provides. ComInterface objState instead of mkIface . The component supports just the one interface, IWho , containing the single method SongTitle .
Next step is to create the method table for the component.