ReactOS
0.4.16-dev-340-g0540c21
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_csBagCacheLock
;
38
VOID
FreeViewStatePropertyBagCache
(
VOID
);
39
#endif
40
41
/*************************************************************************
42
* SHLWAPI {SHLWAPI}
43
*
44
* The Shell Light-Weight API dll provides a large number of utility functions
45
* which are commonly required by Win32 programs. Originally distributed with
46
* Internet Explorer as a free download, it became a core part of Windows when
47
* Internet Explorer was 'integrated' into the O/S with the release of Win98.
48
*
49
* All functions exported by ordinal are undocumented by MS. The vast majority
50
* of these are wrappers for Unicode functions that may not exist on early 16
51
* bit platforms. The remainder perform various small tasks and presumably were
52
* added to facilitate code reuse amongst the MS developers.
53
*/
54
55
/*************************************************************************
56
* SHLWAPI DllMain
57
*
58
* NOTES
59
* calling oleinitialize here breaks some apps.
60
*/
61
BOOL
WINAPI
DllMain
(
HINSTANCE
hinstDLL,
DWORD
fdwReason,
LPVOID
fImpLoad
)
62
{
63
TRACE
(
"%p 0x%x %p\n"
, hinstDLL, fdwReason,
fImpLoad
);
64
switch
(fdwReason)
65
{
66
case
DLL_PROCESS_ATTACH
:
67
DisableThreadLibraryCalls
(hinstDLL);
68
shlwapi_hInstance
= hinstDLL;
69
SHLWAPI_ThreadRef_index
=
TlsAlloc
();
70
#ifdef __REACTOS__
71
InitializeCriticalSection
(&
g_csBagCacheLock
);
72
#endif
73
break
;
74
case
DLL_PROCESS_DETACH
:
75
if
(
fImpLoad
)
break
;
76
#ifdef __REACTOS__
77
FreeViewStatePropertyBagCache
();
78
DeleteCriticalSection
(&
g_csBagCacheLock
);
79
#endif
80
if
(
SHLWAPI_ThreadRef_index
!=
TLS_OUT_OF_INDEXES
)
TlsFree
(
SHLWAPI_ThreadRef_index
);
81
break
;
82
}
83
return
TRUE
;
84
}
85
86
/***********************************************************************
87
* DllGetVersion [SHLWAPI.@]
88
*
89
* Retrieve "shlwapi.dll" version information.
90
*
91
* PARAMS
92
* pdvi [O] pointer to version information structure.
93
*
94
* RETURNS
95
* Success: S_OK. pdvi is updated with the version information
96
* Failure: E_INVALIDARG, if pdvi->cbSize is not set correctly.
97
*
98
* NOTES
99
* You may pass either a DLLVERSIONINFO of DLLVERSIONINFO2 structure
100
* as pdvi, provided that the size is set correctly.
101
* Returns version as shlwapi.dll from IE5.01.
102
*/
103
HRESULT
WINAPI
DllGetVersion
(
DLLVERSIONINFO
*pdvi)
104
{
105
DLLVERSIONINFO2
*pdvi2 = (
DLLVERSIONINFO2
*)pdvi;
106
107
TRACE
(
"(%p)\n"
,pdvi);
108
109
if
(!pdvi)
110
return
E_INVALIDARG
;
111
112
switch
(pdvi2->
info1
.
cbSize
)
113
{
114
case
sizeof
(
DLLVERSIONINFO2
):
115
pdvi2->
dwFlags
= 0;
116
pdvi2->ullVersion =
MAKEDLLVERULL
(6, 0, 2800, 1612);
117
/* Fall through */
118
case
sizeof
(
DLLVERSIONINFO
):
119
pdvi2->
info1
.
dwMajorVersion
= 6;
120
pdvi2->
info1
.
dwMinorVersion
= 0;
121
pdvi2->
info1
.
dwBuildNumber
= 2800;
122
pdvi2->
info1
.
dwPlatformID
=
DLLVER_PLATFORM_WINDOWS
;
123
return
S_OK
;
124
}
125
126
WARN
(
"pdvi->cbSize = %d, unhandled\n"
, pdvi2->
info1
.
cbSize
);
127
return
E_INVALIDARG
;
128
}
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:142
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
TlsAlloc
DWORD WINAPI TlsAlloc(VOID)
Definition:
thread.c:1100
TlsFree
BOOL WINAPI TlsFree(IN DWORD Index)
Definition:
thread.c:1166
BOOL
unsigned int BOOL
Definition:
ntddk_ex.h:94
DWORD
unsigned long DWORD
Definition:
ntddk_ex.h:95
HRESULT
Definition:
mshtmhst.idl:286
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
debug.h
shlwapi.h
DLLVER_PLATFORM_WINDOWS
#define DLLVER_PLATFORM_WINDOWS
Definition:
shlwapi.h:1989
DLLVERSIONINFO2
struct _DLLVERSIONINFO2 DLLVERSIONINFO2
MAKEDLLVERULL
#define MAKEDLLVERULL(mjr, mnr, bld, qfe)
Definition:
shlwapi.h:2010
DLLVERSIONINFO
struct _DllVersionInfo DLLVERSIONINFO
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:61
SHLWAPI_ThreadRef_index
DECLSPEC_HIDDEN DWORD SHLWAPI_ThreadRef_index
Definition:
shlwapi_main.c:34
DllGetVersion
HRESULT WINAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition:
shlwapi_main.c:103
TRACE
#define TRACE(s)
Definition:
solgame.cpp:4
_CRITICAL_SECTION
Definition:
winbase.h:918
_DLLVERSIONINFO2
Definition:
shlwapi.h:1999
_DLLVERSIONINFO2::dwFlags
DWORD dwFlags
Definition:
shlwapi.h:2001
_DLLVERSIONINFO2::info1
DLLVERSIONINFO info1
Definition:
shlwapi.h:2000
_DllVersionInfo
Definition:
shlwapi.h:1981
_DllVersionInfo::dwMajorVersion
DWORD dwMajorVersion
Definition:
shlwapi.h:1983
_DllVersionInfo::dwBuildNumber
DWORD dwBuildNumber
Definition:
shlwapi.h:1985
_DllVersionInfo::dwMinorVersion
DWORD dwMinorVersion
Definition:
shlwapi.h:1984
_DllVersionInfo::cbSize
DWORD cbSize
Definition:
shlwapi.h:1982
_DllVersionInfo::dwPlatformID
DWORD dwPlatformID
Definition:
shlwapi.h:1986
InitializeCriticalSection
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition:
synch.c:751
winbase.h
TLS_OUT_OF_INDEXES
#define TLS_OUT_OF_INDEXES
Definition:
winbase.h:575
DeleteCriticalSection
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
windef.h
WINAPI
#define WINAPI
Definition:
msvc.h:6
dll
win32
shlwapi
shlwapi_main.c
Generated on Fri Dec 13 2024 06:05:04 for ReactOS by
1.9.6