ReactOS
0.4.17-dev-243-g1369312
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
VOID
SHPolicyCache_DllProcessAttach
(
VOID
);
42
VOID
SHPolicyCache_DllProcessDetach
(
VOID
);
43
#endif
44
45
/*************************************************************************
46
* SHLWAPI {SHLWAPI}
47
*
48
* The Shell Light-Weight API dll provides a large number of utility functions
49
* which are commonly required by Win32 programs. Originally distributed with
50
* Internet Explorer as a free download, it became a core part of Windows when
51
* Internet Explorer was 'integrated' into the O/S with the release of Win98.
52
*
53
* All functions exported by ordinal are undocumented by MS. The vast majority
54
* of these are wrappers for Unicode functions that may not exist on early 16
55
* bit platforms. The remainder perform various small tasks and presumably were
56
* added to facilitate code reuse amongst the MS developers.
57
*/
58
59
/*************************************************************************
60
* SHLWAPI DllMain
61
*
62
* NOTES
63
* calling oleinitialize here breaks some apps.
64
*/
65
BOOL
WINAPI
DllMain
(
HINSTANCE
hinstDLL,
DWORD
fdwReason
,
LPVOID
fImpLoad
)
66
{
67
TRACE
(
"%p 0x%x %p\n"
, hinstDLL,
fdwReason
,
fImpLoad
);
68
switch
(
fdwReason
)
69
{
70
case
DLL_PROCESS_ATTACH
:
71
DisableThreadLibraryCalls
(hinstDLL);
72
shlwapi_hInstance
= hinstDLL;
73
SHLWAPI_ThreadRef_index
=
TlsAlloc
();
74
#ifdef __REACTOS__
75
InitializeCriticalSection
(&
g_csZoneMgrLock
);
76
InitializeCriticalSection
(&
g_csBagCacheLock
);
77
SHPolicyCache_DllProcessAttach
();
78
#endif
79
break
;
80
case
DLL_PROCESS_DETACH
:
81
if
(
fImpLoad
)
break
;
82
#ifdef __REACTOS__
83
FreeViewStatePropertyBagCache
();
84
SHLWAPI_DeleteCachedZonesManager
();
85
DeleteCriticalSection
(&
g_csBagCacheLock
);
86
DeleteCriticalSection
(&
g_csZoneMgrLock
);
87
SHPolicyCache_DllProcessDetach
();
88
#endif
89
if
(
SHLWAPI_ThreadRef_index
!=
TLS_OUT_OF_INDEXES
)
TlsFree
(
SHLWAPI_ThreadRef_index
);
90
break
;
91
}
92
return
TRUE
;
93
}
94
95
/***********************************************************************
96
* DllGetVersion [SHLWAPI.@]
97
*
98
* Retrieve "shlwapi.dll" version information.
99
*
100
* PARAMS
101
* pdvi [O] pointer to version information structure.
102
*
103
* RETURNS
104
* Success: S_OK. pdvi is updated with the version information
105
* Failure: E_INVALIDARG, if pdvi->cbSize is not set correctly.
106
*
107
* NOTES
108
* You may pass either a DLLVERSIONINFO of DLLVERSIONINFO2 structure
109
* as pdvi, provided that the size is set correctly.
110
* Returns version as shlwapi.dll from IE5.01.
111
*/
112
HRESULT
WINAPI
DllGetVersion
(
DLLVERSIONINFO
*pdvi)
113
{
114
DLLVERSIONINFO2
*pdvi2 = (
DLLVERSIONINFO2
*)pdvi;
115
116
TRACE
(
"(%p)\n"
,pdvi);
117
118
if
(!pdvi)
119
return
E_INVALIDARG
;
120
121
switch
(pdvi2->
info1
.
cbSize
)
122
{
123
case
sizeof
(
DLLVERSIONINFO2
):
124
pdvi2->
dwFlags
= 0;
125
pdvi2->
ullVersion
=
MAKEDLLVERULL
(6, 0, 2800, 1612);
126
/* Fall through */
127
case
sizeof
(
DLLVERSIONINFO
):
128
pdvi2->
info1
.
dwMajorVersion
= 6;
129
pdvi2->
info1
.
dwMinorVersion
= 0;
130
pdvi2->
info1
.
dwBuildNumber
= 2800;
131
pdvi2->
info1
.
dwPlatformID
=
DLLVER_PLATFORM_WINDOWS
;
132
return
S_OK
;
133
}
134
135
WARN
(
"pdvi->cbSize = %d, unhandled\n"
, pdvi2->
info1
.
cbSize
);
136
return
E_INVALIDARG
;
137
}
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
SHPolicyCache_DllProcessAttach
EXTERN_C VOID SHPolicyCache_DllProcessAttach(VOID)
Definition:
policy.cpp:274
SHPolicyCache_DllProcessDetach
EXTERN_C VOID SHPolicyCache_DllProcessDetach(VOID)
Definition:
policy.cpp:279
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:65
SHLWAPI_ThreadRef_index
DECLSPEC_HIDDEN DWORD SHLWAPI_ThreadRef_index
Definition:
shlwapi_main.c:34
DllGetVersion
HRESULT WINAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition:
shlwapi_main.c:112
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 Jun 2 2026 06:05:54 for ReactOS by
1.9.6