shdocvw: Add ITaskbarList2 Interface

Henri Verbeet hverbeet at gmail.com
Mon Jun 20 10:50:38 CDT 2011


2011/6/18 André Hentschel <nerv at 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.



More information about the wine-devel mailing list