ReactOS 0.4.15-dev-8100-g1887773
CNetFolderEnum Class Reference
Inheritance diagram for CNetFolderEnum:
Collaboration diagram for CNetFolderEnum:

Public Member Functions

 CNetFolderEnum ()
 
 ~CNetFolderEnum ()
 
HRESULT WINAPI Initialize (HWND hwndOwner, DWORD dwFlags)
 
BOOL CreateMyCompEnumList (DWORD dwFlags)
 
BOOL EnumerateRec (LPNETRESOURCE lpNet)
 
- Public Member Functions inherited from CEnumIDListBase
 CEnumIDListBase ()
 
virtual ~CEnumIDListBase ()
 
BOOL AddToEnumList (LPITEMIDLIST pidl)
 
BOOL DeleteList ()
 
BOOL HasItemWithCLSID (LPITEMIDLIST pidl)
 
HRESULT AppendItemsFromEnumerator (IEnumIDList *pEnum)
 
STDMETHOD() Next (ULONG celt, LPITEMIDLIST *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 ()
 
- Public Member Functions inherited from IEnumIDList
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 ()
 

Additional Inherited Members

- Public Types inherited from IEnumIDList
typedef IEnumIDListLPENUMIDLIST
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- 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)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 72 of file CNetFolder.cpp.

Constructor & Destructor Documentation

◆ CNetFolderEnum()

CNetFolderEnum::CNetFolderEnum ( )

Definition at line 101 of file CNetFolder.cpp.

102{
103}

◆ ~CNetFolderEnum()

CNetFolderEnum::~CNetFolderEnum ( )

Definition at line 105 of file CNetFolder.cpp.

106{
107}

Member Function Documentation

◆ CreateMyCompEnumList()

BOOL CNetFolderEnum::CreateMyCompEnumList ( DWORD  dwFlags)

Definition at line 195 of file CNetFolder.cpp.

196{
197 BOOL bRet = TRUE;
198
199 TRACE("(%p)->(flags=0x%08x)\n", this, dwFlags);
200
201 /* enumerate the folders */
202 if (dwFlags & SHCONTF_FOLDERS)
203 {
204 bRet = EnumerateRec(NULL);
205 }
206
207 return bRet;
208}
BOOL EnumerateRec(LPNETRESOURCE lpNet)
Definition: CNetFolder.cpp:121
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TRACE(s)
Definition: solgame.cpp:4
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176

Referenced by Initialize().

◆ EnumerateRec()

BOOL CNetFolderEnum::EnumerateRec ( LPNETRESOURCE  lpNet)

Definition at line 121 of file CNetFolder.cpp.

122{
123 BOOL bRet = TRUE;
124 DWORD dRet;
125 HANDLE hEnum;
126 LPNETRESOURCE lpRes;
127 DWORD dSize = 0x1000;
128 DWORD dCount = -1;
129 LPNETRESOURCE lpCur;
130
131 dRet = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0, lpNet, &hEnum);
132 if (dRet != WN_SUCCESS)
133 {
134 ERR("WNetOpenEnum() failed: %x\n", dRet);
135 return FALSE;
136 }
137
138 lpRes = (LPNETRESOURCE)CoTaskMemAlloc(dSize);
139 if (!lpRes)
140 {
141 ERR("CoTaskMemAlloc() failed\n");
142 WNetCloseEnum(hEnum);
143 return FALSE;
144 }
145
146 do
147 {
148 dSize = 0x1000;
149 dCount = -1;
150
151 memset(lpRes, 0, dSize);
152 dRet = WNetEnumResource(hEnum, &dCount, lpRes, &dSize);
153 if (dRet == WN_SUCCESS || dRet == WN_MORE_DATA)
154 {
155 lpCur = lpRes;
156 for (; dCount; dCount--)
157 {
158 TRACE("lpRemoteName: %S\n", lpCur->lpRemoteName);
159
161 {
162 TRACE("Found provider: %S\n", lpCur->lpProvider);
163 EnumerateRec(lpCur);
164 }
165 else
166 {
167 LPITEMIDLIST pidl;
168
169#ifdef HACKY_UNC_PATHS
171#endif
172 if (pidl != NULL)
173 bRet = AddToEnumList(pidl);
174 else
175 {
176 ERR("ILCreateFromPathW() failed\n");
177 bRet = FALSE;
178 break;
179 }
180 }
181
182 lpCur++;
183 }
184 }
185 } while (dRet != WN_NO_MORE_ENTRIES);
186
187 CoTaskMemFree(lpRes);
188 WNetCloseEnum(hEnum);
189
190 TRACE("Done: %u\n", bRet);
191
192 return bRet;
193}
LPITEMIDLIST ILCreateFromNetworkPlaceW(LPCWSTR lpNetworkPlace)
Definition: CNetFolder.cpp:31
#define ERR(fmt,...)
Definition: debug.h:113
BOOL AddToEnumList(LPITEMIDLIST pidl)
#define FALSE
Definition: types.h:117
unsigned long DWORD
Definition: ntddk_ex.h:95
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
#define memset(x, y, z)
Definition: compat.h:39
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
LPSTR lpProvider
Definition: winnetwk.h:174
LPSTR lpRemoteName
Definition: winnetwk.h:172
DWORD dwUsage
Definition: winnetwk.h:170
#define RESOURCETYPE_DISK
Definition: winnetwk.h:64
#define WN_MORE_DATA
Definition: winnetwk.h:117
#define WN_SUCCESS
Definition: winnetwk.h:111
#define WNetEnumResource
Definition: winnetwk.h:599
#define WNetOpenEnum
Definition: winnetwk.h:598
NETRESOURCEA * LPNETRESOURCE
Definition: winnetwk.h:593
#define RESOURCEUSAGE_CONTAINER
Definition: winnetwk.h:69
#define WN_NO_MORE_ENTRIES
Definition: winnetwk.h:146
#define RESOURCE_GLOBALNET
Definition: winnetwk.h:59
DWORD WINAPI WNetCloseEnum(HANDLE hEnum)
Definition: wnet.c:1760

Referenced by CreateMyCompEnumList(), and EnumerateRec().

◆ Initialize()

HRESULT WINAPI CNetFolderEnum::Initialize ( HWND  hwndOwner,
DWORD  dwFlags 
)

Definition at line 109 of file CNetFolder.cpp.

110{
112 return E_FAIL;
113
114 return S_OK;
115}
BOOL CreateMyCompEnumList(DWORD dwFlags)
Definition: CNetFolder.cpp:195
#define E_FAIL
Definition: ddrawi.h:102
#define S_OK
Definition: intsafe.h:52

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