ReactOS 0.4.17-dev-1190-g4c812f4
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{
94 LPVOID pEnv = NULL;
95 BOOL bResult = FALSE;
96
97 if (!lpEnvironment)
98 return FALSE;
99
102 &hUserToken))
103 {
104 return FALSE;
105 }
106
108 {
110 return FALSE;
111 }
112
113 *lpEnvironment = pEnv;
114 bResult = TRUE;
115
116 if (bUpdateSelf)
117 {
118 CSimpleMap<CStringW, bool> newVarNames;
119
120 LPWSTR pszz = (LPWSTR)pEnv;
121 while (pszz && *pszz)
122 {
123 if (pszz[0] != L'=')
124 {
125 LPWSTR pchEqual = wcschr(pszz, L'=');
126 if (pchEqual)
127 {
128 *pchEqual = L'\0';
129 CStringW key(pszz);
130 key.MakeUpper();
131 newVarNames.Add(key, true);
132 SetEnvironmentVariableW(pszz, pchEqual + 1);
133 *pchEqual = L'=';
134 }
135 }
136 pszz += wcslen(pszz) + 1;
137 }
138
139 LPWCH pCurEnv = GetEnvironmentStringsW();
140 if (pCurEnv)
141 {
142 LPWSTR pCur = (LPWSTR)pCurEnv;
143 while (pCur && *pCur)
144 {
145 if (pCur[0] != L'=')
146 {
147 LPWSTR pchEqual = wcschr(pCur, L'=');
148 if (pchEqual)
149 {
150 *pchEqual = L'\0';
152 key.MakeUpper();
153 if (newVarNames.FindKey(key) < 0)
155 *pchEqual = L'=';
156 }
157 }
158 pCur += wcslen(pCur) + 1;
159 }
161 }
162
163 /* We free the environment block now that we have applied it to the process;
164 * the caller gets NULL back in *lpEnvironment in this case. */
166 *lpEnvironment = NULL;
167 }
168
170 return bResult;
171}
172
173/**************************************************************************
174 * Default ClassFactory types
175 */
176typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown* pUnkOuter, REFIID riid, LPVOID* ppvObject);
177HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInst, IClassFactory **theFactory);
178
179
180/**************************************************************************
181 * Default ClassFactory Implementation
182 *
183 * SHCreateDefClassObject
184 *
185 * NOTES
186 * Helper function for dlls without their own classfactory.
187 * A generic classfactory is returned.
188 * When the CreateInstance of the cf is called the callback is executed.
189 */
190
192 public CComObjectRootEx<CComMultiThreadModelNoCS>,
193 public IClassFactory
194{
195private:
198 const IID *riidInst;
199 LONG *pcRefDll; /* pointer to refcounter in external dll (ugrrr...) */
200public:
201 IDefClFImpl();
203
204 // IClassFactory
205 STDMETHOD(CreateInstance)(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppvObject) override;
206 STDMETHOD(LockServer)(BOOL fLock) override;
207
211};
212
214{
215 lpfnCI = NULL;
216 riidInst = NULL;
217 pcRefDll = NULL;
218 rclsid = NULL;
219}
220
221HRESULT IDefClFImpl::Initialize(LPFNCREATEINSTANCE lpfnCIx, PLONG pcRefDllx, const IID *riidInstx)
222{
223 lpfnCI = lpfnCIx;
224 riidInst = riidInstx;
225 pcRefDll = pcRefDllx;
226
227 if (pcRefDll)
229
230 TRACE("(%p)%s\n", this, shdebugstr_guid(riidInst));
231 return S_OK;
232}
233
234/******************************************************************************
235 * IDefClF_fnCreateInstance
236 */
238{
239 TRACE("%p->(%p,%s,%p)\n", this, pUnkOuter, shdebugstr_guid(&riid), ppvObject);
240
241 *ppvObject = NULL;
242
244 {
245 return lpfnCI(pUnkOuter, riid, ppvObject);
246 }
247
248 ERR("unknown IID requested %s\n", shdebugstr_guid(&riid));
249 return E_NOINTERFACE;
250}
251
252/******************************************************************************
253 * IDefClF_fnLockServer
254 */
256{
257 TRACE("%p->(0x%x)\n", this, fLock);
258
259 if (fLock)
260 {
261 if (pcRefDll)
262 {
263 if (*pcRefDll == LONG_MAX)
264 ERR("pcRefDll is pinned, not incrementing\n");
265 else
267 }
268 _pAtlModule->Lock();
269 }
270 else
271 {
272 _pAtlModule->Unlock();
273 if (pcRefDll)
274 {
275 if (*pcRefDll == LONG_MAX)
276 ERR("pcRefDll is pinned, not decrementing\n");
277 else if (*pcRefDll > 0)
279 else
280 ERR("pcRefDll underflow\n");
281 }
282 }
283
284 return S_OK;
285}
286
287/**************************************************************************
288 * IDefClF_fnConstructor
289 */
290
292{
293 return ShellObjectCreatorInit<IDefClFImpl>(lpfnCI, pcRefDll, riidInst, IID_PPV_ARG(IClassFactory, theFactory));
294}
295
296/******************************************************************************
297 * SHCreateDefClassObject [SHELL32.70]
298 */
300 REFIID riid,
301 LPVOID* ppv,
302 LPFNCREATEINSTANCE lpfnCI, /* [in] create instance callback entry */
303 LPDWORD pcRefDll, /* [in/out] ref count of the dll */
304 REFIID riidInst) /* [in] optional interface to the instance */
305{
306 IClassFactory *pcf;
307 HRESULT hResult;
308
309 TRACE("%s %p %p %p %s\n", shdebugstr_guid(&riid), ppv, lpfnCI, pcRefDll, shdebugstr_guid(&riidInst));
310
312 return E_NOINTERFACE;
313 hResult = IDefClF_fnConstructor(lpfnCI, (PLONG)pcRefDll, &riidInst, &pcf);
314 if (FAILED(hResult))
315 return hResult;
316 *ppv = pcf;
317 return S_OK;
318}
319
320/**************************************************************************
321 * CStartMenuDummy
322 */
324 public CComCoClass<CStartMenuDummy, &CLSID_StartMenu>,
325 public CComObjectRootEx<CComMultiThreadModelNoCS>
326{
327private:
330
331public:
333
335 {
336 public:
338 {
339 if (ppv == NULL)
340 return E_POINTER;
341 *ppv = NULL;
342 if (pv != NULL)
345 }
346 };
347};
348
349/**************************************************************************
350 * CShell32Module
351 */
353{
354public:
355 void Term()
356 {
357 CComCreatorCentralInstance< ATL::CComObject< CDrivesFolder > >::Term();
358 CComCreatorCentralInstance< ATL::CComObject< CDesktopFolder > >::Term();
360 }
361};
362
363
364BEGIN_OBJECT_MAP(ObjectMap)
365 OBJECT_ENTRY(CLSID_ActiveDesktop, CActiveDesktop)
366 OBJECT_ENTRY(CLSID_ShellFSFolder, CFSFolder)
367 OBJECT_ENTRY(CLSID_MyComputer, CDrivesFolder)
368 OBJECT_ENTRY(CLSID_ShellDesktop, CDesktopFolder)
369 OBJECT_ENTRY(CLSID_ShellFileDefExt, CFileDefExt)
370 OBJECT_ENTRY(CLSID_ShellDrvDefExt, CDrvDefExt)
371 OBJECT_ENTRY(CLSID_ShellItem, CShellItem)
372 OBJECT_ENTRY(CLSID_ShellLink, CShellLink)
373 OBJECT_ENTRY(CLSID_Shell, CShellDispatch)
374 OBJECT_ENTRY(CLSID_ShellLibrary, CShellLibrary)
375 OBJECT_ENTRY(CLSID_DragDropHelper, CDropTargetHelper)
376 OBJECT_ENTRY(CLSID_ControlPanel, CControlPanelFolder)
377 OBJECT_ENTRY(CLSID_OpenControlPanel, COpenControlPanel)
378 OBJECT_ENTRY(CLSID_MyDocuments, CMyDocsFolder)
379 OBJECT_ENTRY(CLSID_NetworkPlaces, CNetFolder)
381 OBJECT_ENTRY(CLSID_Printers, CPrinterFolder)
383 OBJECT_ENTRY(CLSID_ShellFldSetExt, CFolderOptions)
384 OBJECT_ENTRY(CLSID_RecycleBin, CRecycleBin)
385 OBJECT_ENTRY(CLSID_OpenWithMenu, COpenWithMenu)
386 OBJECT_ENTRY(CLSID_NewMenu, CNewMenu)
388 OBJECT_ENTRY(CLSID_CopyAsPathMenu, CCopyAsPathMenu)
389 OBJECT_ENTRY(CLSID_CopyToMenu, CCopyToMenu)
390 OBJECT_ENTRY(CLSID_MoveToMenu, CMoveToMenu)
393 OBJECT_ENTRY(CLSID_MenuBand, CMenuBand)
394 OBJECT_ENTRY(CLSID_MenuDeskBar, CMenuDeskBar)
395 OBJECT_ENTRY(CLSID_MergedFolder, CMergedFolder)
396 OBJECT_ENTRY(CLSID_ExeDropHandler, CExeDropHandler)
397 OBJECT_ENTRY(CLSID_QueryAssociations, CQueryAssociations)
398 OBJECT_ENTRY(CLSID_UserNotification, CUserNotification)
399 OBJECT_ENTRY(CLSID_UserEventTimer, CUserEventTimer)
401
403
404
405/***********************************************************************
406 * DllGetVersion [SHELL32.@]
407 *
408 * Retrieves version information of the 'SHELL32.DLL'
409 *
410 * PARAMS
411 * pdvi [O] pointer to version information structure.
412 *
413 * RETURNS
414 * Success: S_OK
415 * Failure: E_INVALIDARG
416 *
417 * NOTES
418 * Returns version of a shell32.dll from IE4.01 SP1.
419 */
420
422{
423 /* FIXME: shouldn't these values come from the version resource? */
424 if (pdvi->cbSize == sizeof(DLLVERSIONINFO) ||
425 pdvi->cbSize == sizeof(DLLVERSIONINFO2))
426 {
427 pdvi->dwMajorVersion = WINE_FILEVERSION_MAJOR;
428 pdvi->dwMinorVersion = WINE_FILEVERSION_MINOR;
429 pdvi->dwBuildNumber = WINE_FILEVERSION_BUILD;
430 pdvi->dwPlatformID = WINE_FILEVERSION_PLATFORMID;
431 if (pdvi->cbSize == sizeof(DLLVERSIONINFO2))
432 {
433 DLLVERSIONINFO2 *pdvi2 = (DLLVERSIONINFO2 *)pdvi;
434
435 pdvi2->dwFlags = 0;
440 }
441 TRACE("%u.%u.%u.%u\n",
442 pdvi->dwMajorVersion, pdvi->dwMinorVersion,
443 pdvi->dwBuildNumber, pdvi->dwPlatformID);
444 return S_OK;
445 }
446 else
447 {
448 WARN("wrong DLLVERSIONINFO size from app\n");
449 return E_INVALIDARG;
450 }
451}
452
453/*************************************************************************
454 * global variables of the shell32.dll
455 * all are once per process
456 *
457 */
459
460/*************************************************************************
461 * SHELL32 DllMain
462 *
463 * NOTES
464 * calling oleinitialize here breaks sone apps.
465 */
467{
468 TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
470 {
472 gModule.Init(ObjectMap, hInstance, &LIBID_Shell32);
473
475
476 /* get full path to this DLL for IExtractIconW_fnGetIconLocation() */
478 swShell32Name[MAX_PATH - 1] = '\0';
479
480 /* Initialize comctl32 */
481 INITCOMMONCONTROLSEX InitCtrls;
482 InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
484 InitCommonControlsEx(&InitCtrls);
485
486 /* Bad idea, initialization in DllMain! */
488 }
489 else if (dwReason == DLL_PROCESS_DETACH)
490 {
492 SIC_Destroy();
494 gModule.Term();
495 }
496 return TRUE;
497}
498
499/***********************************************************************
500 * DllCanUnloadNow (SHELL32.@)
501 */
503{
504 return gModule.DllCanUnloadNow();
505}
506
507/*************************************************************************
508 * DllGetClassObject [SHELL32.@]
509 * SHDllGetClassObject [SHELL32.128]
510 */
512{
513 HRESULT hResult;
514
515 TRACE("CLSID:%s,IID:%s\n", shdebugstr_guid(&rclsid), shdebugstr_guid(&riid));
516
517 hResult = gModule.DllGetClassObject(rclsid, riid, ppv);
518 TRACE("-- pointer to class factory: %p\n", *ppv);
519 return hResult;
520}
521
523{
524 static const BYTE resid[] =
525 {
529 };
530 HRESULT hr = S_OK;
531 for (SIZE_T i = 0; i < _countof(resid) && SUCCEEDED(hr); ++i)
533 return hr;
534}
535
536/***********************************************************************
537 * DllRegisterServer (SHELL32.@)
538 */
540{
541 HRESULT hr;
542
544 if (FAILED(hr))
545 return hr;
546
548 return hr;
549
551 if (FAILED(hr))
552 return hr;
553
554 return S_OK;
555}
556
557/***********************************************************************
558 * DllUnregisterServer (SHELL32.@)
559 */
561{
562 HRESULT hr;
563
565 if (FAILED(hr))
566 return hr;
567
569 return hr;
570
571 return S_OK;
572}
573
574/*************************************************************************
575 * DllInstall [SHELL32.@]
576 *
577 * PARAMETERS
578 *
579 * BOOL bInstall - TRUE for install, FALSE for uninstall
580 * LPCWSTR pszCmdLine - command line (unused by shell32?)
581 */
582
584{
585 FIXME("%s %s: stub\n", bInstall ? "TRUE":"FALSE", debugstr_w(cmdline));
586 return S_OK; /* indicate success */
587}
const GUID CLSID_SendToMenu
Definition: CSendToMenu.h:24
#define IID_PPV_ARG(Itype, ppType)
#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
int FindKey(const TKey &key) const
Definition: atlsimpcoll.h:315
BOOL Add(const TKey &key, const TVal &val)
Definition: atlsimpcoll.h:309
static STDMETHODIMP CreateInstance(void *pv, REFIID riid, LPVOID *ppv)
Definition: shell32.cpp:337
virtual ~CStartMenuDummy()
STDMETHOD() LockServer(BOOL fLock) override
Definition: shell32.cpp:255
const IID * riidInst
Definition: shell32.cpp:198
HRESULT Initialize(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInstx)
Definition: shell32.cpp:221
LONG * pcRefDll
Definition: shell32.cpp:199
CLSID * rclsid
Definition: shell32.cpp:196
STDMETHOD() CreateInstance(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject) override
Definition: shell32.cpp:237
LPFNCREATEINSTANCE lpfnCI
Definition: shell32.cpp:197
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 FreeEnvironmentStringsW(IN LPWSTR EnvironmentStrings)
Definition: environ.c:362
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
LPWSTR WINAPI DECLSPEC_HOTPATCH GetEnvironmentStringsW(void)
Definition: process.c:1556
_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 DestroyEnvironmentBlock(IN LPVOID lpEnvironment)
Definition: environment.c:761
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
SINGLE_LIST_ENTRY * pCur
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:328
#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
WCHAR * LPWCH
Definition: ntbasedef.h:422
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:299
DWORD LPVOID fImpLoad
Definition: shell32.cpp:467
STDAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition: shell32.cpp:421
STDAPI DllRegisterServer()
Definition: shell32.cpp:539
STDAPI DllCanUnloadNow()
Definition: shell32.cpp:502
STDAPI DllUnregisterServer()
Definition: shell32.cpp:560
HRESULT(CALLBACK * LPFNCREATEINSTANCE)(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject)
Definition: shell32.cpp:176
HINSTANCE shell32_hInstance
Definition: shell32.cpp:458
EXTERN_C LPWSTR WINAPI AddCommasW(DWORD lValue, LPWSTR lpNumber)
Definition: shell32.cpp:33
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: shell32.cpp:511
HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline)
Definition: shell32.cpp:583
return TRUE
Definition: shell32.cpp:496
DWORD dwReason
Definition: shell32.cpp:466
HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInst, IClassFactory **theFactory)
Definition: shell32.cpp:291
CShell32Module gModule
Definition: shell32.cpp:402
static HRESULT UpdateRegistryFromResource(BOOL Register)
Definition: shell32.cpp:522
EXTERN_C BOOL WINAPI RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
Definition: shell32.cpp:91
HRESULT SHELL_RegisterShellFolders(void) DECLSPEC_HIDDEN
Definition: shellpath.c:5757
#define IDR_EXPLORER
Definition: shresdef.h:960
#define IDR_FOLDEROPTIONS
Definition: shresdef.h:929
#define IDR_SYSTEMFILEASSOC
Definition: shresdef.h:961
#define IDR_STARTMENU
Definition: shresdef.h:942
#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
Definition: copy.c:22
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_DUPLICATE
Definition: setypes.h:938
#define TOKEN_QUERY
Definition: setypes.h:940
#define TOKEN_ASSIGN_PRIMARY
Definition: setypes.h:937
static void Initialize()
Definition: xlate.c:212
unsigned char BYTE
Definition: xxhash.c:193