ReactOS
0.4.15-dev-7098-ge0c17c3
dllmain.c
Go to the documentation of this file.
1
/*
2
* dllmain.c
3
*
4
* ReactOS MSVCRT.DLL Compatibility Library
5
*
6
* THIS SOFTWARE IS NOT COPYRIGHTED
7
*
8
* This source code is offered for use in the public domain. You may
9
* use, modify or distribute it freely.
10
*
11
* This code is distributed in the hope that it will be useful but
12
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
13
* DISCLAMED. This includes but is not limited to warranties of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
*
16
*/
17
18
#include "
precomp.h
"
19
20
WINE_DEFAULT_DEBUG_CHANNEL
(msvcrt);
21
22
/* EXTERNAL PROTOTYPES ********************************************************/
23
24
BOOL
crt_process_init
(
void
);
25
26
extern
void
FreeEnvironment
(
char
**environment);
27
28
#undef _environ
29
extern
char
**
_environ
;
/* pointer to environment block */
30
extern
char
**
__initenv
;
/* pointer to initial environment block */
31
extern
wchar_t
**
_wenviron
;
/* pointer to environment block */
32
extern
wchar_t
**
__winitenv
;
/* pointer to initial environment block */
33
34
/* LIBRARY ENTRY POINT ********************************************************/
35
36
BOOL
37
WINAPI
38
DllMain
(
PVOID
hinstDll,
ULONG
dwReason
,
PVOID
reserved
)
39
{
40
switch
(
dwReason
)
41
{
42
case
DLL_PROCESS_ATTACH
:
43
44
TRACE
(
"Process Attach\n"
);
45
46
if
(!
crt_process_init
())
47
{
48
ERR
(
"crt_init() failed!\n"
);
49
return
FALSE
;
50
}
51
52
TRACE
(
"Attach done\n"
);
53
break
;
54
55
case
DLL_THREAD_ATTACH
:
56
//msvcrt_get_thread_data creates data when first called
57
break
;
58
59
case
DLL_THREAD_DETACH
:
60
msvcrt_free_tls_mem
();
61
break
;
62
63
case
DLL_PROCESS_DETACH
:
64
TRACE
(
"Detach\n"
);
65
/* Deinit of the WINE code */
66
msvcrt_free_io
();
67
if
(
reserved
)
break
;
68
msvcrt_free_popen_data
();
69
msvcrt_free_mt_locks
();
70
//msvcrt_free_console();
71
//msvcrt_free_args();
72
//msvcrt_free_signals();
73
msvcrt_free_tls_mem
();
74
if
(!
msvcrt_free_tls
())
75
return
FALSE
;
76
if
(
global_locale
)
77
MSVCRT__free_locale
(
global_locale
);
78
79
if
(
__winitenv
&&
__winitenv
!=
_wenviron
)
80
FreeEnvironment
((
char
**)
__winitenv
);
81
if
(
_wenviron
)
82
FreeEnvironment
((
char
**)
_wenviron
);
83
84
if
(
__initenv
&&
__initenv
!=
_environ
)
85
FreeEnvironment
(
__initenv
);
86
if
(
_environ
)
87
FreeEnvironment
(
_environ
);
88
89
TRACE
(
"Detach done\n"
);
90
break
;
91
}
92
93
return
TRUE
;
94
}
95
96
/* FIXME: This hack is required to prevent the VC linker from linking these
97
exports to the functions from libntdll. See CORE-10753 */
98
#ifdef _MSC_VER
99
#ifdef _M_IX86
100
#pragma comment(linker, "/include:__vsnprintf"
)
101
#pragma comment(linker, "/include:_bsearch"
)
102
#pragma comment(linker, "/include:_strcspn"
)
103
#else
104
#pragma comment(linker, "/include:_vsnprintf"
)
105
#pragma comment(linker, "/include:bsearch"
)
106
#pragma comment(linker, "/include:strcspn"
)
107
#endif
// _M_IX86
108
#endif
// _MSC_VER
109
110
/* EOF */
WINE_DEFAULT_DEBUG_CHANNEL
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition:
precomp.h:23
dwReason
DWORD dwReason
Definition:
misc.cpp:154
ERR
#define ERR(fmt,...)
Definition:
debug.h:110
TRUE
#define TRUE
Definition:
types.h:120
FALSE
#define FALSE
Definition:
types.h:117
DllMain
BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
Definition:
dllmain.c:52
FreeEnvironment
void FreeEnvironment(char **environment)
Definition:
environ.c:190
__initenv
char ** __initenv
Definition:
environ.c:24
__winitenv
wchar_t ** __winitenv
Definition:
environ.c:25
_wenviron
wchar_t ** _wenviron
Definition:
environ.c:23
crt_process_init
BOOL crt_process_init(void)
Definition:
crt_init.c:21
_environ
char ** _environ
Definition:
environ.c:22
DLL_THREAD_DETACH
#define DLL_THREAD_DETACH
Definition:
compat.h:133
DLL_PROCESS_ATTACH
#define DLL_PROCESS_ATTACH
Definition:
compat.h:131
DLL_PROCESS_DETACH
#define DLL_PROCESS_DETACH
Definition:
compat.h:130
DLL_THREAD_ATTACH
#define DLL_THREAD_ATTACH
Definition:
compat.h:132
reserved
r reserved
Definition:
btrfs.c:3006
BOOL
unsigned int BOOL
Definition:
ntddk_ex.h:94
void
Definition:
nsiface.idl:2307
global_locale
MSVCRT__locale_t global_locale
Definition:
locale.c:1495
MSVCRT__free_locale
void __cdecl MSVCRT__free_locale(MSVCRT__locale_t)
Definition:
locale.c:711
msvcrt_free_mt_locks
void msvcrt_free_mt_locks(void)
Definition:
lock.c:77
msvcrt_free_io
void msvcrt_free_io(void)
Definition:
file.c:1100
msvcrt_free_popen_data
void msvcrt_free_popen_data(void)
Definition:
popen.c:29
TRACE
#define TRACE(s)
Definition:
solgame.cpp:4
msvcrt_free_tls_mem
void msvcrt_free_tls_mem(void)
Definition:
tls.c:51
msvcrt_free_tls
BOOL msvcrt_free_tls(void)
Definition:
tls.c:21
ULONG
uint32_t ULONG
Definition:
typedefs.h:59
precomp.h
WINAPI
#define WINAPI
Definition:
msvc.h:6
dll
win32
msvcrt
dllmain.c
Generated on Fri Dec 1 2023 06:13:57 for ReactOS by
1.9.6