ReactOS 0.4.16-dev-2613-g9533ad7
shell32.cpp
Go to the documentation of this file.
1/*
2 * Shell basics
3 *
4 * Copyright 1998 Marcus Meissner
5 * Copyright 1998 Juergen Schmied (jsch) * <juergen.schmied@metronet.de>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#include "precomp.h"
23
24#include "shell32_version.h"
25
27
28/*
29 * Implemented
30 */
33AddCommasW(DWORD lValue, LPWSTR lpNumber)
34{
35 WCHAR szValue[MAX_PATH], szSeparator[8 + 1], szGrouping[10 + 1];
36 NUMBERFMTW numFormat;
37
40 szSeparator,
41 _countof(szSeparator));
42
43 /* Parse LOCALE_SGROUPING into NUMBERFMTW::Grouping.
44 * Accumulate the digit groups left-to-right. If there's no trailing ';0'
45 * the last group repeats, so multiply by 10. */
46 DWORD dwGrouping = 3;
49 szGrouping,
50 _countof(szGrouping)))
51 {
52 PWSTR p = szGrouping;
53 dwGrouping = 0;
54 while (*p)
55 {
56 if (*p >= L'1' && *p <= L'9')
57 dwGrouping = dwGrouping * 10 + (*p - L'0');
58 p++;
59 }
60 if (p > szGrouping && *(p - 1) != L'0')
61 dwGrouping *= 10;
62 }
63 numFormat.NumDigits = 0;
64 numFormat.LeadingZero = 0;
65 numFormat.Grouping = dwGrouping;
66 numFormat.lpDecimalSep = szSeparator;
67 numFormat.lpThousandSep = szSeparator;
68 numFormat.NegativeOrder = 0;
69
70 swprintf(szValue, L"%lu", lValue);
71
73 0,
74 szValue,
75 &numFormat,
76 lpNumber,
77 MAX_PATH) != 0)
78 {
79 return lpNumber;
80 }
81
82 wcscpy(lpNumber, szValue);
83 return lpNumber;
84}
85
86/*
87 * Implemented
88 */
91RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
92{
95 return FALSE;
96
97 BOOL bResult = CreateEnvironmentBlock(lpEnvironment, hUserToken, TRUE);
98 if (!bResult || !lpEnvironment)
99 {
101 return FALSE;
102 }
103
104 if (bUpdateSelf)
105 {
106 LPWSTR pszz = (LPWSTR)*lpEnvironment;
107 if (!pszz)
108 return FALSE;
109
110 while (*pszz)
111 {
112 size_t cch = wcslen(pszz);
113 LPWSTR pchEqual = wcschr(pszz, L'=');
114 if (pchEqual)
115 {
116 CStringW strName(pszz, pchEqual - pszz);
117 SetEnvironmentVariableW(strName, pchEqual + 1);
118 }
119 pszz += cch + 1;
120 }
121 }
122
124
125 return bResult;
126}
127
128/**************************************************************************
129 * Default ClassFactory types
130 */
131typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown* pUnkOuter, REFIID riid, LPVOID* ppvObject);
132HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInst, IClassFactory **theFactory);
133
134
135/**************************************************************************
136 * Default ClassFactory Implementation
137 *
138 * SHCreateDefClassObject
139 *
140 * NOTES
141 * Helper function for dlls without their own classfactory.
142 * A generic classfactory is returned.
143 * When the CreateInstance of the cf is called the callback is executed.
144 */
145
147 public CComObjectRootEx<CComMultiThreadModelNoCS>,
148 public IClassFactory
149{
150private:
153 const IID *riidInst;
154 LONG *pcRefDll; /* pointer to refcounter in external dll (ugrrr...) */
155public:
156 IDefClFImpl();
158
159 // IClassFactory
160 STDMETHOD(CreateInstance)(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppvObject) override;
161 STDMETHOD(LockServer)(BOOL fLock) override;
162
166};
167
169{
170 lpfnCI = NULL;
171 riidInst = NULL;
172 pcRefDll = NULL;
173 rclsid = NULL;
174}
175
176HRESULT IDefClFImpl::Initialize(LPFNCREATEINSTANCE lpfnCIx, PLONG pcRefDllx, const IID *riidInstx)
177{
178 lpfnCI = lpfnCIx;
179 riidInst = riidInstx;
180 pcRefDll = pcRefDllx;
181
182 if (pcRefDll)
184
185 TRACE("(%p)%s\n", this, shdebugstr_guid(riidInst));
186 return S_OK;
187}
188
189/******************************************************************************
190 * IDefClF_fnCreateInstance
191 */
193{
194 TRACE("%p->(%p,%s,%p)\n", this, pUnkOuter, shdebugstr_guid(&riid), ppvObject);
195
196 *ppvObject = NULL;
197
199 {
200 return lpfnCI(pUnkOuter, riid, ppvObject);
201 }
202
203 ERR("unknown IID requested %s\n", shdebugstr_guid(&riid));
204 return E_NOINTERFACE;
205}
206
207/******************************************************************************
208 * IDefClF_fnLockServer
209 */
211{
212 TRACE("%p->(0x%x), not implemented\n", this, fLock);
213 return E_NOTIMPL;
214}
215
216/**************************************************************************
217 * IDefClF_fnConstructor
218 */
219
221{
222 return ShellObjectCreatorInit<IDefClFImpl>(lpfnCI, pcRefDll, riidInst, IID_PPV_ARG(IClassFactory, theFactory));
223}
224
225/******************************************************************************
226 * SHCreateDefClassObject [SHELL32.70]
227 */
229 REFIID riid,
230 LPVOID* ppv,
231 LPFNCREATEINSTANCE lpfnCI, /* [in] create instance callback entry */
232 LPDWORD pcRefDll, /* [in/out] ref count of the dll */
233 REFIID riidInst) /* [in] optional interface to the instance */
234{
235 IClassFactory *pcf;
236 HRESULT hResult;
237
238 TRACE("%s %p %p %p %s\n", shdebugstr_guid(&riid), ppv, lpfnCI, pcRefDll, shdebugstr_guid(&riidInst));
239
241 return E_NOINTERFACE;
242 hResult = IDefClF_fnConstructor(lpfnCI, (PLONG)pcRefDll, &riidInst, &pcf);
243 if (FAILED(hResult))
244 return hResult;
245 *ppv = pcf;
246 return S_OK;
247}
248
249/**************************************************************************
250 * CStartMenuDummy
251 */
253 public CComCoClass<CStartMenuDummy, &CLSID_StartMenu>,
254 public CComObjectRootEx<CComMultiThreadModelNoCS>
255{
256private:
259
260public:
262
264 {
265 public:
267 {
268 if (ppv == NULL)
269 return E_POINTER;
270 *ppv = NULL;
271 if (pv != NULL)
274 }
275 };
276};
277
278/**************************************************************************
279 * CShell32Module
280 */
282{
283public:
284 void Term()
285 {
286 CComCreatorCentralInstance< ATL::CComObject< CDrivesFolder > >::Term();
287 CComCreatorCentralInstance< ATL::CComObject< CDesktopFolder > >::Term();
289 }
290};
291
292
293BEGIN_OBJECT_MAP(ObjectMap)
294 OBJECT_ENTRY(CLSID_ActiveDesktop, CActiveDesktop)
295 OBJECT_ENTRY(CLSID_ShellFSFolder, CFSFolder)
296 OBJECT_ENTRY(CLSID_MyComputer, CDrivesFolder)
297 OBJECT_ENTRY(CLSID_ShellDesktop, CDesktopFolder)
298 OBJECT_ENTRY(CLSID_ShellFileDefExt, CFileDefExt)
299 OBJECT_ENTRY(CLSID_ShellDrvDefExt, CDrvDefExt)
300 OBJECT_ENTRY(CLSID_ShellItem, CShellItem)
301 OBJECT_ENTRY(CLSID_ShellLink, CShellLink)
302 OBJECT_ENTRY(CLSID_Shell, CShellDispatch)
303 OBJECT_ENTRY(CLSID_DragDropHelper, CDropTargetHelper)
304 OBJECT_ENTRY(CLSID_ControlPanel, CControlPanelFolder)
305 OBJECT_ENTRY(CLSID_OpenControlPanel, COpenControlPanel)
306 OBJECT_ENTRY(CLSID_MyDocuments, CMyDocsFolder)
307 OBJECT_ENTRY(CLSID_NetworkPlaces, CNetFolder)
309 OBJECT_ENTRY(CLSID_Printers, CPrinterFolder)
311 OBJECT_ENTRY(CLSID_ShellFldSetExt, CFolderOptions)
312 OBJECT_ENTRY(CLSID_RecycleBin, CRecycleBin)
313 OBJECT_ENTRY(CLSID_OpenWithMenu, COpenWithMenu)
314 OBJECT_ENTRY(CLSID_NewMenu, CNewMenu)
316 OBJECT_ENTRY(CLSID_CopyAsPathMenu, CCopyAsPathMenu)
317 OBJECT_ENTRY(CLSID_CopyToMenu, CCopyToMenu)
318 OBJECT_ENTRY(CLSID_MoveToMenu, CMoveToMenu)
321 OBJECT_ENTRY(CLSID_MenuBand, CMenuBand)
322 OBJECT_ENTRY(CLSID_MenuDeskBar, CMenuDeskBar)
323 OBJECT_ENTRY(CLSID_MergedFolder, CMergedFolder)
324 OBJECT_ENTRY(CLSID_ExeDropHandler, CExeDropHandler)
325 OBJECT_ENTRY(CLSID_QueryAssociations, CQueryAssociations)
326 OBJECT_ENTRY(CLSID_UserNotification, CUserNotification)
328
330
331
332/***********************************************************************
333 * DllGetVersion [SHELL32.@]
334 *
335 * Retrieves version information of the 'SHELL32.DLL'
336 *
337 * PARAMS
338 * pdvi [O] pointer to version information structure.
339 *
340 * RETURNS
341 * Success: S_OK
342 * Failure: E_INVALIDARG
343 *
344 * NOTES
345 * Returns version of a shell32.dll from IE4.01 SP1.
346 */
347
349{
350 /* FIXME: shouldn't these values come from the version resource? */
351 if (pdvi->cbSize == sizeof(DLLVERSIONINFO) ||
352 pdvi->cbSize == sizeof(DLLVERSIONINFO2))
353 {
354 pdvi->dwMajorVersion = WINE_FILEVERSION_MAJOR;
355 pdvi->dwMinorVersion = WINE_FILEVERSION_MINOR;
356 pdvi->dwBuildNumber = WINE_FILEVERSION_BUILD;
357 pdvi->dwPlatformID = WINE_FILEVERSION_PLATFORMID;
358 if (pdvi->cbSize == sizeof(DLLVERSIONINFO2))
359 {
360 DLLVERSIONINFO2 *pdvi2 = (DLLVERSIONINFO2 *)pdvi;
361
362 pdvi2->dwFlags = 0;
367 }
368 TRACE("%u.%u.%u.%u\n",
369 pdvi->dwMajorVersion, pdvi->dwMinorVersion,
370 pdvi->dwBuildNumber, pdvi->dwPlatformID);
371 return S_OK;
372 }
373 else
374 {
375 WARN("wrong DLLVERSIONINFO size from app\n");
376 return E_INVALIDARG;
377 }
378}
379
380/*************************************************************************
381 * global variables of the shell32.dll
382 * all are once per process
383 *
384 */
386
387/*************************************************************************
388 * SHELL32 DllMain
389 *
390 * NOTES
391 * calling oleinitialize here breaks sone apps.
392 */
394{
395 TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
397 {
399 gModule.Init(ObjectMap, hInstance, &LIBID_Shell32);
400
402
403 /* get full path to this DLL for IExtractIconW_fnGetIconLocation() */
405 swShell32Name[MAX_PATH - 1] = '\0';
406
407 /* Initialize comctl32 */
408 INITCOMMONCONTROLSEX InitCtrls;
409 InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
411 InitCommonControlsEx(&InitCtrls);
412
413 /* Bad idea, initialization in DllMain! */
415 }
416 else if (dwReason == DLL_PROCESS_DETACH)
417 {
419 SIC_Destroy();
421 gModule.Term();
422 }
423 return TRUE;
424}
425
426/***********************************************************************
427 * DllCanUnloadNow (SHELL32.@)
428 */
430{
431 return gModule.DllCanUnloadNow();
432}
433
434/*************************************************************************
435 * DllGetClassObject [SHELL32.@]
436 * SHDllGetClassObject [SHELL32.128]
437 */
439{
440 HRESULT hResult;
441
442 TRACE("CLSID:%s,IID:%s\n", shdebugstr_guid(&rclsid), shdebugstr_guid(&riid));
443
444 hResult = gModule.DllGetClassObject(rclsid, riid, ppv);
445 TRACE("-- pointer to class factory: %p\n", *ppv);
446 return hResult;
447}
448
450{
451 static const BYTE resid[] =
452 {
456 };
457 HRESULT hr = S_OK;
458 for (SIZE_T i = 0; i < _countof(resid) && SUCCEEDED(hr); ++i)
460 return hr;
461}
462
463/***********************************************************************
464 * DllRegisterServer (SHELL32.@)
465 */
467{
468 HRESULT hr;
469
471 if (FAILED(hr))
472 return hr;
473
475 return hr;
476
478 if (FAILED(hr))
479 return hr;
480
481 return S_OK;
482}
483
484/***********************************************************************
485 * DllUnregisterServer (SHELL32.@)
486 */
488{
489 HRESULT hr;
490
492 if (FAILED(hr))
493 return hr;
494
496 return hr;
497
498 return S_OK;
499}
500
501/*************************************************************************
502 * DllInstall [SHELL32.@]
503 *
504 * PARAMETERS
505 *
506 * BOOL bInstall - TRUE for install, FALSE for uninstall
507 * LPCWSTR pszCmdLine - command line (unused by shell32?)
508 */
509
511{
512 FIXME("%s %s: stub\n", bInstall ? "TRUE":"FALSE", debugstr_w(cmdline));
513 return S_OK; /* indicate success */
514}
const GUID CLSID_SendToMenu
Definition: CSendToMenu.h:24
#define InterlockedIncrement
Definition: armddk.h:53
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
const WCHAR * class
Definition: main.c:68
void shell(int argc, const char *argv[])
Definition: cmds.c:1231
HANDLE hUserToken
Definition: install.c:39
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
HRESULT WINAPI RSHELL_CStartMenu_CreateInstance(REFIID riid, void **ppv)
Definition: CStartMenu.cpp:589
#define STDAPI_(t)
Definition: basetyps.h:42
#define STDAPI
Definition: basetyps.h:41
#define EXTERN_C
Definition: basetyps.h:12
#define STDMETHODIMP
Definition: basetyps.h:43
#define STDMETHOD(m)
Definition: basetyps.h:62
const GUID IID_IUnknown
const GUID IID_IClassFactory
EXTERN_C void InitChangeNotifications(void)
EXTERN_C void FreeChangeNotifications(void)
HINSTANCE hInstance
Definition: charmap.c:19
HRESULT WINAPI UpdateRegistryFromResource(LPCTSTR lpszRes, BOOL bRegister, struct _ATL_REGMAP_ENTRY *pMapEntries=NULL)
Definition: atlbase.h:489
void Term()
Definition: atlbase.h:916
HRESULT DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: atlbase.h:1037
HRESULT DllUnregisterServer(BOOL bUnRegTypeLib=TRUE)
Definition: atlbase.h:1047
HRESULT Init(_ATL_OBJMAP_ENTRY *p, HINSTANCE, const GUID *plibid)
Definition: atlbase.h:886
HRESULT DllCanUnloadNow()
Definition: atlbase.h:1030
HRESULT DllRegisterServer(BOOL bRegTypeLib=TRUE)
Definition: atlbase.h:1042
static STDMETHODIMP CreateInstance(void *pv, REFIID riid, LPVOID *ppv)
Definition: shell32.cpp:266
virtual ~CStartMenuDummy()
STDMETHOD() LockServer(BOOL fLock) override
Definition: shell32.cpp:210
const IID * riidInst
Definition: shell32.cpp:153
HRESULT Initialize(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInstx)
Definition: shell32.cpp:176
LONG * pcRefDll
Definition: shell32.cpp:154
CLSID * rclsid
Definition: shell32.cpp:151
STDMETHOD() CreateInstance(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject) override
Definition: shell32.cpp:192
LPFNCREATEINSTANCE lpfnCI
Definition: shell32.cpp:152
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:904
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
const char * shdebugstr_guid(const struct _GUID *id)
Definition: debughlp.cpp:438
HRESULT hr
Definition: delayimp.cpp:573
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
Definition: security.c:294
#define CloseHandle
Definition: compat.h:739
#define wcschr
Definition: compat.h:17
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
#define GetCurrentProcess()
Definition: compat.h:759
#define MAX_PATH
Definition: compat.h:34
#define CALLBACK
Definition: compat.h:35
BOOL WINAPI DECLSPEC_HOTPATCH SetEnvironmentVariableW(IN LPCWSTR lpName, IN LPCWSTR lpValue)
Definition: environ.c:260
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
Definition: locale.c:1675
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2983
const GUID CLSID_MenuBandSite
const GUID CLSID_FontsFolderShortcut
const GUID CLSID_AdminFolderShortcut
const GUID CLSID_StartMenu
HRESULT(CALLBACK * LPFNCREATEINSTANCE)(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject)
Definition: shellole.c:52
LPFNCREATEINSTANCE lpfnCI
Definition: shellole.c:61
BOOL WINAPI CreateEnvironmentBlock(OUT LPVOID *lpEnvironment, IN HANDLE hToken, IN BOOL bInherit)
Definition: environment.c:503
#define swprintf
Definition: precomp.h:40
#define L(x)
Definition: resources.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
WCHAR swShell32Name[MAX_PATH]
Definition: folders.cpp:22
GLfloat GLfloat p
Definition: glext.h:8902
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
void SIC_Destroy(void)
Definition: iconcache.cpp:635
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
BOOL WINAPI DllMain(IN HINSTANCE hinstDLL, IN DWORD dwReason, IN LPVOID lpvReserved)
Definition: indicdll.c:224
static CInternetFolder * CreateInstance(void)
Definition: inetfolder.c:330
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_w
Definition: kernel32.h:32
INT WINAPI GetNumberFormatW(LCID lcid, DWORD dwFlags, LPCWSTR lpszValue, const NUMBERFMTW *lpFormat, LPWSTR lpNumberStr, int cchOut)
Definition: lcformat.c:1130
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:581
#define END_OBJECT_MAP()
Definition: atlcom.h:691
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:601
#define OBJECT_ENTRY(clsid, class)
Definition: atlcom.h:693
#define DECLARE_REGISTRY_RESOURCEID(x)
Definition: atlcom.h:645
#define BEGIN_OBJECT_MAP(x)
Definition: atlcom.h:689
#define END_COM_MAP()
Definition: atlcom.h:592
#define WINE_FILEVERSION_MINOR
#define WINE_FILEVERSION_PLATFORMID
#define WINE_FILEVERSION_MAJOR
#define WINE_FILEVERSION_BUILD
#define LOCALE_USER_DEFAULT
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
struct tagINITCOMMONCONTROLSEX INITCOMMONCONTROLSEX
#define ICC_USEREX_CLASSES
Definition: commctrl.h:68
#define ICC_DATE_CLASSES
Definition: commctrl.h:67
#define ICC_WIN95_CLASSES
Definition: commctrl.h:66
#define REFIID
Definition: guiddef.h:118
#define REFCLSID
Definition: guiddef.h:117
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
#define MAKEDLLVERULL(major, minor, build, qfe)
Definition: shlwapi.h:113
wcscpy
HRESULT WINAPI SHCreateDefClassObject(REFIID riid, LPVOID *ppv, LPFNCREATEINSTANCE lpfnCI, LPDWORD pcRefDll, REFIID riidInst)
Definition: shell32.cpp:228
DWORD LPVOID fImpLoad
Definition: shell32.cpp:394
STDAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition: shell32.cpp:348
STDAPI DllRegisterServer()
Definition: shell32.cpp:466
STDAPI DllCanUnloadNow()
Definition: shell32.cpp:429
STDAPI DllUnregisterServer()
Definition: shell32.cpp:487
HRESULT(CALLBACK * LPFNCREATEINSTANCE)(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject)
Definition: shell32.cpp:131
HINSTANCE shell32_hInstance
Definition: shell32.cpp:385
EXTERN_C LPWSTR WINAPI AddCommasW(DWORD lValue, LPWSTR lpNumber)
Definition: shell32.cpp:33
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: shell32.cpp:438
HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline)
Definition: shell32.cpp:510
return TRUE
Definition: shell32.cpp:423
DWORD dwReason
Definition: shell32.cpp:393
HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInst, IClassFactory **theFactory)
Definition: shell32.cpp:220
CShell32Module gModule
Definition: shell32.cpp:329
static HRESULT UpdateRegistryFromResource(BOOL Register)
Definition: shell32.cpp:449
EXTERN_C BOOL WINAPI RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
Definition: shell32.cpp:91
HRESULT SHELL_RegisterShellFolders(void) DECLSPEC_HIDDEN
Definition: shellpath.c:3191
_In_ UINT _In_ UINT cch
Definition: shellapi.h:432
#define IDR_EXPLORER
Definition: shresdef.h:962
#define IDR_FOLDEROPTIONS
Definition: shresdef.h:931
#define IDR_SYSTEMFILEASSOC
Definition: shresdef.h:963
#define IDR_STARTMENU
Definition: shresdef.h:944
#define _countof(array)
Definition: sndvol32.h:70
#define TRACE(s)
Definition: solgame.cpp:4
TCHAR * cmdline
Definition: stretchblt.cpp:32
ULONGLONG ullVersion
Definition: shlwapi.h:132
UINT NumDigits
Definition: winnls.h:715
LPWSTR lpDecimalSep
Definition: winnls.h:718
UINT Grouping
Definition: winnls.h:717
UINT NegativeOrder
Definition: winnls.h:720
LPWSTR lpThousandSep
Definition: winnls.h:719
UINT LeadingZero
Definition: winnls.h:716
uint16_t * PWSTR
Definition: typedefs.h:56
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
Definition: typedefs.h:56
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t * LPDWORD
Definition: typedefs.h:59
int32_t * PLONG
Definition: typedefs.h:58
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:3479
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771
#define E_POINTER
Definition: winerror.h:3480
#define LOCALE_SGROUPING
Definition: winnls.h:51
#define LOCALE_STHOUSAND
Definition: winnls.h:50
#define TOKEN_WRITE
Definition: setypes.h:965
#define TOKEN_READ
Definition: setypes.h:963
static void Initialize()
Definition: xlate.c:212
#define IID_PPV_ARG(Itype, ppType)
unsigned char BYTE
Definition: xxhash.c:193