ReactOS
0.4.17-dev-116-ga4b6fe9
shlwapi_main.c
Go to the documentation of this file.
1
/*
2
* SHLWAPI initialisation
3
*
4
* Copyright 1998 Marcus Meissner
5
* Copyright 1998 Juergen Schmied (jsch)
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 <stdarg.h>
23
24
#include "
windef.h
"
25
#include "
winbase.h
"
26
#define NO_SHLWAPI_REG
27
#define NO_SHLWAPI_STREAM
28
#include "shlwapi.h"
29
#include "
wine/debug.h
"
30
31
WINE_DEFAULT_DEBUG_CHANNEL
(
shell
);
32
33
DECLSPEC_HIDDEN
HINSTANCE
shlwapi_hInstance
= 0;
34
DECLSPEC_HIDDEN
DWORD
SHLWAPI_ThreadRef_index
=
TLS_OUT_OF_INDEXES
;
35
36
#ifdef __REACTOS__
37
extern
CRITICAL_SECTION
g_csZoneMgrLock
;
38
extern
CRITICAL_SECTION
g_csBagCacheLock
;
39
VOID
FreeViewStatePropertyBagCache
(
VOID
);
40
VOID
SHLWAPI_DeleteCachedZonesManager
(
VOID
);
41
#endif
42
43
/*************************************************************************
44
* SHLWAPI {SHLWAPI}
45
*
46
* The Shell Light-Weight API dll provides a large number of utility functions
47
* which are commonly required by Win32 programs. Originally distributed with
48
* Internet Explorer as a free download, it became a core part of Windows when
49
* Internet Explorer was 'integrated' into the O/S with the release of Win98.
50
*
51
* All functions exported by ordinal are undocumented by MS. The vast majority
52
* of these are wrappers for Unicode functions that may not exist on early 16
53
* bit platforms. The remainder perform various small tasks and presumably were
54
* added to facilitate code reuse amongst the MS developers.
55
*/
56
57
/*************************************************************************
58
* SHLWAPI DllMain
59
*
60
* NOTES
61
* calling oleinitialize here breaks some apps.
62
*/
63
BOOL
WINAPI
DllMain
(
HINSTANCE
hinstDLL,
DWORD
fdwReason
,
LPVOID
fImpLoad
)
64
{
65
TRACE
(
"%p 0x%x %p\n"
, hinstDLL,
fdwReason
,
fImpLoad
);
66
switch
(
fdwReason
)
67
{
68
case
DLL_PROCESS_ATTACH
:
69
DisableThreadLibraryCalls
(hinstDLL);
70
shlwapi_hInstance
= hinstDLL;
71
SHLWAPI_ThreadRef_index
=
TlsAlloc
();
72
#ifdef __REACTOS__
73
InitializeCriticalSection
(&
g_csZoneMgrLock
);
74
InitializeCriticalSection
(&
g_csBagCacheLock
);
75
#endif
76
break
;
77
case
DLL_PROCESS_DETACH
:
78
if
(
fImpLoad
)
break
;
79
#ifdef __REACTOS__
80
FreeViewStatePropertyBagCache
();
81
SHLWAPI_DeleteCachedZonesManager
();
82
DeleteCriticalSection
(&
g_csBagCacheLock
);
83
DeleteCriticalSection
(&
g_csZoneMgrLock
);
84
#endif
85
if
(
SHLWAPI_ThreadRef_index
!=
TLS_OUT_OF_INDEXES
)
TlsFree
(
SHLWAPI_ThreadRef_index
);
86
break
;
87
}
88
return
TRUE
;
89
}
90
91
/***********************************************************************
92
* DllGetVersion [SHLWAPI.@]
93
*
94
* Retrieve "shlwapi.dll" version information.
95
*
96
* PARAMS
97
* pdvi [O] pointer to version information structure.
98
*
99
* RETURNS
100
* Success: S_OK. pdvi is updated with the version information
101
* Failure: E_INVALIDARG, if pdvi->cbSize is not set correctly.
102
*
103
* NOTES
104
* You may pass either a DLLVERSIONINFO of DLLVERSIONINFO2 structure
105
* as pdvi, provided that the size is set correctly.
106
* Returns version as shlwapi.dll from IE5.01.
107
*/
108
HRESULT
WINAPI
DllGetVersion
(
DLLVERSIONINFO
*pdvi)
109
{
110
DLLVERSIONINFO2
*pdvi2 = (
DLLVERSIONINFO2
*)pdvi;
111
112
TRACE
(
"(%p)\n"
,pdvi);
113
114
if
(!pdvi)
115
return
E_INVALIDARG
;
116
117
switch
(pdvi2->
info1
.
cbSize
)
118
{
119
case
sizeof
(
DLLVERSIONINFO2
):
120
pdvi2->
dwFlags
= 0;
121
pdvi2->
ullVersion
=
MAKEDLLVERULL
(6, 0, 2800, 1612);
122
/* Fall through */
123
case
sizeof
(
DLLVERSIONINFO
):
124
pdvi2->
info1
.
dwMajorVersion
= 6;
125
pdvi2->
info1
.
dwMinorVersion
= 0;
126
pdvi2->
info1
.
dwBuildNumber
= 2800;
127
pdvi2->
info1
.
dwPlatformID
=
DLLVER_PLATFORM_WINDOWS
;
128
return
S_OK
;
129
}
130
131
WARN
(
"pdvi->cbSize = %d, unhandled\n"
, pdvi2->
info1
.
cbSize
);
132
return
E_INVALIDARG
;
133
}
fdwReason
static DWORD const fdwReason
Definition:
appcrt_dllmain.cpp:57
WINE_DEFAULT_DEBUG_CHANNEL
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition:
precomp.h:23
shell
void shell(int argc, const char *argv[])
Definition:
cmds.c:1231
WARN
#define WARN(fmt,...)
Definition:
precomp.h:61
fImpLoad
DWORD LPVOID fImpLoad
Definition:
misc.cpp:136
E_INVALIDARG
#define E_INVALIDARG
Definition:
ddrawi.h:101
TRUE
#define TRUE
Definition:
types.h:120
DECLSPEC_HIDDEN
#define DECLSPEC_HIDDEN
Definition:
precomp.h:8
DLL_PROCESS_ATTACH
#define DLL_PROCESS_ATTACH
Definition:
compat.h:131
DLL_PROCESS_DETACH
#define DLL_PROCESS_DETACH
Definition:
compat.h:130
DisableThreadLibraryCalls
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition:
loader.c:85
TlsFree
BOOL WINAPI TlsFree(IN DWORD Index)
Definition:
thread.c:1166
TlsAlloc
DWORD WINAPI DECLSPEC_HOTPATCH TlsAlloc(void)
Definition:
thread.c:657
BOOL
unsigned int BOOL
Definition:
ntddk_ex.h:94
DWORD
unsigned long DWORD
Definition:
ntddk_ex.h:95
HRESULT
Definition:
metahost.idl:58
void
Definition:
nsiface.idl:2307
S_OK
#define S_OK
Definition:
intsafe.h:52
FreeViewStatePropertyBagCache
EXTERN_C VOID FreeViewStatePropertyBagCache(VOID)
Definition:
propbag.cpp:1925
g_csBagCacheLock
CRITICAL_SECTION g_csBagCacheLock
Definition:
propbag.cpp:1311
DLLVER_PLATFORM_WINDOWS
#define DLLVER_PLATFORM_WINDOWS
Definition:
shlwapi.h:116
DLLVERSIONINFO2
struct _DLLVERSIONINFO2 DLLVERSIONINFO2
MAKEDLLVERULL
#define MAKEDLLVERULL(major, minor, build, qfe)
Definition:
shlwapi.h:113
DLLVERSIONINFO
struct _DllVersionInfo DLLVERSIONINFO
debug.h
shlwapi_hInstance
DECLSPEC_HIDDEN HINSTANCE shlwapi_hInstance
Definition:
shlwapi_main.c:33
DllMain
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
Definition:
shlwapi_main.c:63
SHLWAPI_ThreadRef_index
DECLSPEC_HIDDEN DWORD SHLWAPI_ThreadRef_index
Definition:
shlwapi_main.c:34
DllGetVersion
HRESULT WINAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition:
shlwapi_main.c:108
TRACE
#define TRACE(s)
Definition:
solgame.cpp:4
_DLLVERSIONINFO2
Definition:
shlwapi.h:129
_DLLVERSIONINFO2::dwFlags
DWORD dwFlags
Definition:
shlwapi.h:131
_DLLVERSIONINFO2::info1
DLLVERSIONINFO info1
Definition:
shlwapi.h:130
_DLLVERSIONINFO2::ullVersion
ULONGLONG ullVersion
Definition:
shlwapi.h:132
_DllVersionInfo
Definition:
shlwapi.h:119
_DllVersionInfo::dwMajorVersion
DWORD dwMajorVersion
Definition:
shlwapi.h:121
_DllVersionInfo::dwBuildNumber
DWORD dwBuildNumber
Definition:
shlwapi.h:123
_DllVersionInfo::dwMinorVersion
DWORD dwMinorVersion
Definition:
shlwapi.h:122
_DllVersionInfo::cbSize
DWORD cbSize
Definition:
shlwapi.h:120
_DllVersionInfo::dwPlatformID
DWORD dwPlatformID
Definition:
shlwapi.h:124
_RTL_CRITICAL_SECTION
Definition:
rtltypes.h:1449
InitializeCriticalSection
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition:
synch.c:687
winbase.h
TLS_OUT_OF_INDEXES
#define TLS_OUT_OF_INDEXES
Definition:
winbase.h:529
DeleteCriticalSection
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
windef.h
WINAPI
#define WINAPI
Definition:
msvc.h:6
SHLWAPI_DeleteCachedZonesManager
EXTERN_C VOID SHLWAPI_DeleteCachedZonesManager(VOID)
Definition:
zonechk.c:64
g_csZoneMgrLock
CRITICAL_SECTION g_csZoneMgrLock
Definition:
zonechk.c:18
dll
win32
shlwapi
shlwapi_main.c
Generated on Tue May 12 2026 06:05:44 for ReactOS by
1.9.6