ReactOS 0.4.16-dev-734-g364d6e0
CEnumIDList Class Reference

#include <cabview.h>

Inheritance diagram for CEnumIDList:
Collaboration diagram for CEnumIDList:

Public Member Functions

 CEnumIDList ()
 
virtual ~CEnumIDList ()
 
int FindNamedItem (PCUITEMID_CHILD pidl) const
 
HRESULT Fill (LPCWSTR path, HWND hwnd=NULL, SHCONTF contf=0)
 
HRESULT Fill (PCIDLIST_ABSOLUTE pidl, HWND hwnd=NULL, SHCONTF contf=0)
 
HRESULT Append (LPCITEMIDLIST pidl)
 
UINT GetCount () const
 
IFACEMETHODIMP Next (ULONG celt, PITEMID_CHILD *rgelt, ULONG *pceltFetched)
 
IFACEMETHODIMP Reset ()
 
IFACEMETHODIMP Skip (ULONG celt)
 
IFACEMETHODIMP Clone (IEnumIDList **ppenum)
 
 CEnumIDList ()
 
 ~CEnumIDList ()
 
HRESULT Initialize ()
 
STDMETHOD() Next (ULONG celt, PITEMID_CHILD *rgelt, ULONG *pceltFetched) override
 
STDMETHOD() Skip (ULONG celt) override
 
STDMETHOD() Reset () override
 
STDMETHOD() Clone (IEnumIDList **ppenum) 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 ()
 
HRESULT Next ([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] PITEMID_CHILD *rgelt, [out] ULONG *pceltFetched)
 
HRESULT Skip ([in] ULONG celt)
 
HRESULT Reset ()
 
HRESULT Clone ([out] IEnumIDList **ppenum)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Static Public Member Functions

static int CALLBACK DPADestroyCallback (void *pidl, void *pData)
 
static CEnumIDListCreateInstance ()
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 

Protected Attributes

HDPA m_Items
 
ULONG m_Pos
 

Private Member Functions

BOOL AddToEnumList (PITEMID_CHILD pidl)
 

Private Attributes

LPENUMLIST m_pFirst
 
LPENUMLIST m_pLast
 
LPENUMLIST m_pCurrent
 

Additional Inherited Members

- Public Types inherited from IEnumIDList
typedef IEnumIDListLPENUMIDLIST
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 26 of file cabview.h.

Constructor & Destructor Documentation

◆ CEnumIDList() [1/2]

CEnumIDList::CEnumIDList ( )
inline

Definition at line 41 of file cabview.h.

41 : m_Pos(0)
42 {
44 }
ULONG m_Pos
Definition: cabview.h:32
HDPA m_Items
Definition: cabview.h:31
HDPA WINAPI DPA_Create(INT nGrow)
Definition: dpa.c:950

◆ ~CEnumIDList() [1/2]

CEnumIDList::~CEnumIDList ( )
inlinevirtual

Definition at line 46 of file cabview.h.

47 {
49 }
static int CALLBACK DPADestroyCallback(void *pidl, void *pData)
Definition: cabview.h:35
#define NULL
Definition: types.h:112
void WINAPI DPA_DestroyCallback(HDPA hdpa, PFNDPAENUMCALLBACK enumProc, LPVOID lParam)
Definition: dpa.c:1003

◆ CEnumIDList() [2/2]

CEnumIDList::CEnumIDList ( )

◆ ~CEnumIDList() [2/2]

CEnumIDList::~CEnumIDList ( )

Member Function Documentation

◆ AddToEnumList()

BOOL CEnumIDList::AddToEnumList ( PITEMID_CHILD  pidl)
private

Definition at line 173 of file enumlist.cpp.

174{
175 LPENUMLIST pNew;
176
177 if (!pidl)
178 return FALSE;
179
180 pNew = static_cast<LPENUMLIST>(SHAlloc(sizeof(ENUMLIST)));
181 if (pNew)
182 {
183 pNew->pNext = NULL;
184 pNew->pidl = pidl;
185
186 if (!m_pFirst)
187 {
188 m_pFirst = pNew;
189 m_pCurrent = pNew;
190 }
191
192 if (m_pLast)
193 {
194 /*add the new item to the end of the list */
195 m_pLast->pNext = pNew;
196 }
197
198 /*update the last item pointer */
199 m_pLast = pNew;
200 return TRUE;
201 }
202 return FALSE;
203}
LPENUMLIST m_pFirst
Definition: enumlist.cpp:156
LPENUMLIST m_pCurrent
Definition: enumlist.cpp:158
LPENUMLIST m_pLast
Definition: enumlist.cpp:157
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:304
struct tagENUMLIST * pNext
Definition: enumlist.cpp:133
PITEMID_CHILD pidl
Definition: enumlist.cpp:134

Referenced by Initialize().

◆ Append()

HRESULT CEnumIDList::Append ( LPCITEMIDLIST  pidl)
inline

Definition at line 55 of file cabview.h.

56 {
57 return DPA_AppendPtr(m_Items, (void*)pidl) != DPA_ERR ? S_OK : E_OUTOFMEMORY;
58 }
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define S_OK
Definition: intsafe.h:52
#define DPA_ERR
Definition: commctrl.h:4790
#define DPA_AppendPtr(hdpa, pitem)
Definition: commctrl.h:4963

◆ Clone() [1/2]

IFACEMETHODIMP CEnumIDList::Clone ( IEnumIDList **  ppenum)
inline

Implements IEnumIDList.

Definition at line 95 of file cabview.h.

96 {
98 *ppenum = NULL;
99 return E_NOTIMPL;
100 }
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ Clone() [2/2]

STDMETHOD() CEnumIDList::Clone ( IEnumIDList **  ppenum)
override

Implements IEnumIDList.

◆ CreateInstance()

static CEnumIDList * CEnumIDList::CreateInstance ( )
inlinestatic

Definition at line 102 of file cabview.h.

103 {
104 CComPtr<CEnumIDList> obj;
105 return SUCCEEDED(ShellObjectCreator(obj)) ? obj.Detach() : NULL;
106 }
#define SUCCEEDED(hr)
Definition: intsafe.h:50

Referenced by CCabFolder::CreateEnum(), and CCabFolder::EnumObjects().

◆ DPADestroyCallback()

static int CALLBACK CEnumIDList::DPADestroyCallback ( void pidl,
void pData 
)
inlinestatic

Definition at line 35 of file cabview.h.

36 {
37 SHFree(pidl);
38 return TRUE;
39 }
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326

Referenced by ~CEnumIDList().

◆ Fill() [1/2]

HRESULT CEnumIDList::Fill ( LPCWSTR  path,
HWND  hwnd = NULL,
SHCONTF  contf = 0 
)

Definition at line 215 of file folder.cpp.

216{
217 FILLCALLBACKDATA data = { this, contf };
219}
HRESULT ExtractCabinet(LPCWSTR cab, LPCWSTR destination, EXTRACTCALLBACK callback, LPVOID cookie)
Definition: extract.cpp:189
static HRESULT CALLBACK EnumFillCallback(EXTRACTCALLBACKMSG msg, const EXTRACTCALLBACKDATA &ecd, LPVOID cookie)
Definition: folder.cpp:189
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

Referenced by CCabFolder::CreateEnum(), and Fill().

◆ Fill() [2/2]

HRESULT CEnumIDList::Fill ( PCIDLIST_ABSOLUTE  pidl,
HWND  hwnd = NULL,
SHCONTF  contf = 0 
)

Definition at line 221 of file folder.cpp.

222{
224 if (SHGetPathFromIDListW(pidl, path))
225 return Fill(path, hwnd, contf);
227}
HRESULT Fill(LPCWSTR path, HWND hwnd=NULL, SHCONTF contf=0)
Definition: folder.cpp:215
#define MAX_PATH
Definition: compat.h:34
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1454
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ FindNamedItem()

int CEnumIDList::FindNamedItem ( PCUITEMID_CHILD  pidl) const

Definition at line 171 of file folder.cpp.

172{
173 CABITEM *needle = (CABITEM*)pidl;
174 for (ULONG i = 0, c = GetCount(); i < c; ++i)
175 {
177 if (!lstrcmpiW(needle->Path, item->Path))
178 return i;
179 }
180 return -1;
181}
UINT GetCount() const
Definition: cabview.h:60
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4262
const GLubyte * c
Definition: glext.h:8905
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define c
Definition: ke_i.h:80
static ATOM item
Definition: dde.c:856
#define DPA_FastGetPtr(hdpa, i)
Definition: commctrl.h:4965
WCHAR Path[ANYSIZE_ARRAY]
Definition: folder.cpp:49
uint32_t ULONG
Definition: typedefs.h:59

◆ GetCount()

UINT CEnumIDList::GetCount ( ) const
inline

Definition at line 60 of file cabview.h.

60{ return m_Items ? DPA_GetPtrCount(m_Items) : 0; }
#define DPA_GetPtrCount(hdpa)
Definition: commctrl.h:4960

Referenced by FindNamedItem(), Next(), and Skip().

◆ Initialize()

HRESULT CEnumIDList::Initialize ( )

Definition at line 226 of file enumlist.cpp.

227{
228 HRESULT hr;
231 ULONG Count;
232 PITEMID_CHILD pidl;
233
234 /* get an instance to of IConnectionManager */
235 hr = CNetConnectionManager_CreateInstance(IID_PPV_ARG(INetConnectionManager, &pNetConMan));
237 return S_OK;
238
239 hr = pNetConMan->EnumConnections(NCME_DEFAULT, &pEnumCon);
241 return S_OK;
242
243 while (TRUE)
244 {
246
247 hr = pEnumCon->Next(1, &INetCon, &Count);
248 if (hr != S_OK)
249 break;
250
251 pidl = ILCreateNetConnectItem(INetCon);
252 if (pidl)
253 {
254 AddToEnumList(pidl);
255 }
256 }
257
258 return S_OK;
259}
BOOL AddToEnumList(PITEMID_CHILD pidl)
Definition: enumlist.cpp:173
HRESULT WINAPI CNetConnectionManager_CreateInstance(REFIID riid, LPVOID *ppv)
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
PITEMID_CHILD ILCreateNetConnectItem(INetConnection *pItem)
Definition: enumlist.cpp:37
@ NCME_DEFAULT
Definition: netcon.h:10
int Count
Definition: noreturn.cpp:7
HRESULT hr
Definition: shlfolder.c:183
#define IID_PPV_ARG(Itype, ppType)

◆ Next() [1/2]

HRESULT WINAPI CEnumIDList::Next ( ULONG  celt,
PITEMID_CHILD rgelt,
ULONG pceltFetched 
)
inline

Implements IEnumIDList.

Definition at line 63 of file cabview.h.

64 {
65 if (!rgelt)
66 return E_INVALIDARG;
68 UINT count = GetCount(), fetched = 0;
69 if (m_Pos < count && fetched < celt)
70 {
71 if (SUCCEEDED(hr = SHILClone(DPA_FastGetPtr(m_Items, m_Pos), &rgelt[fetched])))
72 fetched++;
73 }
74 if (pceltFetched)
75 *pceltFetched = fetched;
76 m_Pos += fetched;
77 return FAILED(hr) ? hr : (celt == fetched && fetched) ? S_OK : S_FALSE;
78 }
#define E_INVALIDARG
Definition: ddrawi.h:101
HRESULT SHILClone(_In_opt_ LPCITEMIDLIST pidl, _Outptr_ LPITEMIDLIST *ppidl)
Definition: utils.cpp:133
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define FAILED(hr)
Definition: intsafe.h:51
unsigned int UINT
Definition: ndis.h:50
#define S_FALSE
Definition: winerror.h:2357

◆ Next() [2/2]

STDMETHOD() CEnumIDList::Next ( ULONG  celt,
PITEMID_CHILD rgelt,
ULONG pceltFetched 
)
override

Implements IEnumIDList.

◆ Reset() [1/2]

HRESULT WINAPI CEnumIDList::Reset ( )
inline

Implements IEnumIDList.

Definition at line 80 of file cabview.h.

81 {
82 m_Pos = 0;
83 return S_OK;
84 }

◆ Reset() [2/2]

STDMETHOD() CEnumIDList::Reset ( )
override

Implements IEnumIDList.

◆ Skip() [1/2]

HRESULT WINAPI CEnumIDList::Skip ( ULONG  celt)
inline

Implements IEnumIDList.

Definition at line 86 of file cabview.h.

87 {
88 UINT count = GetCount(), newpos = m_Pos + celt;
89 if (celt > count || newpos >= count)
90 return E_INVALIDARG;
91 m_Pos = newpos;
92 return S_OK;
93 }

◆ Skip() [2/2]

STDMETHOD() CEnumIDList::Skip ( ULONG  celt)
override

Implements IEnumIDList.

Member Data Documentation

◆ m_Items

HDPA CEnumIDList::m_Items
protected

Definition at line 31 of file cabview.h.

Referenced by Append(), CEnumIDList(), FindNamedItem(), GetCount(), Next(), and ~CEnumIDList().

◆ m_pCurrent

LPENUMLIST CEnumIDList::m_pCurrent
private

Definition at line 158 of file enumlist.cpp.

Referenced by AddToEnumList().

◆ m_pFirst

LPENUMLIST CEnumIDList::m_pFirst
private

Definition at line 156 of file enumlist.cpp.

Referenced by AddToEnumList().

◆ m_pLast

LPENUMLIST CEnumIDList::m_pLast
private

Definition at line 157 of file enumlist.cpp.

Referenced by AddToEnumList().

◆ m_Pos

ULONG CEnumIDList::m_Pos
protected

Definition at line 32 of file cabview.h.

Referenced by Next(), Reset(), and Skip().


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