ReactOS 0.4.17-dev-470-gf9e3448
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)\n", this, fLock);
213
214 if (fLock)
215 {
216 if (pcRefDll)
217 {
218 if (*pcRefDll == LONG_MAX)
219 ERR("pcRefDll is pinned, not incrementing\n");
220 else
222 }
223 _pAtlModule->Lock();
224 }
225 else
226 {
227 _pAtlModule->Unlock();
228 if (pcRefDll)
229 {
230 if (*pcRefDll == LONG_MAX)
231 ERR("pcRefDll is pinned, not decrementing\n");
232 else if (*pcRefDll > 0)
234 else
235 ERR("pcRefDll underflow\n");
236 }
237 }
238
239 return S_OK;
240}
241
242/**************************************************************************
243 * IDefClF_fnConstructor
244 */
245
247{
248 return ShellObjectCreatorInit<IDefClFImpl>(lpfnCI, pcRefDll, riidInst, IID_PPV_ARG(IClassFactory, theFactory));
249}
250
251/******************************************************************************
252 * SHCreateDefClassObject [SHELL32.70]
253 */
255 REFIID riid,
256 LPVOID* ppv,
257 LPFNCREATEINSTANCE lpfnCI, /* [in] create instance callback entry */
258 LPDWORD pcRefDll, /* [in/out] ref count of the dll */
259 REFIID riidInst) /* [in] optional interface to the instance */
260{
261 IClassFactory *pcf;
262 HRESULT hResult;
263
264 TRACE("%s %p %p %p %s\n", shdebugstr_guid(&riid), ppv, lpfnCI, pcRefDll, shdebugstr_guid(&riidInst));
265
267 return E_NOINTERFACE;
268 hResult = IDefClF_fnConstructor(lpfnCI, (PLONG)pcRefDll, &riidInst, &pcf);
269 if (FAILED(hResult))
270 return hResult;
271 *ppv = pcf;
272 return S_OK;
273}
274
275/**************************************************************************
276 * CStartMenuDummy
277 */
279 public CComCoClass<CStartMenuDummy, &CLSID_StartMenu>,
280 public CComObjectRootEx<CComMultiThreadModelNoCS>
281{
282private:
285
286public:
288
290 {
291 public:
293 {
294 if (ppv == NULL)
295 return E_POINTER;
296 *ppv = NULL;
297 if (pv != NULL)
300 }
301 };
302};
303
304/**************************************************************************
305 * CShell32Module
306 */
308{
309public:
310 void Term()
311 {
312 CComCreatorCentralInstance< ATL::CComObject< CDrivesFolder > >::Term();
313 CComCreatorCentralInstance< ATL::CComObject< CDesktopFolder > >::Term();
315 }
316};
317
318
319BEGIN_OBJECT_MAP(ObjectMap)
320 OBJECT_ENTRY(CLSID_ActiveDesktop, CActiveDesktop)
321 OBJECT_ENTRY(CLSID_ShellFSFolder, CFSFolder)
322 OBJECT_ENTRY(CLSID_MyComputer, CDrivesFolder)
323 OBJECT_ENTRY(CLSID_ShellDesktop, CDesktopFolder)
324 OBJECT_ENTRY(CLSID_ShellFileDefExt, CFileDefExt)
325 OBJECT_ENTRY(CLSID_ShellDrvDefExt, CDrvDefExt)
326 OBJECT_ENTRY(CLSID_ShellItem, CShellItem)
327 OBJECT_ENTRY(CLSID_ShellLink, CShellLink)
328 OBJECT_ENTRY(CLSID_Shell, CShellDispatch)
329 OBJECT_ENTRY(CLSID_DragDropHelper, CDropTargetHelper)
330 OBJECT_ENTRY(CLSID_ControlPanel, CControlPanelFolder)
331 OBJECT_ENTRY(CLSID_OpenControlPanel, COpenControlPanel)
332 OBJECT_ENTRY(CLSID_MyDocuments, CMyDocsFolder)
333 OBJECT_ENTRY(CLSID_NetworkPlaces, CNetFolder)
335 OBJECT_ENTRY(CLSID_Printers, CPrinterFolder)
337 OBJECT_ENTRY(CLSID_ShellFldSetExt, CFolderOptions)
338 OBJECT_ENTRY(CLSID_RecycleBin, CRecycleBin)
339 OBJECT_ENTRY(CLSID_OpenWithMenu, COpenWithMenu)
340 OBJECT_ENTRY(CLSID_NewMenu, CNewMenu)
342 OBJECT_ENTRY(CLSID_CopyAsPathMenu, CCopyAsPathMenu)
343 OBJECT_ENTRY(CLSID_CopyToMenu, CCopyToMenu)
344 OBJECT_ENTRY(CLSID_MoveToMenu, CMoveToMenu)
347 OBJECT_ENTRY(CLSID_MenuBand, CMenuBand)
348 OBJECT_ENTRY(CLSID_MenuDeskBar, CMenuDeskBar)
349 OBJECT_ENTRY(CLSID_MergedFolder, CMergedFolder)
350 OBJECT_ENTRY(CLSID_ExeDropHandler, CExeDropHandler)
351 OBJECT_ENTRY(CLSID_QueryAssociations, CQueryAssociations)
352 OBJECT_ENTRY(CLSID_UserNotification, CUserNotification)
354
356
357
358/***********************************************************************
359 * DllGetVersion [SHELL32.@]
360 *
361 * Retrieves version information of the 'SHELL32.DLL'
362 *
363 * PARAMS
364 * pdvi [O] pointer to version information structure.
365 *
366 * RETURNS
367 * Success: S_OK
368 * Failure: E_INVALIDARG
369 *
370 * NOTES
371 * Returns version of a shell32.dll from IE4.01 SP1.
372 */
373
375{
376 /* FIXME: shouldn't these values come from the version resource? */
377 if (pdvi->cbSize == sizeof(DLLVERSIONINFO) ||
378 pdvi->cbSize == sizeof(DLLVERSIONINFO2))
379 {
380 pdvi->dwMajorVersion = WINE_FILEVERSION_MAJOR;
381 pdvi->dwMinorVersion = WINE_FILEVERSION_MINOR;
382 pdvi->dwBuildNumber = WINE_FILEVERSION_BUILD;
383 pdvi->dwPlatformID = WINE_FILEVERSION_PLATFORMID;
384 if (pdvi->cbSize == sizeof(DLLVERSIONINFO2))
385 {
386 DLLVERSIONINFO2 *pdvi2 = (DLLVERSIONINFO2 *)pdvi;
387
388 pdvi2->dwFlags = 0;
393 }
394 TRACE("%u.%u.%u.%u\n",
395 pdvi->dwMajorVersion, pdvi->dwMinorVersion,
396 pdvi->dwBuildNumber, pdvi->dwPlatformID);
397 return S_OK;
398 }
399 else
400 {
401 WARN("wrong DLLVERSIONINFO size from app\n");
402 return E_INVALIDARG;
403 }
404}
405
406/*************************************************************************
407 * global variables of the shell32.dll
408 * all are once per process
409 *
410 */
412
413/*************************************************************************
414 * SHELL32 DllMain
415 *
416 * NOTES
417 * calling oleinitialize here breaks sone apps.
418 */
420{
421 TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
423 {
425 gModule.Init(ObjectMap, hInstance, &LIBID_Shell32);
426
428
429 /* get full path to this DLL for IExtractIconW_fnGetIconLocation() */
431 swShell32Name[MAX_PATH - 1] = '\0';
432
433 /* Initialize comctl32 */
434 INITCOMMONCONTROLSEX InitCtrls;
435 InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
437 InitCommonControlsEx(&InitCtrls);
438
439 /* Bad idea, initialization in DllMain! */
441 }
442 else if (dwReason == DLL_PROCESS_DETACH)
443 {
445 SIC_Destroy();
447 gModule.Term();
448 }
449 return TRUE;
450}
451
452/***********************************************************************
453 * DllCanUnloadNow (SHELL32.@)
454 */
456{
457 return gModule.DllCanUnloadNow();
458}
459
460/*************************************************************************
461 * DllGetClassObject [SHELL32.@]
462 * SHDllGetClassObject [SHELL32.128]
463 */
465{
466 HRESULT hResult;
467
468 TRACE("CLSID:%s,IID:%s\n", shdebugstr_guid(&rclsid), shdebugstr_guid(&riid));
469
470 hResult = gModule.DllGetClassObject(rclsid, riid, ppv);
471 TRACE("-- pointer to class factory: %p\n", *ppv);
472 return hResult;
473}
474
476{
477 static const BYTE resid[] =
478 {
482 };
483 HRESULT hr = S_OK;
484 for (SIZE_T i = 0; i < _countof(resid) && SUCCEEDED(hr); ++i)
486 return hr;
487}
488
489/***********************************************************************
490 * DllRegisterServer (SHELL32.@)
491 */
493{
494 HRESULT hr;
495
497 if (FAILED(hr))
498 return hr;
499
501 return hr;
502
504 if (FAILED(hr))
505 return hr;
506
507 return S_OK;
508}
509
510/***********************************************************************
511 * DllUnregisterServer (SHELL32.@)
512 */
514{
515 HRESULT hr;
516
518 if (FAILED(hr))
519 return hr;
520
522 return hr;
523
524 return S_OK;
525}
526
527/*************************************************************************
528 * DllInstall [SHELL32.@]
529 *
530 * PARAMETERS
531 *
532 * BOOL bInstall - TRUE for install, FALSE for uninstall
533 * LPCWSTR pszCmdLine - command line (unused by shell32?)
534 */
535
537{
538 FIXME("%s %s: stub\n", bInstall ? "TRUE":"FALSE", debugstr_w(cmdline));
539 return S_OK; /* indicate success */
540}
const GUID CLSID_SendToMenu
Definition: CSendToMenu.h:24
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#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:596
#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:292
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
const char * shdebugstr_guid(const struct _GUID *id)
Definition: debughlp.cpp:438
HRESULT hr
Definition: delayimp.cpp:582
#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:232
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:2988
#define LONG_MAX
Definition: limits.h:30
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 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 _swprintf(buf, format,...)
Definition: sprintf.c:56
#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:254
DWORD LPVOID fImpLoad
Definition: shell32.cpp:420
STDAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition: shell32.cpp:374
STDAPI DllRegisterServer()
Definition: shell32.cpp:492
STDAPI DllCanUnloadNow()
Definition: shell32.cpp:455
STDAPI DllUnregisterServer()
Definition: shell32.cpp:513
HRESULT(CALLBACK * LPFNCREATEINSTANCE)(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject)
Definition: shell32.cpp:131
HINSTANCE shell32_hInstance
Definition: shell32.cpp:411
EXTERN_C LPWSTR WINAPI AddCommasW(DWORD lValue, LPWSTR lpNumber)
Definition: shell32.cpp:33
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: shell32.cpp:464
HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline)
Definition: shell32.cpp:536
return TRUE
Definition: shell32.cpp:449
DWORD dwReason
Definition: shell32.cpp:419
HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInst, IClassFactory **theFactory)
Definition: shell32.cpp:246
CShell32Module gModule
Definition: shell32.cpp:355
static HRESULT UpdateRegistryFromResource(BOOL Register)
Definition: shell32.cpp:475
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:726
LPWSTR lpDecimalSep
Definition: winnls.h:729
UINT Grouping
Definition: winnls.h:728
UINT NegativeOrder
Definition: winnls.h:731
LPWSTR lpThousandSep
Definition: winnls.h:730
UINT LeadingZero
Definition: winnls.h:727
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:54
#define LOCALE_STHOUSAND
Definition: winnls.h:53
#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