Am 20.06.2011 17:50, schrieb Henri Verbeet: > 2011/6/18 André Hentschel <n...@dawncrow.de>: >> -static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList >> *iface, REFIID riid, void **object) >> +static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList2 >> *iface, REFIID riid, LPVOID *ppv) >> { >> - TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), >> object); >> + struct taskbar_list *This = impl_from_ITaskbarList2(iface); >> + >> + *ppv = NULL; >> + >> + if(IsEqualGUID(&IID_IUnknown, riid)) { >> + TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); >> + *ppv = &This->ITaskbarList2_iface; >> + }else if(IsEqualGUID(&IID_ITaskbarList, riid)) { >> + TRACE("(%p)->(IID_ITaskbarList %p)\n", This, ppv); >> + *ppv = &This->ITaskbarList2_iface; >> + }else if(IsEqualGUID(&IID_ITaskbarList2, riid)) { >> + TRACE("(%p)->(IID_ITaskbarList2 %p)\n", This, ppv); >> + *ppv = &This->ITaskbarList2_iface; >> + } >> >> - if (IsEqualGUID(riid, &IID_ITaskbarList) >> - || IsEqualGUID(riid, &IID_IUnknown)) >> - { >> - IUnknown_AddRef(iface); >> - *object = iface; >> + if(*ppv) { >> + IUnknown_AddRef((IUnknown*)*ppv); >> return S_OK; >> } >> >> - WARN("%s not implemented, returning E_NOINTERFACE\n", >> debugstr_guid(riid)); >> - >> - *object = NULL; >> + WARN("(%p)->(%s %p) interface not supported\n", This, >> debugstr_guid(riid), ppv); >> return E_NOINTERFACE; >> } >> > I'm not sure that's really an improvement. > >
I thought i use the way the webbrowser queryinterface in the same dll is implemented. Of course i can change less here. -- Best Regards, André Hentschel