ReactOS 0.4.17-dev-1247-ge46f4bb
CShellItem Class Reference

#include <CShellItem.h>

Inheritance diagram for CShellItem:
Collaboration diagram for CShellItem:

Public Member Functions

 CShellItem ()
 
 ~CShellItem ()
 
HRESULT get_parent_pidl (LPITEMIDLIST *parent_pidl)
 
HRESULT get_parent_shellfolder (IShellFolder **ppsf)
 
HRESULT get_shellfolder (IBindCtx *pbc, REFIID riid, void **ppvOut)
 
HRESULT get_property_from_folder (REFPROPERTYKEY key, VARIANT *pvar)
 
HRESULT get_converted_property (REFPROPERTYKEY key, PROPVARIANT *ppropvar, VARTYPE vt)
 
STDMETHOD() BindToHandler (IBindCtx *pbc, REFGUID rbhid, REFIID riid, void **ppvOut) override
 
STDMETHOD() GetParent (IShellItem **ppsi) override
 
STDMETHOD() GetDisplayName (SIGDN sigdnName, LPWSTR *ppszName) override
 
STDMETHOD() GetAttributes (SFGAOF sfgaoMask, SFGAOF *psfgaoAttribs) override
 
STDMETHOD() Compare (IShellItem *oth, SICHINTF hint, int *piOrder) override
 
STDMETHOD() GetPropertyStore (_In_ GETPROPERTYSTOREFLAGS flags, _In_ REFIID riid, _Out_ void **ppv)
 
STDMETHOD() GetPropertyStoreWithCreateObject (_In_ GETPROPERTYSTOREFLAGS flags, _In_ IUnknown *punkCreateObject, _In_ REFIID riid, _Out_ void **ppv) override
 
STDMETHOD() GetPropertyStoreForKeys (const PROPERTYKEY *rgKeys, _In_ UINT cKeys, _In_ GETPROPERTYSTOREFLAGS flags, _In_ REFIID riid, _Out_ void **ppv) override
 
STDMETHOD() GetPropertyDescriptionList (_In_ REFPROPERTYKEY keyType, _In_ REFIID riid, _Out_ void **ppv) override
 
STDMETHOD() Update (_In_ IBindCtx *pbc) override
 
STDMETHOD() GetProperty (_In_ REFPROPERTYKEY key, _Out_ PROPVARIANT *ppropvar) override
 
STDMETHOD() GetCLSID (_In_ REFPROPERTYKEY key, _Out_ CLSID *pclsid) override
 
STDMETHOD() GetFileTime (_In_ REFPROPERTYKEY key, _Out_ FILETIME *pft) override
 
STDMETHOD() GetInt32 (_In_ REFPROPERTYKEY key, _Out_ int *pi) override
 
STDMETHOD() GetString (_In_ REFPROPERTYKEY key, _Out_ LPWSTR *ppsz) override
 
STDMETHOD() GetUInt32 (_In_ REFPROPERTYKEY key, _Out_ ULONG *pui) override
 
STDMETHOD() GetUInt64 (_In_ REFPROPERTYKEY key, _Out_ ULONGLONG *pull) override
 
STDMETHOD() GetBool (_In_ REFPROPERTYKEY key, _Out_ BOOL *pf) override
 
STDMETHOD() GetClassID (CLSID *pClassID) override
 
STDMETHOD() SetIDList (PCIDLIST_ABSOLUTE pidl) override
 
STDMETHOD() GetIDList (PIDLIST_ABSOLUTE *ppidl) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
- Public Member Functions inherited from IShellItem2
HRESULT GetPropertyStore ([in] GETPROPERTYSTOREFLAGS flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv)
 
HRESULT GetPropertyStoreWithCreateObject ([in] GETPROPERTYSTOREFLAGS flags, [in] IUnknown *punkCreateObject, [in] REFIID riid, [out, iid_is(riid)] void **ppv)
 
HRESULT GetPropertyStoreForKeys ([in, size_is(cKeys)] const PROPERTYKEY *rgKeys, [in] UINT cKeys, [in] GETPROPERTYSTOREFLAGS flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv)
 
HRESULT GetPropertyDescriptionList ([in] REFPROPERTYKEY keyType, [in] REFIID riid, [out, iid_is(riid)] void **ppv)
 
HRESULT Update ([in, unique] IBindCtx *pbc)
 
HRESULT GetProperty ([in] REFPROPERTYKEY key, [out] PROPVARIANT *ppropvar)
 
HRESULT GetCLSID ([in] REFPROPERTYKEY key, [out] CLSID *pclsid)
 
HRESULT GetFileTime ([in] REFPROPERTYKEY key, [out] FILETIME *pft)
 
HRESULT GetInt32 ([in] REFPROPERTYKEY key, [out] int *pi)
 
HRESULT GetString ([in] REFPROPERTYKEY key, [out, string] LPWSTR *ppsz)
 
HRESULT GetUInt32 ([in] REFPROPERTYKEY key, [out] ULONG *pui)
 
HRESULT GetUInt64 ([in] REFPROPERTYKEY key, [out] ULONGLONG *pull)
 
HRESULT GetBool ([in] REFPROPERTYKEY key, [out] BOOL *pf)
 
HRESULT BindToHandler ([in] IBindCtx *pbc, [in] REFGUID rbhid, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
 
HRESULT GetParent ([out] IShellItem **ppsi)
 
HRESULT GetDisplayName ([in] SIGDN sigdnName, [out] LPWSTR *ppszName)
 
HRESULT GetAttributes ([in] SFGAOF sfgaoMask, [out] SFGAOF *psfgaoAttribs)
 
HRESULT Compare ([in] IShellItem *psi, [in] SICHINTF hint, [out] int *piOrder)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
HRESULT SetIDList ([in] PCIDLIST_ABSOLUTE pidl)
 
HRESULT GetIDList ([out] PIDLIST_ABSOLUTE *ppidl)
 
HRESULT GetClassID ([out] CLSID *pClassID)
 

Private Attributes

LPITEMIDLIST m_pidl
 

Additional Inherited Members

- Public Types inherited from IShellItem
enum  SIGDN {
  SIGDN_NORMALDISPLAY = 0 , SIGDN_PARENTRELATIVEPARSING = 0x80018001 , SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000 , SIGDN_PARENTRELATIVEEDITING = 0x80031001 ,
  SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000 , SIGDN_FILESYSPATH = 0x80058000 , SIGDN_URL = 0x80068000 , SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001 ,
  SIGDN_PARENTRELATIVE = 0x80080001
}
 
enum  _SICHINTF { SICHINT_DISPLAY = 0x00000000 , SICHINT_CANONICAL = 0x10000000 , SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000 , SICHINT_ALLFIELDS = 0x80000000 }
 
typedef DWORD SICHINTF
 
- Public Types inherited from IUnknown
typedef IUnknown * LPUNKNOWN
 
- Public Types inherited from IPersist
typedef IPersist * LPPERSIST
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRY * GetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 25 of file CShellItem.h.

Constructor & Destructor Documentation

◆ CShellItem()

CShellItem::CShellItem ( )

Definition at line 28 of file CShellItem.cpp.

28 :
30{
31}
LPITEMIDLIST m_pidl
Definition: CShellItem.h:32
#define NULL
Definition: types.h:112

◆ ~CShellItem()

CShellItem::~CShellItem ( )

Definition at line 33 of file CShellItem.cpp.

34{
36}
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:1051

Member Function Documentation

◆ BindToHandler()

HRESULT WINAPI CShellItem::BindToHandler ( IBindCtx *  pbc,
REFGUID  rbhid,
REFIID  riid,
void **  ppvOut 
)
override

Implements IShellItem.

Definition at line 109 of file CShellItem.cpp.

110{
111 HRESULT ret;
112 TRACE("(%p, %p,%s,%p,%p)\n", this, pbc, shdebugstr_guid(&rbhid), riid, ppvOut);
113
114 *ppvOut = NULL;
115 if (IsEqualGUID(rbhid, BHID_SFObject))
116 {
117 return get_shellfolder(pbc, riid, ppvOut);
118 }
119 else if (IsEqualGUID(rbhid, BHID_SFUIObject))
120 {
121 CComPtr<IShellFolder> psf_parent;
122 if (_ILIsDesktop(m_pidl))
123 ret = SHGetDesktopFolder(&psf_parent);
124 else
125 ret = get_parent_shellfolder(&psf_parent);
127 return ret;
128
130 return psf_parent->GetUIObjectOf(NULL, 1, &pidl, riid, NULL, ppvOut);
131 }
132 else if (IsEqualGUID(rbhid, BHID_DataObject))
133 {
134 return BindToHandler(pbc, BHID_SFUIObject, IID_IDataObject, ppvOut);
135 }
136 else if (IsEqualGUID(rbhid, BHID_SFViewObject))
137 {
141 return ret;
142
143 return psf->CreateViewObject(NULL, riid, ppvOut);
144 }
145
146 FIXME("Unsupported BHID %s.\n", debugstr_guid(&rbhid));
147
148 return MK_E_NOOBJECT;
149}
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
Definition: CBandSite.h:24
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define IID_PPV_ARG(Itype, ppType)
#define FIXME(fmt,...)
Definition: precomp.h:53
STDMETHOD() BindToHandler(IBindCtx *pbc, REFGUID rbhid, REFIID riid, void **ppvOut) override
Definition: CShellItem.cpp:109
HRESULT get_parent_shellfolder(IShellFolder **ppsf)
Definition: CShellItem.cpp:59
HRESULT get_shellfolder(IBindCtx *pbc, REFIID riid, void **ppvOut)
Definition: CShellItem.cpp:77
const char * shdebugstr_guid(const struct _GUID *id)
Definition: debughlp.cpp:438
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
return ret
Definition: mutex.c:147
REFIID riid
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
const GUID IID_IDataObject
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
Definition: pidl.c:199
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
#define TRACE(s)
Definition: solgame.cpp:4
#define MK_E_NOOBJECT
Definition: winerror.h:3898

Referenced by BindToHandler().

◆ Compare()

HRESULT WINAPI CShellItem::Compare ( IShellItem *  oth,
SICHINTF  hint,
int *  piOrder 
)
override

Implements IShellItem.

Definition at line 199 of file CShellItem.cpp.

200{
201 HRESULT hr;
203 CComPtr<IShellFolder> psfDesktop;
204 LPITEMIDLIST pidl;
205
206 TRACE("(%p,%p,%x,%p)\n", this, oth, hint, piOrder);
207
208 if (piOrder == NULL || oth == NULL)
209 return E_POINTER;
210
211 hr = oth->QueryInterface(IID_PPV_ARG(IPersistIDList, &pIDList));
212 if (SUCCEEDED(hr))
213 {
214 hr = pIDList->GetIDList(&pidl);
215 if (SUCCEEDED(hr))
216 {
217 hr = SHGetDesktopFolder(&psfDesktop);
218 if (SUCCEEDED(hr))
219 {
220 hr = psfDesktop->CompareIDs(hint, m_pidl, pidl);
221 *piOrder = (int)(short)SCODE_CODE(hr);
222 }
223 ILFree(pidl);
224 }
225 }
226
227 if(FAILED(hr))
228 return hr;
229
230 if(*piOrder)
231 return S_FALSE;
232 else
233 return S_OK;
234}
HRESULT hr
Definition: delayimp.cpp:582
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
DWORD hint
Definition: vfdcmd.c:88
#define S_FALSE
Definition: winerror.h:3451
#define E_POINTER
Definition: winerror.h:3480
#define SCODE_CODE(sc)
Definition: winerror.h:189

◆ get_converted_property()

HRESULT CShellItem::get_converted_property ( REFPROPERTYKEY  key,
PROPVARIANT *  ppropvar,
VARTYPE  vt 
)

Definition at line 299 of file CShellItem.cpp.

300{
301 PROPVARIANT pv;
302 pv.vt = VT_EMPTY;
303 HRESULT hr = GetProperty(key, &pv);
304 if (FAILED(hr))
305 return hr;
306 hr = SHELL_PropVariantChangeType(ppropvar, pv, vt);
307 PropVariantClear(&pv);
308 return hr;
309}
STDMETHOD() GetProperty(_In_ REFPROPERTYKEY key, _Out_ PROPVARIANT *ppropvar) override
Definition: CShellItem.cpp:286
HRESULT WINAPI PropVariantClear(PROPVARIANT *pvar)
Definition: combase.c:709
@ VT_EMPTY
Definition: compat.h:2295
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
Definition: suminfo.c:90
HRESULT SHELL_PropVariantChangeType(_Out_ PROPVARIANT *ppvDest, _In_ REFPROPVARIANT pvSrc, _In_ VARTYPE vt)
Definition: prop.cpp:207
Definition: copy.c:22

Referenced by GetBool(), GetCLSID(), GetFileTime(), GetInt32(), GetString(), GetUInt32(), and GetUInt64().

◆ get_parent_pidl()

HRESULT CShellItem::get_parent_pidl ( LPITEMIDLIST *  parent_pidl)

Definition at line 38 of file CShellItem.cpp.

39{
40 *parent_pidl = ILClone(m_pidl);
41 if (*parent_pidl)
42 {
43 if (ILRemoveLastID(*parent_pidl))
44 return S_OK;
45 else
46 {
47 ILFree(*parent_pidl);
48 *parent_pidl = NULL;
49 return E_INVALIDARG;
50 }
51 }
52 else
53 {
54 *parent_pidl = NULL;
55 return E_OUTOFMEMORY;
56 }
57}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:238
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
Definition: pidl.c:222

Referenced by get_parent_shellfolder(), and GetParent().

◆ get_parent_shellfolder()

HRESULT CShellItem::get_parent_shellfolder ( IShellFolder **  ppsf)

Definition at line 59 of file CShellItem.cpp.

60{
61 HRESULT hr;
62 LPITEMIDLIST parent_pidl;
64
65 hr = get_parent_pidl(&parent_pidl);
66 if (SUCCEEDED(hr))
67 {
68 hr = SHGetDesktopFolder(&desktop);
69 if (SUCCEEDED(hr))
70 hr = desktop->BindToObject(parent_pidl, NULL, IID_PPV_ARG(IShellFolder, ppsf));
71 ILFree(parent_pidl);
72 }
73
74 return hr;
75}
HRESULT get_parent_pidl(LPITEMIDLIST *parent_pidl)
Definition: CShellItem.cpp:38

Referenced by BindToHandler(), and GetAttributes().

◆ get_property_from_folder()

HRESULT CShellItem::get_property_from_folder ( REFPROPERTYKEY  key,
VARIANT *  pvar 
)

Definition at line 99 of file CShellItem.cpp.

100{
102 PCUITEMID_CHILD pidl;
104 if (SUCCEEDED(hr))
105 return psf->GetDetailsEx(pidl, (const SHCOLUMNID*)&key, pvar);
106 return hr;
107}
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
Definition: pidl.c:1504
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
Definition: shtypes.idl:70

Referenced by GetProperty().

◆ get_shellfolder()

HRESULT CShellItem::get_shellfolder ( IBindCtx *  pbc,
REFIID  riid,
void **  ppvOut 
)

Definition at line 77 of file CShellItem.cpp.

78{
80 CComPtr<IShellFolder> psfDesktop;
82
83 ret = SHGetDesktopFolder(&psfDesktop);
85 return ret;
86
88 psf = psfDesktop;
89 else
90 {
91 ret = psfDesktop->BindToObject(m_pidl, pbc, IID_PPV_ARG(IShellFolder, &psf));
93 return ret;
94 }
95
96 return psf->QueryInterface(riid, ppvOut);
97}

Referenced by BindToHandler().

◆ GetAttributes()

HRESULT WINAPI CShellItem::GetAttributes ( SFGAOF  sfgaoMask,
SFGAOF *  psfgaoAttribs 
)
override

Implements IShellItem.

Definition at line 173 of file CShellItem.cpp.

174{
175 CComPtr<IShellFolder> parent_folder;
176 LPCITEMIDLIST child_pidl;
177 HRESULT hr;
178
179 TRACE("(%p,%x,%p)\n", this, sfgaoMask, psfgaoAttribs);
180
181 if (_ILIsDesktop(m_pidl))
182 hr = SHGetDesktopFolder(&parent_folder);
183 else
184 hr = get_parent_shellfolder(&parent_folder);
186 return hr;
187
188 child_pidl = ILFindLastID(m_pidl);
189 *psfgaoAttribs = sfgaoMask;
190 hr = parent_folder->GetAttributesOf(1, &child_pidl, psfgaoAttribs);
191 *psfgaoAttribs &= sfgaoMask;
192
194 return hr;
195
196 return (sfgaoMask == *psfgaoAttribs) ? S_OK : S_FALSE;
197}

◆ GetBool()

HRESULT WINAPI CShellItem::GetBool ( _In_ REFPROPERTYKEY  key,
_Out_ BOOL *  pf 
)
override

Definition at line 385 of file CShellItem.cpp.

386{
387 if (!pf)
388 return E_INVALIDARG;
389
390 PROPVARIANT pv;
391 pv.vt = VT_EMPTY;
393 *pf = SUCCEEDED(hr) && V_BOOL((VARIANT*)&pv) != VARIANT_FALSE;
394 return hr;
395}
HRESULT get_converted_property(REFPROPERTYKEY key, PROPVARIANT *ppropvar, VARTYPE vt)
Definition: CShellItem.cpp:299
@ VT_BOOL
Definition: compat.h:2306
#define V_BOOL(A)
Definition: oleauto.h:224

◆ GetClassID()

HRESULT WINAPI CShellItem::GetClassID ( CLSID *  pClassID)
override

Implements IPersist.

Definition at line 397 of file CShellItem.cpp.

398{
399 TRACE("(%p,%p)\n", this, pClassID);
400
401 *pClassID = CLSID_ShellItem;
402 return S_OK;
403}

◆ GetCLSID()

HRESULT WINAPI CShellItem::GetCLSID ( _In_ REFPROPERTYKEY  key,
_Out_ CLSID *  pclsid 
)
override

Definition at line 311 of file CShellItem.cpp.

312{
313 if (!pclsid)
314 return E_INVALIDARG;
315
316 PROPVARIANT pv;
317 pv.vt = VT_EMPTY;
319 *pclsid = SUCCEEDED(hr) ? *pv.puuid : GUID_NULL;
320 PropVariantClear(&pv);
321 return hr;
322}
@ VT_CLSID
Definition: compat.h:2337
#define GUID_NULL
Definition: ks.h:106

◆ GetDisplayName()

HRESULT WINAPI CShellItem::GetDisplayName ( SIGDN  sigdnName,
LPWSTR *  ppszName 
)
override

Implements IShellItem.

Definition at line 168 of file CShellItem.cpp.

169{
171}
HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName)
Definition: pidl.c:1610
SIGDN PWSTR * ppszName
Definition: shobjidl.idl:651
SIGDN sigdnName
Definition: shobjidl.idl:651

◆ GetFileTime()

HRESULT WINAPI CShellItem::GetFileTime ( _In_ REFPROPERTYKEY  key,
_Out_ FILETIME *  pft 
)
override

Definition at line 324 of file CShellItem.cpp.

325{
326 if (!pft)
327 return E_INVALIDARG;
328
329 const FILETIME failval = {};
330 PROPVARIANT pv;
331 pv.vt = VT_EMPTY;
333 *pft = SUCCEEDED(hr) ? pv.filetime : failval;
334 return hr;
335}
@ VT_FILETIME
Definition: compat.h:2329

◆ GetIDList()

HRESULT WINAPI CShellItem::GetIDList ( PIDLIST_ABSOLUTE *  ppidl)
override

Implements IPersistIDList.

Definition at line 422 of file CShellItem.cpp.

423{
424 TRACE("(%p,%p)\n", this, ppidl);
425
426 *ppidl = ILClone(m_pidl);
427 if (*ppidl)
428 return S_OK;
429 else
430 return E_OUTOFMEMORY;
431}

◆ GetInt32()

HRESULT WINAPI CShellItem::GetInt32 ( _In_ REFPROPERTYKEY  key,
_Out_ int *  pi 
)
override

Definition at line 349 of file CShellItem.cpp.

350{
351 if (!pi)
352 return E_INVALIDARG;
353
354 PROPVARIANT pv;
355 pv.vt = VT_EMPTY;
357 *pi = SUCCEEDED(hr) ? pv.lVal : 0;
358 return hr;
359}
@ VT_I4
Definition: compat.h:2298
static PROCESS_INFORMATION pi
Definition: debugger.c:2303

◆ GetParent()

HRESULT WINAPI CShellItem::GetParent ( IShellItem **  ppsi)
override

Implements IShellItem.

Definition at line 151 of file CShellItem.cpp.

152{
153 HRESULT hr;
154 LPITEMIDLIST parent_pidl;
155
156 TRACE("(%p,%p)\n", this, ppsi);
157
158 hr = get_parent_pidl(&parent_pidl);
159 if (SUCCEEDED(hr))
160 {
161 hr = SHCreateShellItem(NULL, NULL, parent_pidl, ppsi);
162 ILFree(parent_pidl);
163 }
164
165 return hr;
166}
HRESULT WINAPI SHCreateShellItem(PCIDLIST_ABSOLUTE pidlParent, IShellFolder *psfParent, PCUITEMID_CHILD pidl, IShellItem **ppsi)
Definition: CShellItem.cpp:433

◆ GetProperty()

HRESULT WINAPI CShellItem::GetProperty ( _In_ REFPROPERTYKEY  key,
_Out_ PROPVARIANT *  ppropvar 
)
override

Definition at line 286 of file CShellItem.cpp.

287{
288 VARIANT v;
289 HRESULT hr = get_property_from_folder(key, &v); // TODO: BHID_PropertyStore?
290 if (FAILED(hr))
291 {
293 return hr;
295 }
296 return SHELL_VariantToPropVariant(&v, ppropvar);
297}
HRESULT get_property_from_folder(REFPROPERTYKEY key, VARIANT *pvar)
Definition: CShellItem.cpp:99
const GLdouble * v
Definition: gl.h:2040
#define HResultFromWin32
Definition: loader.cpp:14
HRESULT SHELL_VariantToPropVariant(_In_ const VARIANT *pVar, _Out_ PROPVARIANT *pPropVar)
Definition: prop.cpp:119
#define HRESULT_FACILITY(hr)
Definition: winerror.h:191
#define FACILITY_WIN32
Definition: winerror.h:29
#define ERROR_NOT_FOUND
Definition: winerror.h:1014

Referenced by get_converted_property().

◆ GetPropertyDescriptionList()

HRESULT WINAPI CShellItem::GetPropertyDescriptionList ( _In_ REFPROPERTYKEY  keyType,
_In_ REFIID  riid,
_Out_ void **  ppv 
)
override

Definition at line 270 of file CShellItem.cpp.

272{
273 if (!ppv)
274 return E_POINTER;
275 UNIMPLEMENTED; // TODO: propsys::PSCreatePropertyDescriptionList? IShellItemArray::GetPropertyDescriptionList?
276 *ppv = NULL;
277 return E_NOTIMPL;
278}
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
#define E_NOTIMPL
Definition: ddrawi.h:99
REFIID LPVOID * ppv
Definition: atlbase.h:39

◆ GetPropertyStore()

HRESULT WINAPI CShellItem::GetPropertyStore ( _In_ GETPROPERTYSTOREFLAGS  flags,
_In_ REFIID  riid,
_Out_ void **  ppv 
)

Definition at line 236 of file CShellItem.cpp.

238{
239 if (!ppv)
240 return E_POINTER;
242 *ppv = NULL;
243 return E_NOTIMPL;
244}

◆ GetPropertyStoreForKeys()

HRESULT WINAPI CShellItem::GetPropertyStoreForKeys ( const PROPERTYKEY *  rgKeys,
_In_ UINT  cKeys,
_In_ GETPROPERTYSTOREFLAGS  flags,
_In_ REFIID  riid,
_Out_ void **  ppv 
)
override

Definition at line 259 of file CShellItem.cpp.

262{
263 if (!ppv)
264 return E_POINTER;
266 *ppv = NULL;
267 return E_NOTIMPL;
268}

◆ GetPropertyStoreWithCreateObject()

HRESULT WINAPI CShellItem::GetPropertyStoreWithCreateObject ( _In_ GETPROPERTYSTOREFLAGS  flags,
_In_ IUnknown *  punkCreateObject,
_In_ REFIID  riid,
_Out_ void **  ppv 
)
override

Definition at line 246 of file CShellItem.cpp.

249{
250 if (!ppv)
251 return E_POINTER;
252 if (!punkCreateObject)
253 return E_INVALIDARG;
255 *ppv = NULL;
256 return E_NOTIMPL;
257}

◆ GetString()

HRESULT WINAPI CShellItem::GetString ( _In_ REFPROPERTYKEY  key,
_Out_ LPWSTR *  ppsz 
)
override

Definition at line 337 of file CShellItem.cpp.

338{
339 if (!ppsz)
340 return E_INVALIDARG;
341
342 PROPVARIANT pv;
343 pv.vt = VT_EMPTY;
345 *ppsz = SUCCEEDED(hr) ? pv.pwszVal : NULL; // Transferring ownership, don't call PropVariantClear
346 return hr;
347}
@ VT_LPWSTR
Definition: compat.h:2325

◆ GetUInt32()

HRESULT WINAPI CShellItem::GetUInt32 ( _In_ REFPROPERTYKEY  key,
_Out_ ULONG *  pui 
)
override

Definition at line 361 of file CShellItem.cpp.

362{
363 if (!pui)
364 return E_INVALIDARG;
365
366 PROPVARIANT pv;
367 pv.vt = VT_EMPTY;
369 *pui = SUCCEEDED(hr) ? pv.ulVal : 0;
370 return hr;
371}
@ VT_UI4
Definition: compat.h:2313
static PMONITORUI pui
Definition: localui.c:42

◆ GetUInt64()

HRESULT WINAPI CShellItem::GetUInt64 ( _In_ REFPROPERTYKEY  key,
_Out_ ULONGLONG *  pull 
)
override

Definition at line 373 of file CShellItem.cpp.

374{
375 if (!pull)
376 return E_INVALIDARG;
377
378 PROPVARIANT pv;
379 pv.vt = VT_EMPTY;
381 *pull = SUCCEEDED(hr) ? pv.uhVal.QuadPart : 0;
382 return hr;
383}
@ VT_UI8
Definition: compat.h:2315

◆ SetIDList()

HRESULT WINAPI CShellItem::SetIDList ( PCIDLIST_ABSOLUTE  pidl)
override

Implements IPersistIDList.

Definition at line 405 of file CShellItem.cpp.

406{
407 LPITEMIDLIST new_pidl;
408
409 TRACE("(%p,%p)\n", this, pidlx);
410
411 new_pidl = ILClone(pidlx);
412 if (new_pidl)
413 {
414 ILFree(m_pidl);
415 m_pidl = new_pidl;
416 return S_OK;
417 }
418 else
419 return E_OUTOFMEMORY;
420}

◆ Update()

HRESULT WINAPI CShellItem::Update ( _In_ IBindCtx *  pbc)
override

Definition at line 280 of file CShellItem.cpp.

281{
283 return E_NOTIMPL;
284}

Member Data Documentation

◆ m_pidl


The documentation for this class was generated from the following files: