ReactOS 0.4.16-dev-959-g2ec3a19
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 NONAMELESSUNION
 
#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 IFURLITEMIsUrlItem (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 CInternetFolderCreateInstance (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 28 of file inetfolder.c.

◆ MAX_URL_LENGTH

#define MAX_URL_LENGTH   1024

Definition at line 25 of file inetfolder.c.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 8 of file inetfolder.c.

◆ PT_INTERNET_URL

#define PT_INTERNET_URL   0x61

Definition at line 27 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 186 of file inetfolder.c.

187{
188 *ppvOut = NULL;
189 return E_NOTIMPL;
190}
#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 192 of file inetfolder.c.

193{
194 *ppvOut = NULL;
195 return E_NOTIMPL;
196}

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 343 of file inetfolder.c.

344{
345 CInternetFolder *pThis;
346
347 *ppv = NULL;
348 if (outer)
350
351 if ((pThis = CreateInstance()) != NULL)
352 {
354 Unknown_Release(pThis);
355 return hr;
356 }
357 return E_OUTOFMEMORY;
358}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
static CInternetFolder * CreateInstance(void)
Definition: inetfolder.c:330
static HRESULT Unknown_QueryInterface(CInternetFolder *This, REFIID riid, PVOID *ppvObject)
Definition: inetfolder.c:106
static ULONG Unknown_Release(CInternetFolder *This)
Definition: inetfolder.c:127
HRESULT hr
Definition: shlfolder.c:183
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662

◆ CompareIDs()

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

Definition at line 198 of file inetfolder.c.

199{
200 IFURLITEM *pUrl1 = IsUrlItem(pidl1), *pUrl2 = IsUrlItem(pidl2);
201 if (pUrl1 && pUrl2)
202 {
203 WCHAR szUrl1[MAX_URL_LENGTH], *pszUrl1 = GetUrl(pUrl1, szUrl1);
204 WCHAR szUrl2[MAX_URL_LENGTH], *pszUrl2 = GetUrl(pUrl2, szUrl2);
205 int cmp = lstrcmpiW(pszUrl1, pszUrl2);
206 return cmp < 0 ? 0xffff : cmp != 0;
207 }
208 return E_FAIL;
209}
#define E_FAIL
Definition: ddrawi.h:102
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4262
static PWSTR GetUrl(IFURLITEM *pUrl, PWSTR Buffer)
Definition: inetfolder.c:82
#define MAX_URL_LENGTH
Definition: inetfolder.c:25
static IFURLITEM * IsUrlItem(LPCITEMIDLIST pidl)
Definition: inetfolder.c:74
#define cmp(status, error)
Definition: error.c:114
__wchar_t WCHAR
Definition: xmlstorage.h:180

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

◆ CreateInstance()

static CInternetFolder * CreateInstance ( void  )
static

Definition at line 330 of file inetfolder.c.

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

Referenced by CInternetFolder_CreateInstance(), ClassFactory_CreateInstance(), 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 58 of file inetfolder.c.

59{
60 UINT cch = lstrlenW(pszUrl) + 1;
62 IFURLITEM *pidl = SHAlloc(cb + sizeof(WORD));
63 if (!pidl)
64 return (LPITEMIDLIST)pidl;
65 pidl->cb = cb;
66 pidl->Type = PT_INTERNET_URL;
67 pidl->Flags = IFUIF_UNICODE;
68 pidl->Unknown = 0;
69 CopyMemory(pidl->Url, pszUrl, cch * sizeof(*pszUrl));
70 ILGetNext((LPITEMIDLIST)pidl)->mkid.cb = 0;
71 return (LPITEMIDLIST)pidl;
72}
#define lstrlenW
Definition: compat.h:750
unsigned short WORD
Definition: ntddk_ex.h:93
#define PT_INTERNET_URL
Definition: inetfolder.c:27
#define IFUIF_UNICODE
Definition: inetfolder.c:28
static DWORD DWORD void LPSTR DWORD cch
Definition: str.c:202
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
unsigned int UINT
Definition: ndis.h:50
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
Definition: pidl.c:970
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
BYTE Type
Definition: inetfolder.c:32
UINT Unknown
Definition: inetfolder.c:34
WCHAR Url[ANYSIZE_ARRAY]
Definition: inetfolder.c:35
BYTE Flags
Definition: inetfolder.c:33
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define CopyMemory
Definition: winbase.h:1741

Referenced by ParseDisplayName().

◆ CreateUrlShortcut()

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

Definition at line 90 of file inetfolder.c.

91{
92 HRESULT hr = CoCreateInstance(&CLSID_InternetShortcut, NULL, CLSCTX_INPROC_SERVER,
93 &IID_IUniformResourceLocatorW, (void**)ppv);
94 if (SUCCEEDED(hr))
95 hr = (*ppv)->lpVtbl->SetURL(*ppv, Url, 0);
96 return hr;
97}
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
#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 211 of file inetfolder.c.

212{
213 *ppv = NULL;
214 return E_NOTIMPL;
215}

◆ GetAttributesOf()

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

Definition at line 217 of file inetfolder.c.

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

Referenced by ShellDirectory::get_path().

◆ GetDisplayNameOf()

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

Definition at line 261 of file inetfolder.c.

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

Referenced by ShellFolder::get_name().

◆ GetSchemeCharType()

static int GetSchemeCharType ( WCHAR  c)
static

Definition at line 38 of file inetfolder.c.

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

Referenced by GetSchemeLength().

◆ GetSchemeLength()

static unsigned int GetSchemeLength ( PCWSTR  s)
static

Definition at line 45 of file inetfolder.c.

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

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 237 of file inetfolder.c.

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

◆ GetUrl()

static PWSTR GetUrl ( IFURLITEM pUrl,
PWSTR  Buffer 
)
static

Definition at line 82 of file inetfolder.c.

83{
84 if (pUrl->Flags & IFUIF_UNICODE)
85 return pUrl->Url;
87 return Buffer;
88}
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 74 of file inetfolder.c.

75{
76 IFURLITEM *p = (IFURLITEM*)pidl;
77 if (p && p->cb > FIELD_OFFSET(IFURLITEM, Url) && p->Type == PT_INTERNET_URL)
78 return p;
79 return NULL;
80}
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 153 of file inetfolder.c.

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

◆ PersistFolder_AddRef()

static ULONG WINAPI PersistFolder_AddRef ( IPersistFolder This)
static

Definition at line 285 of file inetfolder.c.

286{
287 return Unknown_AddRef(CONTAINING_RECORD(This, CInternetFolder, IPersistFolder_iface));
288}
static ULONG Unknown_AddRef(CInternetFolder *This)
Definition: inetfolder.c:122
#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 295 of file inetfolder.c.

296{
297 *pClassID = CLSID_Internet;
298 return S_OK;
299}

◆ PersistFolder_Initialize()

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

Definition at line 301 of file inetfolder.c.

302{
303 return S_OK;
304}

◆ PersistFolder_QueryInterface()

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

Definition at line 280 of file inetfolder.c.

281{
283}
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082

◆ PersistFolder_Release()

static ULONG WINAPI PersistFolder_Release ( IPersistFolder This)
static

Definition at line 290 of file inetfolder.c.

291{
292 return Unknown_Release(CONTAINING_RECORD(This, CInternetFolder, IPersistFolder_iface));
293}

◆ SetNameOf()

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

Definition at line 273 of file inetfolder.c.

274{
275 if (ppidlOut)
276 *ppidlOut = NULL;
277 return E_NOTIMPL;
278}

◆ 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 143 of file inetfolder.c.

144{
145 return Unknown_AddRef(CONTAINING_RECORD(This, CInternetFolder, IShellFolder_iface));
146}

◆ ShellFolder_EnumObjects()

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

Definition at line 180 of file inetfolder.c.

181{
182 *ppenumIDList = NULL;
183 return E_NOTIMPL;
184}

◆ ShellFolder_QueryInterface()

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

Definition at line 138 of file inetfolder.c.

139{
141}

◆ ShellFolder_Release()

static ULONG WINAPI ShellFolder_Release ( IShellFolder This)
static

Definition at line 148 of file inetfolder.c.

149{
150 return Unknown_Release(CONTAINING_RECORD(This, CInternetFolder, IShellFolder_iface));
151}

◆ Unknown_AddRef()

static ULONG Unknown_AddRef ( CInternetFolder This)
static

Definition at line 122 of file inetfolder.c.

123{
124 return InterlockedIncrement(&This->refCount);
125}
#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 106 of file inetfolder.c.

107{
108 TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppvObject);
109 *ppvObject = NULL;
111 *ppvObject = &This->IShellFolder_iface;
112 else if (IsEqualGUID(&IID_IShellFolder, riid))
113 *ppvObject = &This->IShellFolder_iface;
114 else if (IsEqualGUID(&IID_IPersist, riid) || IsEqualGUID(&IID_IPersistFolder, riid))
115 *ppvObject = &This->IPersistFolder_iface;
116 else
117 return E_NOINTERFACE;
118 IUnknown_AddRef((IUnknown*)*ppvObject);
119 return S_OK;
120}
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 127 of file inetfolder.c.

128{
129 const ULONG count = InterlockedDecrement(&This->refCount);
130 if (count == 0)
131 {
132 SHFree(This);
134 }
135 return count;
136}
#define InterlockedDecrement
Definition: armddk.h:52
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
GLuint GLuint GLsizei count
Definition: gl.h:1545
static void unlock_module(void)
Definition: ieframe.h:339
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:285
static HRESULT WINAPI PersistFolder_QueryInterface(IPersistFolder *This, REFIID riid, PVOID *ppvObject)
Definition: inetfolder.c:280
static HRESULT WINAPI PersistFolder_Initialize(IPersistFolder *This, PCIDLIST_ABSOLUTE pidl)
Definition: inetfolder.c:301
static ULONG WINAPI PersistFolder_Release(IPersistFolder *This)
Definition: inetfolder.c:290
static HRESULT WINAPI PersistFolder_GetClassID(IPersistFolder *This, CLSID *pClassID)
Definition: inetfolder.c:295

Definition at line 322 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:192
static HRESULT WINAPI CompareIDs(IShellFolder *This, LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
Definition: inetfolder.c:198
static HRESULT WINAPI BindToObject(IShellFolder *This, PCUIDLIST_RELATIVE pidl, IBindCtx *pbc, REFIID riid, void **ppvOut)
Definition: inetfolder.c:186
static HRESULT WINAPI SetNameOf(IShellFolder *This, HWND hwndOwner, PCUITEMID_CHILD pidl, LPCWSTR pszName, SHGDNF uFlags, PITEMID_CHILD *ppidlOut)
Definition: inetfolder.c:273
static ULONG WINAPI ShellFolder_AddRef(IShellFolder *This)
Definition: inetfolder.c:143
static ULONG WINAPI ShellFolder_Release(IShellFolder *This)
Definition: inetfolder.c:148
static HRESULT WINAPI ShellFolder_QueryInterface(IShellFolder *This, REFIID riid, PVOID *ppvObject)
Definition: inetfolder.c:138
static HRESULT WINAPI CreateViewObject(IShellFolder *This, HWND hwndOwner, REFIID riid, void **ppv)
Definition: inetfolder.c:211
static HRESULT WINAPI GetAttributesOf(IShellFolder *This, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, SFGAOF *rgfInOut)
Definition: inetfolder.c:217
static HRESULT WINAPI GetDisplayNameOf(IShellFolder *This, PCUITEMID_CHILD pidl, SHGDNF uFlags, STRRET *pSR)
Definition: inetfolder.c:261
static HRESULT WINAPI GetUIObjectOf(IShellFolder *This, HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *rgfReserved, void **ppv)
Definition: inetfolder.c:237
static HRESULT WINAPI ShellFolder_EnumObjects(IShellFolder *This, HWND hwndOwner, SHCONTF grfFlags, IEnumIDList **ppenumIDList)
Definition: inetfolder.c:180
static IParseDisplayName ParseDisplayName
Definition: moniker.c:816

Definition at line 306 of file inetfolder.c.

Referenced by CreateInstance().