ReactOS 0.4.16-dev-2122-g1628f5e
crt_wmain.c
Go to the documentation of this file.
1/*
2 * wmainCRTStartup default entry point
3 *
4 * Copyright 2019 Jacek Caban for CodeWeavers
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#if 0
22#pragma makedep implib
23#endif
24
25#include <stdarg.h>
26#include <stdlib.h>
27#include <process.h>
28
29#include "windef.h"
30#include "winbase.h"
31#include "winternl.h"
32
34
35static const IMAGE_NT_HEADERS *get_nt_header( void )
36{
37 IMAGE_DOS_HEADER *dos = (IMAGE_DOS_HEADER *)NtCurrentTeb()->Peb->ImageBaseAddress;
38 return (const IMAGE_NT_HEADERS *)((char *)dos + dos->e_lfanew);
39}
40
42{
43 int argc, ret;
44 WCHAR **argv, **env;
45
46#ifdef _UCRT
49 argc = *__p___argc();
50 argv = *__p___wargv();
52#else
53 int new_mode = 0;
54 __wgetmainargs(&argc, &argv, &env, 0, &new_mode);
55#endif
57
58 ret = wmain(argc, argv, env);
59
60 exit(ret);
61 return ret;
62}
static int argc
Definition: ServiceArgs.c:12
int __cdecl wmainCRTStartup(void)
Definition: crt_wmain.c:41
static const IMAGE_NT_HEADERS * get_nt_header(void)
Definition: crt_wmain.c:35
static LPCWSTR LPCWSTR LPCWSTR env
Definition: db.cpp:171
int CDECL __wgetmainargs(int *argc, wchar_t ***wargv, wchar_t ***wenvp, int expand_wildcards, int *new_mode)
Definition: data.c:536
int *CDECL __p___argc(void)
Definition: data.c:227
wchar_t ***CDECL __p___wargv(void)
Definition: data.c:334
#define __cdecl
Definition: corecrt.h:121
@ _crt_argv_unexpanded_arguments
_ACRTIMP errno_t __cdecl _configure_wide_argv(_crt_argv_mode)
@ _crt_gui_app
@ _crt_console_app
_ACRTIMP wchar_t **__cdecl _get_initial_wide_environment(void)
_ACRTIMP int __cdecl _initialize_wide_environment(void)
#define _set_app_type
return ret
Definition: mutex.c:146
#define NtCurrentTeb
IMAGE_DOS_HEADER dos
Definition: module.c:67
#define argv
Definition: mplay32.c:18
#define IMAGE_SUBSYSTEM_WINDOWS_GUI
Definition: ntimage.h:437
int wmain()
#define exit(n)
Definition: config.h:202
__wchar_t WCHAR
Definition: xmlstorage.h:180