[PATCH 1/4] shell32: Add IQueryInfo in ShellFolder2_GetUIObjectOf

Nikolay Sivov bunglehead at gmail.com
Fri May 18 07:31:36 CDT 2012


On 5/18/2012 14:06, Detlef Riekenberg wrote:
> +    if (ppv == NULL)
> +        return E_POINTER;
This is usually redundant.
> +
> +    if (IsEqualGUID(&IID_IUnknown, riid) ||
> +        IsEqualGUID(&IID_IQueryInfo, riid)) {
> +        *ppv =&This->IQueryInfo_iface;
> +        IUnknown_AddRef((IUnknown*)*ppv);
> +        TRACE("returning IQueryInfo: %p\n", *ppv);
> +        return S_OK;
> +    }
Instead of using IUnknown for some reason a clean way could be to call 
IQueryInfo_AddRef(iface). Trace is not needed here - you have a trace on 
top of that and FIXME trace on a failure, so you'll know.
> +
> +    *ppv = NULL;
> +    FIXME("(%p)->(%s %p) interface not supported\n", This, debugstr_guid(riid), ppv);
> +    return E_NOINTERFACE;
> +}
> +IQueryInfo *IQueryInfo_Constructor(LPCITEMIDLIST pidl)
> +{
> +    IQueryInfoImpl *qi;
> +
> +    TRACE("(%p)\n", pidl);
> +
> +    qi = HeapAlloc(GetProcessHeap(), 0, sizeof(IQueryInfoImpl));
> +    qi->IQueryInfo_iface.lpVtbl =&IQueryInfo_vtbl;
> +    qi->ref=1;
> +    qi->pidl=ILClone(pidl);
> +
> +    TRACE("==>  %p (pidl: %p)\n", qi, qi->pidl);
> +    return&qi->IQueryInfo_iface;
> +}
This doesn't handle HeaoAlloc() or ILClone failures.





More information about the wine-devel mailing list