ReactOS
0.4.15-dev-6068-g8061a6f
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
/*************************************************************************
37
* SHLWAPI {SHLWAPI}
38
*
39
* The Shell Light-Weight API dll provides a large number of utility functions
40
* which are commonly required by Win32 programs. Originally distributed with
41
* Internet Explorer as a free download, it became a core part of Windows when
42
* Internet Explorer was 'integrated' into the O/S with the release of Win98.
43
*
44
* All functions exported by ordinal are undocumented by MS. The vast majority
45
* of these are wrappers for Unicode functions that may not exist on early 16
46
* bit platforms. The remainder perform various small tasks and presumably were
47
* added to facilitate code reuse amongst the MS developers.
48
*/
49
50
/*************************************************************************
51
* SHLWAPI DllMain
52
*
53
* NOTES
54
* calling oleinitialize here breaks some apps.
55
*/
56
BOOL
WINAPI
DllMain
(
HINSTANCE
hinstDLL,
DWORD
fdwReason,
LPVOID
fImpLoad
)
57
{
58
TRACE
(
"%p 0x%x %p\n"
, hinstDLL, fdwReason,
fImpLoad
);
59
switch
(fdwReason)
60
{
61
case
DLL_PROCESS_ATTACH
:
62
DisableThreadLibraryCalls
(hinstDLL);
63
shlwapi_hInstance
= hinstDLL;
64
SHLWAPI_ThreadRef_index
=
TlsAlloc
();
65
break
;
66
case
DLL_PROCESS_DETACH
:
67
if
(
fImpLoad
)
break
;
68
if
(
SHLWAPI_ThreadRef_index
!=
TLS_OUT_OF_INDEXES
)
TlsFree
(
SHLWAPI_ThreadRef_index
);
69
break
;
70
}
71
return
TRUE
;
72
}
73
74
/***********************************************************************
75
* DllGetVersion [SHLWAPI.@]
76
*
77
* Retrieve "shlwapi.dll" version information.
78
*
79
* PARAMS
80
* pdvi [O] pointer to version information structure.
81
*
82
* RETURNS
83
* Success: S_OK. pdvi is updated with the version information
84
* Failure: E_INVALIDARG, if pdvi->cbSize is not set correctly.
85
*
86
* NOTES
87
* You may pass either a DLLVERSIONINFO of DLLVERSIONINFO2 structure
88
* as pdvi, provided that the size is set correctly.
89
* Returns version as shlwapi.dll from IE5.01.
90
*/
91
HRESULT
WINAPI
DllGetVersion
(
DLLVERSIONINFO
*pdvi)
92
{
93
DLLVERSIONINFO2
*pdvi2 = (
DLLVERSIONINFO2
*)pdvi;
94
95
TRACE
(
"(%p)\n"
,pdvi);
96
97
if
(!pdvi)
98
return
E_INVALIDARG
;
99
100
switch
(pdvi2->
info1
.
cbSize
)
101
{
102
case
sizeof
(
DLLVERSIONINFO2
):
103
pdvi2->
dwFlags
= 0;
104
pdvi2->ullVersion =
MAKEDLLVERULL
(6, 0, 2800, 1612);
105
/* Fall through */
106
case
sizeof
(
DLLVERSIONINFO
):
107
pdvi2->
info1
.
dwMajorVersion
= 6;
108
pdvi2->
info1
.
dwMinorVersion
= 0;
109
pdvi2->
info1
.
dwBuildNumber
= 2800;
110
pdvi2->
info1
.
dwPlatformID
=
DLLVER_PLATFORM_WINDOWS
;
111
return
S_OK
;
112
}
113
114
WARN
(
"pdvi->cbSize = %d, unhandled\n"
, pdvi2->
info1
.
cbSize
);
115
return
E_INVALIDARG
;
116
}
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
fImpLoad
DWORD LPVOID fImpLoad
Definition:
misc.cpp:155
WARN
#define WARN(fmt,...)
Definition:
debug.h:112
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
debug.h
shlwapi.h
DLLVER_PLATFORM_WINDOWS
#define DLLVER_PLATFORM_WINDOWS
Definition:
shlwapi.h:1961
DLLVERSIONINFO2
struct _DLLVERSIONINFO2 DLLVERSIONINFO2
MAKEDLLVERULL
#define MAKEDLLVERULL(mjr, mnr, bld, qfe)
Definition:
shlwapi.h:1982
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:56
SHLWAPI_ThreadRef_index
DECLSPEC_HIDDEN DWORD SHLWAPI_ThreadRef_index
Definition:
shlwapi_main.c:34
DllGetVersion
HRESULT WINAPI DllGetVersion(DLLVERSIONINFO *pdvi)
Definition:
shlwapi_main.c:91
TRACE
#define TRACE(s)
Definition:
solgame.cpp:4
_DLLVERSIONINFO2
Definition:
shlwapi.h:1971
_DLLVERSIONINFO2::dwFlags
DWORD dwFlags
Definition:
shlwapi.h:1973
_DLLVERSIONINFO2::info1
DLLVERSIONINFO info1
Definition:
shlwapi.h:1972
_DllVersionInfo
Definition:
shlwapi.h:1953
_DllVersionInfo::dwMajorVersion
DWORD dwMajorVersion
Definition:
shlwapi.h:1955
_DllVersionInfo::dwBuildNumber
DWORD dwBuildNumber
Definition:
shlwapi.h:1957
_DllVersionInfo::dwMinorVersion
DWORD dwMinorVersion
Definition:
shlwapi.h:1956
_DllVersionInfo::cbSize
DWORD cbSize
Definition:
shlwapi.h:1954
_DllVersionInfo::dwPlatformID
DWORD dwPlatformID
Definition:
shlwapi.h:1958
winbase.h
TLS_OUT_OF_INDEXES
#define TLS_OUT_OF_INDEXES
Definition:
winbase.h:549
windef.h
WINAPI
#define WINAPI
Definition:
msvc.h:6
dll
win32
shlwapi
shlwapi_main.c
Generated on Wed Jun 7 2023 06:04:42 for ReactOS by
1.9.6