ReactOS 0.4.17-dev-573-g8315b8c
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_ShellLibrary, CShellLibrary)
330 OBJECT_ENTRY(CLSID_DragDropHelper, CDropTargetHelper)
331 OBJECT_ENTRY(CLSID_ControlPanel, CControlPanelFolder)
332 OBJECT_ENTRY(CLSID_OpenControlPanel, COpenControlPanel)
333 OBJECT_ENTRY(CLSID_MyDocuments, CMyDocsFolder)
334 OBJECT_ENTRY(CLSID_NetworkPlaces, CNetFolder)
336 OBJECT_ENTRY(CLSID_Printers, CPrinterFolder)
338 OBJECT_ENTRY(CLSID_ShellFldSetExt, CFolderOptions)
339 OBJECT_ENTRY(CLSID_RecycleBin, CRecycleBin)
340 OBJECT_ENTRY(CLSID_OpenWithMenu, COpenWithMenu)
341 OBJECT_ENTRY(CLSID_NewMenu, CNewMenu)
343 OBJECT_ENTRY(CLSID_CopyAsPathMenu, CCopyAsPathMenu)
344 OBJECT_ENTRY(CLSID_CopyToMenu, CCopyToMenu)
345 OBJECT_ENTRY(CLSID_MoveToMenu, CMoveToMenu)
348 OBJECT_ENTRY(CLSID_MenuBand, CMenuBand)
349 OBJECT_ENTRY(CLSID_MenuDeskBar, CMenuDeskBar)
350 OBJECT_ENTRY(CLSID_MergedFolder, CMergedFolder)
351 OBJECT_ENTRY(CLSID_ExeDropHandler, CExeDropHandler)
352 OBJECT_ENTRY(CLSID_QueryAssociations, CQueryAssociations)
353 OBJECT_ENTRY(CLSID_UserNotification, CUserNotification)
354 OBJECT_ENTRY(CLSID_UserEventTimer, CUserEventTimer)
356
358
359
360/***********************************************************************
361 * DllGetVersion [SHELL32.@]
362 *
363 * Retrieves version information of the 'SHELL32.DLL'
364 *
365 * PARAMS
366 * pdvi [O] pointer to version information structure.
367 *
368 * RETURNS
369 * Success: S_OK
370 * Failure: E_INVALIDARG
371 *
372 * NOTES
373 * Returns version of a shell32.dll from IE4.01 SP1.
374 */
375
377{
378 /* FIXME: shouldn't these values come from the version resource? */
379 if (pdvi->cbSize == sizeof(DLLVERSIONINFO) ||
380 pdvi->cbSize == sizeof(DLLVERSIONINFO2))
381 {
382 pdvi->dwMajorVersion = WINE_FILEVERSION_MAJOR;
383 pdvi->dwMinorVersion = WINE_FILEVERSION_MINOR;
384 pdvi->dwBuildNumber = WINE_FILEVERSION_BUILD;
385 pdvi->dwPlatformID = WINE_FILEVERSION_PLATFORMID;
386 if (pdvi->cbSize == sizeof(DLLVERSIONINFO2))
387 {
388 DLLVERSIONINFO2 *pdvi2 = (DLLVERSIONINFO2 *)pdvi;
389
390 pdvi2->dwFlags = 0;
395 }
396 TRACE("%u.%u.%u.%u\n",
397 pdvi->dwMajorVersion, pdvi->dwMinorVersion,
398 pdvi->dwBuildNumber, pdvi->dwPlatformID);
399 return S_OK;
400 }
401 else
402 {
403 WARN("wrong DLLVERSIONINFO size from app\n");
404 return E_INVALIDARG;
405 }
406}
407
408/*************************************************************************
409 * global variables of the shell32.dll
410 * all are once per process
411 *
412 */
414
415/*************************************************************************
416 * SHELL32 DllMain
417 *
418 * NOTES
419 * calling oleinitialize here breaks sone apps.
420 */
422{
423 TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
425 {
427 gModule.Init(ObjectMap, hInstance, &LIBID_Shell32);
428
430
431 /* get full path to this DLL for IExtractIconW_fnGetIconLocation() */
433 swShell32Name[MAX_PATH - 1] = '\0';
434
435 /* Initialize comctl32 */
436 INITCOMMONCONTROLSEX InitCtrls;
437 InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
439 InitCommonControlsEx(&InitCtrls);
440
441 /* Bad idea, initialization in DllMain! */
443 }
444 else if (dwReason == DLL_PROCESS_DETACH)
445 {
447 SIC_Destroy();
449 gModule.Term();
450 }
451 return TRUE;
452}
453
454/***********************************************************************
455 * DllCanUnloadNow (SHELL32.@)
456 */
458{
459 return gModule.DllCanUnloadNow();
460}
461
462/*************************************************************************
463 * DllGetClassObject [SHELL32.@]
464 * SHDllGetClassObject [SHELL32.128]
465 */
467{
468 HRESULT hResult;
469
470 TRACE("CLSID:%s,IID:%s\n", shdebugstr_guid(&rclsid), shdebugstr_guid(&riid));
471
472 hResult = gModule.DllGetClassObject(rclsid, riid, ppv);
473 TRACE("-- pointer to class factory: %p\n", *ppv);
474 return hResult;
475}
476
478{
479 static const BYTE resid[] =
480 {
484 };
485 HRESULT hr = S_OK;
486 for (SIZE_T i = 0; i < _countof(resid) && SUCCEEDED(hr); ++i)
488 return hr;
489}
490
491/***********************************************************************
492 * DllRegisterServer (SHELL32.@)
493 */
495{
496 HRESULT hr;
497
499 if (FAILED(hr))
500 return hr;
501
503 return hr;
504
506 if (FAILED(hr))
507 return hr;
508
509 return S_OK;
510}
511
512/***********************************************************************
513 * DllUnregisterServer (SHELL32.@)
514 */
516{
517 HRESULT hr;
518
520 if (FAILED(hr))
521 return hr;
522
524 return hr;
525
526 return S_OK;
527}
528
529/*************************************************************************
530 * DllInstall [SHELL32.@]
531 *
532 * PARAMETERS
533 *
534 * BOOL bInstall - TRUE for install, FALSE for uninstall
535 * LPCWSTR pszCmdLine - command line (unused by shell32?)
536 */
537
539{
540 FIXME("%s %s: stub\n", bInstall ? "TRUE":"FALSE", debugstr_w(cmdline));
541 return S_OK; /* indicate success */
542}
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:422
STDAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition: shell32.cpp:376
STDAPI DllRegisterServer()
Definition: shell32.cpp:494
STDAPI DllCanUnloadNow()
Definition: shell32.cpp:457
STDAPI DllUnregisterServer()
Definition: shell32.cpp:515
HRESULT(CALLBACK * LPFNCREATEINSTANCE)(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject)
Definition: shell32.cpp:131
HINSTANCE shell32_hInstance
Definition: shell32.cpp:413
EXTERN_C LPWSTR WINAPI AddCommasW(DWORD lValue, LPWSTR lpNumber)
Definition: shell32.cpp:33
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: shell32.cpp:466
HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline)
Definition: shell32.cpp:538
return TRUE
Definition: shell32.cpp:451
DWORD dwReason
Definition: shell32.cpp:421
HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInst, IClassFactory **theFactory)
Definition: shell32.cpp:246
CShell32Module gModule
Definition: shell32.cpp:357
static HRESULT UpdateRegistryFromResource(BOOL Register)
Definition: shell32.cpp:477
EXTERN_C BOOL WINAPI RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
Definition: shell32.cpp:91
HRESULT SHELL_RegisterShellFolders(void) DECLSPEC_HIDDEN
Definition: shellpath.c:3192
_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