ReactOS 0.4.17-dev-1190-g4c812f4
inetfolder.c File Reference
#include "ieframe.h"
#include "shlobj.h"
#include "shobjidl.h"
#include "shellapi.h"
#include "shlwapi.h"
#include "shlguid.h"
#include "intshcut.h"
#include "wine/debug.h"
Include dependency graph for inetfolder.c:

Go to the source code of this file.

Classes

struct  _IFURLITEM
 
struct  _CInternetFolder
 

Macros

#define MAX_URL_LENGTH   1024
 
#define PT_INTERNET_URL   0x61
 
#define IFUIF_UNICODE   0x80
 

Typedefs

typedef struct _IFURLITEM IFURLITEM
 
typedef struct _CInternetFolder CInternetFolder
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ieframe)
 
int WINAPI SHAnsiToUnicodeCP (UINT CodePage, LPCSTR pszSrc, LPWSTR pwszDst, int cwchBuf)
 
static int GetSchemeCharType (WCHAR c)
 
static unsigned int GetSchemeLength (PCWSTR s)
 
static LPITEMIDLIST CreateUrlItem (PCWSTR pszUrl)
 
static IFURLITEM * IsUrlItem (LPCITEMIDLIST pidl)
 
static PWSTR GetUrl (IFURLITEM *pUrl, PWSTR Buffer)
 
static HRESULT CreateUrlShortcut (PCWSTR Url, IUniformResourceLocatorW **ppv)
 
static HRESULT Unknown_QueryInterface (CInternetFolder *This, REFIID riid, PVOID *ppvObject)
 
static ULONG Unknown_AddRef (CInternetFolder *This)
 
static ULONG Unknown_Release (CInternetFolder *This)
 
static HRESULT WINAPI ShellFolder_QueryInterface (IShellFolder *This, REFIID riid, PVOID *ppvObject)
 
static ULONG WINAPI ShellFolder_AddRef (IShellFolder *This)
 
static ULONG WINAPI ShellFolder_Release (IShellFolder *This)
 
static HRESULT WINAPI ParseDisplayName (IShellFolder *This, HWND hwnd, IBindCtx *pbc, LPWSTR pszDisplayName, ULONG *pchEaten, PIDLIST_RELATIVE *ppidl, ULONG *pdwAttributes)
 
static HRESULT WINAPI ShellFolder_EnumObjects (IShellFolder *This, HWND hwndOwner, SHCONTF grfFlags, IEnumIDList **ppenumIDList)
 
static HRESULT WINAPI BindToObject (IShellFolder *This, PCUIDLIST_RELATIVE pidl, IBindCtx *pbc, REFIID riid, void **ppvOut)
 
static HRESULT WINAPI BindToStorage (IShellFolder *This, PCUIDLIST_RELATIVE pidl, IBindCtx *pbc, REFIID riid, void **ppvOut)
 
static HRESULT WINAPI CompareIDs (IShellFolder *This, LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
 
static HRESULT WINAPI CreateViewObject (IShellFolder *This, HWND hwndOwner, REFIID riid, void **ppv)
 
static HRESULT WINAPI GetAttributesOf (IShellFolder *This, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, SFGAOF *rgfInOut)
 
static HRESULT WINAPI GetUIObjectOf (IShellFolder *This, HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *rgfReserved, void **ppv)
 
static HRESULT WINAPI GetDisplayNameOf (IShellFolder *This, PCUITEMID_CHILD pidl, SHGDNF uFlags, STRRET *pSR)
 
static HRESULT WINAPI SetNameOf (IShellFolder *This, HWND hwndOwner, PCUITEMID_CHILD pidl, LPCWSTR pszName, SHGDNF uFlags, PITEMID_CHILD *ppidlOut)
 
static HRESULT WINAPI PersistFolder_QueryInterface (IPersistFolder *This, REFIID riid, PVOID *ppvObject)
 
static ULONG WINAPI PersistFolder_AddRef (IPersistFolder *This)
 
static ULONG WINAPI PersistFolder_Release (IPersistFolder *This)
 
static HRESULT WINAPI PersistFolder_GetClassID (IPersistFolder *This, CLSID *pClassID)
 
static HRESULT WINAPI PersistFolder_Initialize (IPersistFolder *This, PCIDLIST_ABSOLUTE pidl)
 
static CInternetFolder * CreateInstance (void)
 
HRESULT WINAPI CInternetFolder_CreateInstance (IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv)
 

Variables

static const IShellFolderVtbl ShellFolderVtbl
 
static const IPersistFolderVtbl PersistFolderVtbl
 

Macro Definition Documentation

◆ IFUIF_UNICODE

#define IFUIF_UNICODE   0x80

Definition at line 26 of file inetfolder.c.

◆ MAX_URL_LENGTH

#define MAX_URL_LENGTH   1024

Definition at line 23 of file inetfolder.c.

◆ PT_INTERNET_URL

#define PT_INTERNET_URL   0x61

Definition at line 25 of file inetfolder.c.

Typedef Documentation

◆ CInternetFolder

◆ IFURLITEM

Function Documentation

◆ BindToObject()

static HRESULT WINAPI BindToObject ( IShellFolder *  This,
PCUIDLIST_RELATIVE  pidl,
IBindCtx *  pbc,
REFIID  riid,
void **  ppvOut 
)
static

Definition at line 184 of file inetfolder.c.

185{
186 *ppvOut = NULL;
187 return E_NOTIMPL;
188}
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112

◆ BindToStorage()

static HRESULT WINAPI BindToStorage ( IShellFolder *  This,
PCUIDLIST_RELATIVE  pidl,
IBindCtx *  pbc,
REFIID  riid,
void **  ppvOut 
)
static

Definition at line 190 of file inetfolder.c.

191{
192 *ppvOut = NULL;
193 return E_NOTIMPL;
194}

Referenced by Moniker_BindToStorage(), test_editing_mode(), test_exec_editmode(), test_HlinkResolveMonikerForData(), and test_Load().

◆ CInternetFolder_CreateInstance()

HRESULT WINAPI CInternetFolder_CreateInstance ( IClassFactory *  iface,
IUnknown *  outer,
REFIID  riid,
void **  ppv 
)

Definition at line 341 of file inetfolder.c.

342{
343 CInternetFolder *pThis;
344
345 *ppv = NULL;
346 if (outer)
348
349 if ((pThis = CreateInstance()) != NULL)
350 {
352 Unknown_Release(pThis);
353 return hr;
354 }
355 return E_OUTOFMEMORY;
356}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
HRESULT hr
Definition: delayimp.cpp:582
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
static CInternetFolder * CreateInstance(void)
Definition: inetfolder.c:328
static HRESULT Unknown_QueryInterface(CInternetFolder *This, REFIID riid, PVOID *ppvObject)
Definition: inetfolder.c:104
static ULONG Unknown_Release(CInternetFolder *This)
Definition: inetfolder.c:125
static IUnknown * outer
Definition: compobj.c:82
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771

◆ CompareIDs()

static HRESULT WINAPI CompareIDs ( IShellFolder *  This,
LPARAM  lParam,
PCUIDLIST_RELATIVE  pidl1,
PCUIDLIST_RELATIVE  pidl2 
)
static

Definition at line 196 of file inetfolder.c.

197{
198 IFURLITEM *pUrl1 = IsUrlItem(pidl1), *pUrl2 = IsUrlItem(pidl2);
199 if (pUrl1 && pUrl2)
200 {
201 WCHAR szUrl1[MAX_URL_LENGTH], *pszUrl1 = GetUrl(pUrl1, szUrl1);
202 WCHAR szUrl2[MAX_URL_LENGTH], *pszUrl2 = GetUrl(pUrl2, szUrl2);
203 int cmp = lstrcmpiW(pszUrl1, pszUrl2);
204 return cmp < 0 ? 0xffff : cmp != 0;
205 }
206 return E_FAIL;
207}
#define E_FAIL
Definition: ddrawi.h:102
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4171
static PWSTR GetUrl(IFURLITEM *pUrl, PWSTR Buffer)
Definition: inetfolder.c:80
#define MAX_URL_LENGTH
Definition: inetfolder.c:23
static IFURLITEM * IsUrlItem(LPCITEMIDLIST pidl)
Definition: inetfolder.c:72
#define cmp(status, error)
Definition: error.c:118
short WCHAR
Definition: pedump.c:58

Referenced by CCommonFolder< TSelf, TItemId, TExtractIcon >::CompareIDs().

◆ CreateInstance()

static CInternetFolder * CreateInstance ( void  )
static

Definition at line 328 of file inetfolder.c.

329{
331 if (obj)
332 {
333 obj->IShellFolder_iface.lpVtbl = &ShellFolderVtbl;
334 obj->IPersistFolder_iface.lpVtbl = &PersistFolderVtbl;
335 obj->refCount = 1;
336 lock_module();
337 }
338 return obj;
339}
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:348
static void lock_module(void)
Definition: ieframe.h:342
static const IShellFolderVtbl ShellFolderVtbl
Definition: inetfolder.c:304
static const IPersistFolderVtbl PersistFolderVtbl
Definition: inetfolder.c:320

Referenced by CInternetFolder_CreateInstance(), ClassFactory_CreateInstance(), CFolder::CreateInstance(), DECLARE_INTERFACE_(), Protocol_Continue(), Protocol_Start(), ProtocolCF_CreateInstance(), ProtocolEmul_Continue(), test_ActiveXObject(), test_binding(), test_create_element(), test_CreateBinding(), test_CreateObject(), test_download(), test_event_binding(), test_flash_ax(), test_NameSpace(), test_nooleobj_ax(), test_noquickact_ax(), test_simple_script(), test_submit(), and thread_proc().

◆ CreateUrlItem()

static LPITEMIDLIST CreateUrlItem ( PCWSTR  pszUrl)
static

Definition at line 56 of file inetfolder.c.

57{
58 UINT cch = lstrlenW(pszUrl) + 1;
60 IFURLITEM *pidl = SHAlloc(cb + sizeof(WORD));
61 if (!pidl)
62 return (LPITEMIDLIST)pidl;
63 pidl->cb = cb;
64 pidl->Type = PT_INTERNET_URL;
65 pidl->Flags = IFUIF_UNICODE;
66 pidl->Unknown = 0;
67 CopyMemory(pidl->Url, pszUrl, cch * sizeof(*pszUrl));
68 ILGetNext((LPITEMIDLIST)pidl)->mkid.cb = 0;
69 return (LPITEMIDLIST)pidl;
70}
#define lstrlenW
Definition: compat.h:750
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int UINT
Definition: sysinfo.c:13
#define PT_INTERNET_URL
Definition: inetfolder.c:25
#define IFUIF_UNICODE
Definition: inetfolder.c:26
#define CopyMemory
Definition: minwinbase.h:29
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
Definition: pidl.c:977
_In_ UINT _In_ UINT cch
Definition: shellapi.h:428
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
BYTE Type
Definition: inetfolder.c:30
UINT Unknown
Definition: inetfolder.c:32
WCHAR Url[ANYSIZE_ARRAY]
Definition: inetfolder.c:33
BYTE Flags
Definition: inetfolder.c:31
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255

Referenced by ParseDisplayName().

◆ CreateUrlShortcut()

static HRESULT CreateUrlShortcut ( PCWSTR  Url,
IUniformResourceLocatorW **  ppv 
)
static

Definition at line 88 of file inetfolder.c.

89{
90 HRESULT hr = CoCreateInstance(&CLSID_InternetShortcut, NULL, CLSCTX_INPROC_SERVER,
91 &IID_IUniformResourceLocatorW, (void**)ppv);
92 if (SUCCEEDED(hr))
93 hr = (*ppv)->lpVtbl->SetURL(*ppv, Url, 0);
94 return hr;
95}
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
#define SUCCEEDED(hr)
Definition: intsafe.h:50

Referenced by GetUIObjectOf().

◆ CreateViewObject()

static HRESULT WINAPI CreateViewObject ( IShellFolder *  This,
HWND  hwndOwner,
REFIID  riid,
void **  ppv 
)
static

Definition at line 209 of file inetfolder.c.

210{
211 *ppv = NULL;
212 return E_NOTIMPL;
213}

◆ GetAttributesOf()

static HRESULT WINAPI GetAttributesOf ( IShellFolder *  This,
UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
SFGAOF *  rgfInOut 
)
static

Definition at line 215 of file inetfolder.c.

216{
217 UINT i;
218
219 if (cidl == 0)
220 {
221 *rgfInOut &= SFGAO_FOLDER | SFGAO_CANLINK | SFGAO_STREAM; // Folder attributes
222 return S_OK;
223 }
224
225 for (i = 0; i < cidl; ++i)
226 {
227 IFURLITEM *pUrl = IsUrlItem(apidl[i]);
228 if (!pUrl)
229 return E_FAIL;
230 *rgfInOut &= SFGAO_CANLINK | SFGAO_BROWSABLE | SFGAO_STREAM;
231 }
232 return S_OK;
233}
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 S_OK
Definition: intsafe.h:52

◆ GetDisplayNameOf()

static HRESULT WINAPI GetDisplayNameOf ( IShellFolder *  This,
PCUITEMID_CHILD  pidl,
SHGDNF  uFlags,
STRRET *  pSR 
)
static

Definition at line 259 of file inetfolder.c.

260{
261 IFURLITEM *pUrl = IsUrlItem(pidl);
262 if (pUrl)
263 {
264 WCHAR szUrl[MAX_URL_LENGTH], *pszUrl = GetUrl(pUrl, szUrl);
265 pSR->uType = STRRET_WSTR;
266 return SHStrDupW(pszUrl, &pSR->pOleStr);
267 }
268 return E_FAIL;
269}
HRESULT WINAPI SHStrDupW(const WCHAR *src, WCHAR **dest)
Definition: main.c:1692
@ STRRET_WSTR
Definition: shtypes.idl:85
UINT uType
Definition: shtypes.idl:93
LPWSTR pOleStr
Definition: shtypes.idl:96

◆ GetSchemeCharType()

static int GetSchemeCharType ( WCHAR  c)
static

Definition at line 36 of file inetfolder.c.

37{
38 if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))
39 return 0;
40 return c == '+' || c == '-' || c == '.' ? 1 : -1;
41}
const GLubyte * c
Definition: glext.h:8905

Referenced by GetSchemeLength().

◆ GetSchemeLength()

static unsigned int GetSchemeLength ( PCWSTR  s)
static

Definition at line 43 of file inetfolder.c.

44{
45 if (GetSchemeCharType(s[0]) != 0) // The first character MUST be A-Z, a-z.
46 return 0;
47 for (unsigned int i = 0;;)
48 {
49 if (s[++i] == ':')
50 return ++i;
51 if (GetSchemeCharType(s[i]) < 0)
52 return 0;
53 }
54}
GLdouble s
Definition: gl.h:2039
static int GetSchemeCharType(WCHAR c)
Definition: inetfolder.c:36

Referenced by ParseDisplayName().

◆ GetUIObjectOf()

static HRESULT WINAPI GetUIObjectOf ( IShellFolder *  This,
HWND  hwndOwner,
UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
REFIID  riid,
UINT *  rgfReserved,
void **  ppv 
)
static

Definition at line 235 of file inetfolder.c.

236{
237 IFURLITEM *pUrl;
238 if (cidl == 1 && (pUrl = IsUrlItem(apidl[0])) != NULL)
239 {
240 if (IsEqualIID(riid, &IID_IExtractIconW) || IsEqualIID(riid, &IID_IExtractIconA) ||
241 IsEqualIID(riid, &IID_IContextMenu) ||
243 IsEqualIID(riid, &IID_IQueryInfo))
244 {
245 IUniformResourceLocatorW *pUrlLnk;
246 WCHAR szUrl[MAX_URL_LENGTH], *pszUrl = GetUrl(pUrl, szUrl);
247 HRESULT hr = CreateUrlShortcut(pszUrl, &pUrlLnk);
248 if (SUCCEEDED(hr))
249 {
250 hr = IUnknown_QueryInterface(pUrlLnk, riid, ppv);
251 IUnknown_Release(pUrlLnk);
252 }
253 return hr;
254 }
255 }
256 return E_NOINTERFACE;
257}
static HRESULT CreateUrlShortcut(PCWSTR Url, IUniformResourceLocatorW **ppv)
Definition: inetfolder.c:88
const GUID IID_IDataObject
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ GetUrl()

static PWSTR GetUrl ( IFURLITEM *  pUrl,
PWSTR  Buffer 
)
static

Definition at line 80 of file inetfolder.c.

81{
82 if (pUrl->Flags & IFUIF_UNICODE)
83 return pUrl->Url;
85 return Buffer;
86}
Definition: bufpool.h:45
#define CP_ACP
Definition: compat.h:109
int WINAPI SHAnsiToUnicodeCP(UINT CodePage, LPCSTR pszSrc, LPWSTR pwszDst, int cwchBuf)
const char * PCSTR
Definition: typedefs.h:52

Referenced by CompareIDs(), GetDisplayNameOf(), and GetUIObjectOf().

◆ IsUrlItem()

static IFURLITEM * IsUrlItem ( LPCITEMIDLIST  pidl)
static

Definition at line 72 of file inetfolder.c.

73{
74 IFURLITEM *p = (IFURLITEM*)pidl;
75 if (p && p->cb > FIELD_OFFSET(IFURLITEM, Url) && p->Type == PT_INTERNET_URL)
76 return p;
77 return NULL;
78}
GLfloat GLfloat p
Definition: glext.h:8902

Referenced by CompareIDs(), GetAttributesOf(), GetDisplayNameOf(), and GetUIObjectOf().

◆ ParseDisplayName()

static HRESULT WINAPI ParseDisplayName ( IShellFolder *  This,
HWND  hwnd,
IBindCtx *  pbc,
LPWSTR  pszDisplayName,
ULONG *  pchEaten,
PIDLIST_RELATIVE *  ppidl,
ULONG *  pdwAttributes 
)
static

Definition at line 151 of file inetfolder.c.

152{
153 UINT len;
154
155 *ppidl = NULL;
156 len = GetSchemeLength(pszDisplayName);
157 if (len)
158 {
159 if (len + 1 == sizeof("shell:"))
160 {
161 WCHAR szBuf[100];
162 lstrcpynW(szBuf, pszDisplayName, sizeof("shell:"));
163 if (!lstrcmpiW(szBuf, L"shell:"))
164 return E_FAIL;
165 }
166
167 if ((*ppidl = CreateUrlItem(pszDisplayName)) == NULL)
168 return E_OUTOFMEMORY;
169 if (pchEaten)
170 *pchEaten = lstrlenW(pszDisplayName);
171 if (pdwAttributes)
172 IShellFolder_GetAttributesOf(This, 1, (PCUITEMID_CHILD_ARRAY)ppidl, pdwAttributes);
173 return S_OK;
174 }
175 return E_FAIL;
176}
#define lstrcpynW
Definition: compat.h:738
#define L(x)
Definition: resources.c:13
GLenum GLsizei len
Definition: glext.h:6722
static unsigned int GetSchemeLength(PCWSTR s)
Definition: inetfolder.c:43
static LPITEMIDLIST CreateUrlItem(PCWSTR pszUrl)
Definition: inetfolder.c:56
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
Definition: shtypes.idl:71

◆ PersistFolder_AddRef()

static ULONG WINAPI PersistFolder_AddRef ( IPersistFolder *  This)
static

Definition at line 283 of file inetfolder.c.

284{
285 return Unknown_AddRef(CONTAINING_RECORD(This, CInternetFolder, IPersistFolder_iface));
286}
static ULONG Unknown_AddRef(CInternetFolder *This)
Definition: inetfolder.c:120
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

◆ PersistFolder_GetClassID()

static HRESULT WINAPI PersistFolder_GetClassID ( IPersistFolder *  This,
CLSID *  pClassID 
)
static

Definition at line 293 of file inetfolder.c.

294{
295 *pClassID = CLSID_Internet;
296 return S_OK;
297}

◆ PersistFolder_Initialize()

static HRESULT WINAPI PersistFolder_Initialize ( IPersistFolder *  This,
PCIDLIST_ABSOLUTE  pidl 
)
static

Definition at line 299 of file inetfolder.c.

300{
301 return S_OK;
302}

◆ PersistFolder_QueryInterface()

static HRESULT WINAPI PersistFolder_QueryInterface ( IPersistFolder *  This,
REFIID  riid,
PVOID *  ppvObject 
)
static

Definition at line 278 of file inetfolder.c.

279{
280 return Unknown_QueryInterface(CONTAINING_RECORD(This, CInternetFolder, IPersistFolder_iface), riid, ppvObject);
281}

◆ PersistFolder_Release()

static ULONG WINAPI PersistFolder_Release ( IPersistFolder *  This)
static

Definition at line 288 of file inetfolder.c.

289{
290 return Unknown_Release(CONTAINING_RECORD(This, CInternetFolder, IPersistFolder_iface));
291}

◆ SetNameOf()

static HRESULT WINAPI SetNameOf ( IShellFolder *  This,
HWND  hwndOwner,
PCUITEMID_CHILD  pidl,
LPCWSTR  pszName,
SHGDNF  uFlags,
PITEMID_CHILD *  ppidlOut 
)
static

Definition at line 271 of file inetfolder.c.

272{
273 if (ppidlOut)
274 *ppidlOut = NULL;
275 return E_NOTIMPL;
276}

◆ SHAnsiToUnicodeCP()

int WINAPI SHAnsiToUnicodeCP ( UINT  CodePage,
LPCSTR  pszSrc,
LPWSTR  pwszDst,
int  cwchBuf 
)

Referenced by GetUrl().

◆ ShellFolder_AddRef()

static ULONG WINAPI ShellFolder_AddRef ( IShellFolder *  This)
static

Definition at line 141 of file inetfolder.c.

142{
143 return Unknown_AddRef(CONTAINING_RECORD(This, CInternetFolder, IShellFolder_iface));
144}

◆ ShellFolder_EnumObjects()

static HRESULT WINAPI ShellFolder_EnumObjects ( IShellFolder *  This,
HWND  hwndOwner,
SHCONTF  grfFlags,
IEnumIDList **  ppenumIDList 
)
static

Definition at line 178 of file inetfolder.c.

179{
180 *ppenumIDList = NULL;
181 return E_NOTIMPL;
182}

◆ ShellFolder_QueryInterface()

static HRESULT WINAPI ShellFolder_QueryInterface ( IShellFolder *  This,
REFIID  riid,
PVOID *  ppvObject 
)
static

Definition at line 136 of file inetfolder.c.

137{
138 return Unknown_QueryInterface(CONTAINING_RECORD(This, CInternetFolder, IShellFolder_iface), riid, ppvObject);
139}

◆ ShellFolder_Release()

static ULONG WINAPI ShellFolder_Release ( IShellFolder *  This)
static

Definition at line 146 of file inetfolder.c.

147{
148 return Unknown_Release(CONTAINING_RECORD(This, CInternetFolder, IShellFolder_iface));
149}

◆ Unknown_AddRef()

static ULONG Unknown_AddRef ( CInternetFolder *  This)
static

Definition at line 120 of file inetfolder.c.

121{
122 return InterlockedIncrement(&This->refCount);
123}
#define InterlockedIncrement
Definition: armddk.h:53

Referenced by PersistFolder_AddRef(), and ShellFolder_AddRef().

◆ Unknown_QueryInterface()

static HRESULT Unknown_QueryInterface ( CInternetFolder *  This,
REFIID  riid,
PVOID *  ppvObject 
)
static

Definition at line 104 of file inetfolder.c.

105{
106 TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppvObject);
107 *ppvObject = NULL;
109 *ppvObject = &This->IShellFolder_iface;
110 else if (IsEqualGUID(&IID_IShellFolder, riid))
111 *ppvObject = &This->IShellFolder_iface;
112 else if (IsEqualGUID(&IID_IPersist, riid) || IsEqualGUID(&IID_IPersistFolder, riid))
113 *ppvObject = &This->IPersistFolder_iface;
114 else
115 return E_NOINTERFACE;
116 IUnknown_AddRef((IUnknown*)*ppvObject);
117 return S_OK;
118}
const GUID IID_IUnknown
#define debugstr_guid
Definition: kernel32.h:35
const GUID IID_IPersist
Definition: proxy.cpp:14
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by CInternetFolder_CreateInstance(), PersistFolder_QueryInterface(), and ShellFolder_QueryInterface().

◆ Unknown_Release()

static ULONG Unknown_Release ( CInternetFolder *  This)
static

Definition at line 125 of file inetfolder.c.

126{
127 const ULONG count = InterlockedDecrement(&This->refCount);
128 if (count == 0)
129 {
130 SHFree(This);
132 }
133 return count;
134}
#define InterlockedDecrement
Definition: armddk.h:52
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:370
GLuint GLuint GLsizei count
Definition: gl.h:1545
static void unlock_module(void)
Definition: ieframe.h:346
uint32_t ULONG
Definition: typedefs.h:59

Referenced by CInternetFolder_CreateInstance(), PersistFolder_Release(), and ShellFolder_Release().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ieframe  )

Variable Documentation

◆ PersistFolderVtbl

const IPersistFolderVtbl PersistFolderVtbl
static
Initial value:
= {
}
static ULONG WINAPI PersistFolder_AddRef(IPersistFolder *This)
Definition: inetfolder.c:283
static HRESULT WINAPI PersistFolder_QueryInterface(IPersistFolder *This, REFIID riid, PVOID *ppvObject)
Definition: inetfolder.c:278
static HRESULT WINAPI PersistFolder_Initialize(IPersistFolder *This, PCIDLIST_ABSOLUTE pidl)
Definition: inetfolder.c:299
static ULONG WINAPI PersistFolder_Release(IPersistFolder *This)
Definition: inetfolder.c:288
static HRESULT WINAPI PersistFolder_GetClassID(IPersistFolder *This, CLSID *pClassID)
Definition: inetfolder.c:293

Definition at line 320 of file inetfolder.c.

Referenced by CreateInstance().

◆ ShellFolderVtbl

const IShellFolderVtbl ShellFolderVtbl
static
Initial value:
= {
}
static HRESULT WINAPI BindToStorage(IShellFolder *This, PCUIDLIST_RELATIVE pidl, IBindCtx *pbc, REFIID riid, void **ppvOut)
Definition: inetfolder.c:190
static HRESULT WINAPI CompareIDs(IShellFolder *This, LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
Definition: inetfolder.c:196
static HRESULT WINAPI BindToObject(IShellFolder *This, PCUIDLIST_RELATIVE pidl, IBindCtx *pbc, REFIID riid, void **ppvOut)
Definition: inetfolder.c:184
static HRESULT WINAPI SetNameOf(IShellFolder *This, HWND hwndOwner, PCUITEMID_CHILD pidl, LPCWSTR pszName, SHGDNF uFlags, PITEMID_CHILD *ppidlOut)
Definition: inetfolder.c:271
static ULONG WINAPI ShellFolder_AddRef(IShellFolder *This)
Definition: inetfolder.c:141
static ULONG WINAPI ShellFolder_Release(IShellFolder *This)
Definition: inetfolder.c:146
static HRESULT WINAPI ShellFolder_QueryInterface(IShellFolder *This, REFIID riid, PVOID *ppvObject)
Definition: inetfolder.c:136
static HRESULT WINAPI CreateViewObject(IShellFolder *This, HWND hwndOwner, REFIID riid, void **ppv)
Definition: inetfolder.c:209
static HRESULT WINAPI GetAttributesOf(IShellFolder *This, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, SFGAOF *rgfInOut)
Definition: inetfolder.c:215
static HRESULT WINAPI GetDisplayNameOf(IShellFolder *This, PCUITEMID_CHILD pidl, SHGDNF uFlags, STRRET *pSR)
Definition: inetfolder.c:259
static HRESULT WINAPI GetUIObjectOf(IShellFolder *This, HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *rgfReserved, void **ppv)
Definition: inetfolder.c:235
static HRESULT WINAPI ShellFolder_EnumObjects(IShellFolder *This, HWND hwndOwner, SHCONTF grfFlags, IEnumIDList **ppenumIDList)
Definition: inetfolder.c:178
static IParseDisplayName ParseDisplayName
Definition: moniker.c:1141

Definition at line 304 of file inetfolder.c.

Referenced by CreateInstance().