static ULONG WINAPI ShellItem_Release(IShellItem2 *iface) { ShellItem *This = impl_from_IShellItem2(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p), new refcount=%i\n", iface, ref); if (ref == 0) { ILFree(This->pidl); HeapFree(GetProcessHeap(), 0, This); } return ref; }
static HRESULT WINAPI ShellItem_GetParent(IShellItem2 *iface, IShellItem **ppsi) { ShellItem *This = impl_from_IShellItem2(iface); LPITEMIDLIST parent_pidl; HRESULT ret; TRACE("(%p,%p)\n", iface, ppsi); ret = ShellItem_get_parent_pidl(This, &parent_pidl); if (SUCCEEDED(ret)) { ret = SHCreateShellItem(NULL, NULL, parent_pidl, ppsi); ILFree(parent_pidl); } return ret; }
static HRESULT WINAPI ShellItem_BindToHandler(IShellItem2 *iface, IBindCtx *pbc, REFGUID rbhid, REFIID riid, void **ppvOut) { ShellItem *This = impl_from_IShellItem2(iface); HRESULT ret; TRACE("(%p,%p,%s,%p,%p)\n", iface, pbc, shdebugstr_guid(rbhid), riid, ppvOut); *ppvOut = NULL; if (IsEqualGUID(rbhid, &BHID_SFObject)) { IShellFolder *psf; ret = ShellItem_get_shellfolder(This, pbc, &psf); if (SUCCEEDED(ret)) { ret = IShellFolder_QueryInterface(psf, riid, ppvOut); IShellFolder_Release(psf); } return ret; } else if (IsEqualGUID(rbhid, &BHID_SFUIObject)) { IShellFolder *psf_parent; if (_ILIsDesktop(This->pidl)) ret = SHGetDesktopFolder(&psf_parent); else ret = ShellItem_get_parent_shellfolder(This, &psf_parent); if (SUCCEEDED(ret)) { LPCITEMIDLIST pidl = ILFindLastID(This->pidl); ret = IShellFolder_GetUIObjectOf(psf_parent, NULL, 1, &pidl, riid, NULL, ppvOut); IShellFolder_Release(psf_parent); } return ret; } else if (IsEqualGUID(rbhid, &BHID_DataObject)) { return ShellItem_BindToHandler(&This->IShellItem2_iface, pbc, &BHID_SFUIObject, &IID_IDataObject, ppvOut); } FIXME("Unsupported BHID %s.\n", debugstr_guid(rbhid)); return MK_E_NOOBJECT; }
static HRESULT WINAPI ShellItem2_GetBool(IShellItem2 *iface, REFPROPERTYKEY key, BOOL *pf) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p, %p)\n", This, key, pf); return E_NOTIMPL; }
static HRESULT WINAPI ShellItem2_GetUInt64(IShellItem2 *iface, REFPROPERTYKEY key, ULONGLONG *pull) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p, %p)\n", This, key, pull); return E_NOTIMPL; }
static HRESULT WINAPI ShellItem2_GetString(IShellItem2 *iface, REFPROPERTYKEY key, LPWSTR *ppsz) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p, %p)\n", This, key, ppsz); return E_NOTIMPL; }
static HRESULT WINAPI ShellItem2_GetInt32(IShellItem2 *iface, REFPROPERTYKEY key, int *pi) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p, %p)\n", This, key, pi); return E_NOTIMPL; }
static HRESULT WINAPI ShellItem2_GetFileTime(IShellItem2 *iface, REFPROPERTYKEY key, FILETIME *pft) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p, %p)\n", This, key, pft); return E_NOTIMPL; }
static HRESULT WINAPI ShellItem2_GetCLSID(IShellItem2 *iface, REFPROPERTYKEY key, CLSID *pclsid) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p, %p)\n", This, key, pclsid); return E_NOTIMPL; }
static HRESULT WINAPI ShellItem2_GetProperty(IShellItem2 *iface, REFPROPERTYKEY key, PROPVARIANT *ppropvar) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p, %p)\n", This, key, ppropvar); return E_NOTIMPL; }
static HRESULT WINAPI ShellItem2_Update(IShellItem2 *iface, IBindCtx *pbc) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p)\n", This, pbc); return E_NOTIMPL; }