ReactOS 0.4.16-dev-1163-gec5b142
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];
36 NUMBERFMTW numFormat;
37
40 szSeparator,
41 _countof(szSeparator));
42
43 numFormat.NumDigits = 0;
44 numFormat.LeadingZero = 0;
45 numFormat.Grouping = 3; // FIXME! Use GetLocaleInfoW with LOCALE_SGROUPING and interpret the result.
46 numFormat.lpDecimalSep = szSeparator;
47 numFormat.lpThousandSep = szSeparator;
48 numFormat.NegativeOrder = 0;
49
50 swprintf(szValue, L"%lu", lValue);
51
53 0,
54 szValue,
55 &numFormat,
56 lpNumber,
57 MAX_PATH) != 0)
58 {
59 return lpNumber;
60 }
61
62 wcscpy(lpNumber, szValue);
63 return lpNumber;
64}
65
66/*
67 * Implemented
68 */
71RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
72{
75 return FALSE;
76
77 BOOL bResult = CreateEnvironmentBlock(lpEnvironment, hUserToken, TRUE);
78 if (!bResult || !lpEnvironment)
79 {
81 return FALSE;
82 }
83
84 if (bUpdateSelf)
85 {
86 LPWSTR pszz = (LPWSTR)*lpEnvironment;
87 if (!pszz)
88 return FALSE;
89
90 while (*pszz)
91 {
92 size_t cch = wcslen(pszz);
93 LPWSTR pchEqual = wcschr(pszz, L'=');
94 if (pchEqual)
95 {
96 CStringW strName(pszz, pchEqual - pszz);
97 SetEnvironmentVariableW(strName, pchEqual + 1);
98 }
99 pszz += cch + 1;
100 }
101 }
102
104
105 return bResult;
106}
107
108/**************************************************************************
109 * Default ClassFactory types
110 */
112HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInst, IClassFactory **theFactory);
113
114
115/**************************************************************************
116 * Default ClassFactory Implementation
117 *
118 * SHCreateDefClassObject
119 *
120 * NOTES
121 * Helper function for dlls without their own classfactory.
122 * A generic classfactory is returned.
123 * When the CreateInstance of the cf is called the callback is executed.
124 */
125
127 public CComObjectRootEx<CComMultiThreadModelNoCS>,
128 public IClassFactory
129{
130private:
133 const IID *riidInst;
134 LONG *pcRefDll; /* pointer to refcounter in external dll (ugrrr...) */
135public:
136 IDefClFImpl();
138
139 // IClassFactory
140 STDMETHOD(CreateInstance)(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppvObject) override;
141 STDMETHOD(LockServer)(BOOL fLock) override;
142
146};
147
149{
150 lpfnCI = NULL;
151 riidInst = NULL;
152 pcRefDll = NULL;
153 rclsid = NULL;
154}
155
156HRESULT IDefClFImpl::Initialize(LPFNCREATEINSTANCE lpfnCIx, PLONG pcRefDllx, const IID *riidInstx)
157{
158 lpfnCI = lpfnCIx;
159 riidInst = riidInstx;
160 pcRefDll = pcRefDllx;
161
162 if (pcRefDll)
164
165 TRACE("(%p)%s\n", this, shdebugstr_guid(riidInst));
166 return S_OK;
167}
168
169/******************************************************************************
170 * IDefClF_fnCreateInstance
171 */
173{
174 TRACE("%p->(%p,%s,%p)\n", this, pUnkOuter, shdebugstr_guid(&riid), ppvObject);
175
176 *ppvObject = NULL;
177
179 {
180 return lpfnCI(pUnkOuter, riid, ppvObject);
181 }
182
183 ERR("unknown IID requested %s\n", shdebugstr_guid(&riid));
184 return E_NOINTERFACE;
185}
186
187/******************************************************************************
188 * IDefClF_fnLockServer
189 */
191{
192 TRACE("%p->(0x%x), not implemented\n", this, fLock);
193 return E_NOTIMPL;
194}
195
196/**************************************************************************
197 * IDefClF_fnConstructor
198 */
199
201{
202 return ShellObjectCreatorInit<IDefClFImpl>(lpfnCI, pcRefDll, riidInst, IID_PPV_ARG(IClassFactory, theFactory));
203}
204
205/******************************************************************************
206 * SHCreateDefClassObject [SHELL32.70]
207 */
209 REFIID riid,
210 LPVOID* ppv,
211 LPFNCREATEINSTANCE lpfnCI, /* [in] create instance callback entry */
212 LPDWORD pcRefDll, /* [in/out] ref count of the dll */
213 REFIID riidInst) /* [in] optional interface to the instance */
214{
215 IClassFactory *pcf;
216 HRESULT hResult;
217
218 TRACE("%s %p %p %p %s\n", shdebugstr_guid(&riid), ppv, lpfnCI, pcRefDll, shdebugstr_guid(&riidInst));
219
221 return E_NOINTERFACE;
222 hResult = IDefClF_fnConstructor(lpfnCI, (PLONG)pcRefDll, &riidInst, &pcf);
223 if (FAILED(hResult))
224 return hResult;
225 *ppv = pcf;
226 return S_OK;
227}
228
229/**************************************************************************
230 * CStartMenuDummy
231 */
233 public CComCoClass<CStartMenuDummy, &CLSID_StartMenu>,
234 public CComObjectRootEx<CComMultiThreadModelNoCS>
235{
236private:
239
240public:
242
244 {
245 public:
247 {
248 if (ppv == NULL)
249 return E_POINTER;
250 *ppv = NULL;
251 if (pv != NULL)
254 }
255 };
256};
257
258/**************************************************************************
259 * CShell32Module
260 */
262{
263public:
264 void Term()
265 {
266 CComCreatorCentralInstance< ATL::CComObject< CDrivesFolder > >::Term();
267 CComCreatorCentralInstance< ATL::CComObject< CDesktopFolder > >::Term();
269 }
270};
271
272
273BEGIN_OBJECT_MAP(ObjectMap)
274 OBJECT_ENTRY(CLSID_ActiveDesktop, CActiveDesktop)
275 OBJECT_ENTRY(CLSID_ShellFSFolder, CFSFolder)
276 OBJECT_ENTRY(CLSID_MyComputer, CDrivesFolder)
277 OBJECT_ENTRY(CLSID_ShellDesktop, CDesktopFolder)
278 OBJECT_ENTRY(CLSID_ShellFileDefExt, CFileDefExt)
279 OBJECT_ENTRY(CLSID_ShellDrvDefExt, CDrvDefExt)
280 OBJECT_ENTRY(CLSID_ShellItem, CShellItem)
281 OBJECT_ENTRY(CLSID_ShellLink, CShellLink)
282 OBJECT_ENTRY(CLSID_Shell, CShellDispatch)
283 OBJECT_ENTRY(CLSID_DragDropHelper, CDropTargetHelper)
284 OBJECT_ENTRY(CLSID_ControlPanel, CControlPanelFolder)
285 OBJECT_ENTRY(CLSID_OpenControlPanel, COpenControlPanel)
286 OBJECT_ENTRY(CLSID_MyDocuments, CMyDocsFolder)
287 OBJECT_ENTRY(CLSID_NetworkPlaces, CNetFolder)
289 OBJECT_ENTRY(CLSID_Printers, CPrinterFolder)
291 OBJECT_ENTRY(CLSID_ShellFldSetExt, CFolderOptions)
292 OBJECT_ENTRY(CLSID_RecycleBin, CRecycleBin)
293 OBJECT_ENTRY(CLSID_OpenWithMenu, COpenWithMenu)
294 OBJECT_ENTRY(CLSID_NewMenu, CNewMenu)
296 OBJECT_ENTRY(CLSID_CopyAsPathMenu, CCopyAsPathMenu)
297 OBJECT_ENTRY(CLSID_CopyToMenu, CCopyToMenu)
298 OBJECT_ENTRY(CLSID_MoveToMenu, CMoveToMenu)
301 OBJECT_ENTRY(CLSID_MenuBand, CMenuBand)
302 OBJECT_ENTRY(CLSID_MenuDeskBar, CMenuDeskBar)
303 OBJECT_ENTRY(CLSID_MergedFolder, CMergedFolder)
304 OBJECT_ENTRY(CLSID_ExeDropHandler, CExeDropHandler)
305 OBJECT_ENTRY(CLSID_QueryAssociations, CQueryAssociations)
306 OBJECT_ENTRY(CLSID_UserNotification, CUserNotification)
308
310
311
312/***********************************************************************
313 * DllGetVersion [SHELL32.@]
314 *
315 * Retrieves version information of the 'SHELL32.DLL'
316 *
317 * PARAMS
318 * pdvi [O] pointer to version information structure.
319 *
320 * RETURNS
321 * Success: S_OK
322 * Failure: E_INVALIDARG
323 *
324 * NOTES
325 * Returns version of a shell32.dll from IE4.01 SP1.
326 */
327
329{
330 /* FIXME: shouldn't these values come from the version resource? */
331 if (pdvi->cbSize == sizeof(DLLVERSIONINFO) ||
332 pdvi->cbSize == sizeof(DLLVERSIONINFO2))
333 {
334 pdvi->dwMajorVersion = WINE_FILEVERSION_MAJOR;
335 pdvi->dwMinorVersion = WINE_FILEVERSION_MINOR;
336 pdvi->dwBuildNumber = WINE_FILEVERSION_BUILD;
337 pdvi->dwPlatformID = WINE_FILEVERSION_PLATFORMID;
338 if (pdvi->cbSize == sizeof(DLLVERSIONINFO2))
339 {
340 DLLVERSIONINFO2 *pdvi2 = (DLLVERSIONINFO2 *)pdvi;
341
342 pdvi2->dwFlags = 0;
343 pdvi2->ullVersion = MAKEDLLVERULL(WINE_FILEVERSION_MAJOR,
347 }
348 TRACE("%u.%u.%u.%u\n",
349 pdvi->dwMajorVersion, pdvi->dwMinorVersion,
350 pdvi->dwBuildNumber, pdvi->dwPlatformID);
351 return S_OK;
352 }
353 else
354 {
355 WARN("wrong DLLVERSIONINFO size from app\n");
356 return E_INVALIDARG;
357 }
358}
359
360/*************************************************************************
361 * global variables of the shell32.dll
362 * all are once per process
363 *
364 */
366
367/*************************************************************************
368 * SHELL32 DllMain
369 *
370 * NOTES
371 * calling oleinitialize here breaks sone apps.
372 */
374{
375 TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
377 {
379 gModule.Init(ObjectMap, hInstance, &LIBID_Shell32);
380
382
383 /* get full path to this DLL for IExtractIconW_fnGetIconLocation() */
385 swShell32Name[MAX_PATH - 1] = '\0';
386
387 /* Initialize comctl32 */
388 INITCOMMONCONTROLSEX InitCtrls;
389 InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
391 InitCommonControlsEx(&InitCtrls);
392
393 /* Bad idea, initialization in DllMain! */
395 }
396 else if (dwReason == DLL_PROCESS_DETACH)
397 {
399 SIC_Destroy();
401 gModule.Term();
402 }
403 return TRUE;
404}
405
406/***********************************************************************
407 * DllCanUnloadNow (SHELL32.@)
408 */
410{
411 return gModule.DllCanUnloadNow();
412}
413
414/*************************************************************************
415 * DllGetClassObject [SHELL32.@]
416 * SHDllGetClassObject [SHELL32.128]
417 */
419{
420 HRESULT hResult;
421
422 TRACE("CLSID:%s,IID:%s\n", shdebugstr_guid(&rclsid), shdebugstr_guid(&riid));
423
424 hResult = gModule.DllGetClassObject(rclsid, riid, ppv);
425 TRACE("-- pointer to class factory: %p\n", *ppv);
426 return hResult;
427}
428
430{
431 static const BYTE resid[] =
432 {
435 };
436 HRESULT hr = S_OK;
437 for (SIZE_T i = 0; i < _countof(resid) && SUCCEEDED(hr); ++i)
439 return hr;
440}
441
442/***********************************************************************
443 * DllRegisterServer (SHELL32.@)
444 */
446{
447 HRESULT hr;
448
450 if (FAILED(hr))
451 return hr;
452
454 return hr;
455
457 if (FAILED(hr))
458 return hr;
459
460 return S_OK;
461}
462
463/***********************************************************************
464 * DllUnregisterServer (SHELL32.@)
465 */
467{
468 HRESULT hr;
469
471 if (FAILED(hr))
472 return hr;
473
475 return hr;
476
477 return S_OK;
478}
479
480/*************************************************************************
481 * DllInstall [SHELL32.@]
482 *
483 * PARAMETERS
484 *
485 * BOOL bInstall - TRUE for install, FALSE for uninstall
486 * LPCWSTR pszCmdLine - command line (unused by shell32?)
487 */
488
490{
491 FIXME("%s %s: stub\n", bInstall ? "TRUE":"FALSE", debugstr_w(cmdline));
492 return S_OK; /* indicate success */
493}
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:246
virtual ~CStartMenuDummy()
STDMETHOD() LockServer(BOOL fLock) override
Definition: shell32.cpp:190
const IID * riidInst
Definition: shell32.cpp:133
HRESULT Initialize(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInstx)
Definition: shell32.cpp:156
LONG * pcRefDll
Definition: shell32.cpp:134
CLSID * rclsid
Definition: shell32.cpp:131
STDMETHOD() CreateInstance(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject) override
Definition: shell32.cpp:172
LPFNCREATEINSTANCE lpfnCI
Definition: shell32.cpp:132
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:904
wcscpy
#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
#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:259
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:1666
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
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
WCHAR swShell32Name[MAX_PATH]
Definition: folders.cpp:22
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
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
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
BOOL WINAPI DllMain(IN HINSTANCE hinstDLL, IN DWORD dwReason, IN LPVOID lpvReserved)
Definition: kbsdll.c:95
#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:1208
#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
static DWORD DWORD void LPSTR DWORD cch
Definition: str.c:202
#define WINE_FILEVERSION_MINOR
#define WINE_FILEVERSION_PLATFORMID
#define WINE_FILEVERSION_MAJOR
#define WINE_FILEVERSION_BUILD
#define LOCALE_USER_DEFAULT
#define L(x)
Definition: ntvdm.h:50
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
HRESULT WINAPI SHCreateDefClassObject(REFIID riid, LPVOID *ppv, LPFNCREATEINSTANCE lpfnCI, LPDWORD pcRefDll, REFIID riidInst)
Definition: shell32.cpp:208
DWORD LPVOID fImpLoad
Definition: shell32.cpp:374
STDAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition: shell32.cpp:328
STDAPI DllRegisterServer()
Definition: shell32.cpp:445
STDAPI DllCanUnloadNow()
Definition: shell32.cpp:409
STDAPI DllUnregisterServer()
Definition: shell32.cpp:466
HRESULT(CALLBACK * LPFNCREATEINSTANCE)(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject)
Definition: shell32.cpp:111
HINSTANCE shell32_hInstance
Definition: shell32.cpp:365
EXTERN_C LPWSTR WINAPI AddCommasW(DWORD lValue, LPWSTR lpNumber)
Definition: shell32.cpp:33
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: shell32.cpp:418
HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline)
Definition: shell32.cpp:489
return TRUE
Definition: shell32.cpp:403
DWORD dwReason
Definition: shell32.cpp:373
HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInst, IClassFactory **theFactory)
Definition: shell32.cpp:200
CShell32Module gModule
Definition: shell32.cpp:309
static HRESULT UpdateRegistryFromResource(BOOL Register)
Definition: shell32.cpp:429
EXTERN_C BOOL WINAPI RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
Definition: shell32.cpp:71
HRESULT SHELL_RegisterShellFolders(void) DECLSPEC_HIDDEN
Definition: shellpath.c:3191
HRESULT hr
Definition: shlfolder.c:183
#define MAKEDLLVERULL(mjr, mnr, bld, qfe)
Definition: shlwapi.h:2027
#define IDR_EXPLORER
Definition: shresdef.h:944
#define IDR_FOLDEROPTIONS
Definition: shresdef.h:913
#define IDR_STARTMENU
Definition: shresdef.h:926
#define _countof(array)
Definition: sndvol32.h:70
#define TRACE(s)
Definition: solgame.cpp:4
TCHAR * cmdline
Definition: stretchblt.cpp:32
UINT NumDigits
Definition: winnls.h:645
LPWSTR lpDecimalSep
Definition: winnls.h:648
UINT Grouping
Definition: winnls.h:647
UINT NegativeOrder
Definition: winnls.h:650
LPWSTR lpThousandSep
Definition: winnls.h:649
UINT LeadingZero
Definition: winnls.h:646
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t * LPDWORD
Definition: typedefs.h:59
int32_t * PLONG
Definition: typedefs.h:58
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:2364
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662
#define E_POINTER
Definition: winerror.h:2365
#define LOCALE_STHOUSAND
Definition: winnls.h:46
#define TOKEN_WRITE
Definition: setypes.h:953
#define TOKEN_READ
Definition: setypes.h:951
static void Initialize()
Definition: xlate.c:212
#define IID_PPV_ARG(Itype, ppType)
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
unsigned char BYTE
Definition: xxhash.c:193