ReactOS 0.4.16-dev-125-g798ea90
setuplib.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Setup Library
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Public header
5 * COPYRIGHT: Copyright 2017-2018 Hermes Belusca-Maito
6 */
7
8#pragma once
9
10/* INCLUDES *****************************************************************/
11
12/* Needed PSDK headers when using this library */
13#if 0
14
15#define WIN32_NO_STATUS
16#define _INC_WINDOWS
17#define COM_NO_WINDOWS_H
18
19#include <winxxx.h>
20
21#endif
22
23/* NOTE: Please keep the header inclusion order! */
24
25extern HANDLE ProcessHeap;
26
27#include "errorcode.h"
28#include "spapisup/fileqsup.h"
29#include "spapisup/infsupp.h"
30#include "utils/linklist.h"
31#include "utils/ntverrsrc.h"
32// #include "utils/arcname.h"
33#include "utils/bldrsup.h"
34#include "utils/filesup.h"
35#include "utils/fsrec.h"
36#include "utils/genlist.h"
37#include "utils/inicache.h"
38#include "utils/partinfo.h"
39#include "utils/partlist.h"
40#include "utils/arcname.h"
41#include "utils/osdetect.h"
42#include "utils/regutil.h"
43#include "bootcode.h"
44#include "fsutil.h"
45#include "bootsup.h"
46#include "registry.h"
47#include "mui.h"
48#include "settings.h"
49
50// #include "install.h" // See at the end...
51
52
53/* DEFINES ******************************************************************/
54
55#define KB ((ULONGLONG)1024)
56#define MB (KB*KB)
57#define GB (KB*KB*KB)
58// #define TB (KB*KB*KB*KB)
59// #define PB (KB*KB*KB*KB*KB)
60
61
62/* TYPEDEFS *****************************************************************/
63
64struct _USETUP_DATA;
65
66typedef VOID
68
70{
71 ARCH_PcAT, //< Standard BIOS-based PC-AT
72 ARCH_NEC98x86, //< NEC PC-98
73 ARCH_Xbox, //< Original Xbox
74 ARCH_Arc, //< ARC-based (MIPS, SGI)
75 ARCH_Efi, //< EFI and UEFI
76// Place other architectures supported by the Setup below.
78
79typedef struct _USETUP_DATA
80{
81/* Error handling *****/
84
85/* Setup INFs *****/
87
88/* Installation *****/
89 PVOID SetupFileQueue; // HSPFILEQ
90
91/* SOURCE Paths *****/
95
96/* DESTINATION Paths *****/
97 /*
98 * Path to the system partition, where the boot manager resides.
99 * On x86 PCs, this is usually the active partition.
100 * On ARC, (u)EFI, ... platforms, this is a dedicated partition.
101 *
102 * For more information, see:
103 * https://en.wikipedia.org/wiki/System_partition_and_boot_partition
104 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/boot-and-system-volumes.html
105 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/arc-boot-process.html
106 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/efi-boot-process.html
107 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-system-volume.html
108 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-boot-volume.html
109 */
111
112 /* Path to the installation directory inside the ReactOS boot partition */
116
117 // FIXME: This is only temporary!! Must be removed later!
119
122
127
128/* Settings lists *****/
134
135/* Settings *****/
136 ARCHITECTURE_TYPE ArchType; //< Target architecture (MachineType)
139 // PCWSTR KeyboardDriver;
140 // PCWSTR MouseDriver;
141 PCWSTR LayoutId; // DefaultKBLayout
142
143/* Other stuff *****/
146
150
151
152#include "install.h"
153
154
155// HACK!!
157
158
159/* FUNCTIONS ****************************************************************/
160
161#include "substset.h"
162
163VOID
165 IN OUT PUSETUP_DATA pSetupData);
166
167VOID
169 IN OUT PUSETUP_DATA pSetupData);
170
173 OUT PUNICODE_STRING SourcePath,
174 OUT PUNICODE_STRING SourceRootPath,
175 OUT PUNICODE_STRING SourceRootDir);
176
179 IN OUT PUSETUP_DATA pSetupData);
180
181#define ERROR_SYSTEM_PARTITION_NOT_FOUND (ERROR_LAST_ERROR_CODE + 1)
182
185 _In_ PPARTLIST PartitionList, /* HACK HACK! */
186 _In_ PPARTENTRY InstallPartition, /* HACK HACK! */
187 _Out_ PPARTENTRY* pSystemPartition, /* HACK HACK! */
190
198#define IS_VALID_INSTALL_PATH_CHAR(c) \
199 (isalnum(c) || (c) == L'.' || (c) == L'\\' || (c) == L'-' || (c) == L'_')
200
203 _In_ PCWSTR InstallDir);
204
207 _Inout_ PUSETUP_DATA pSetupData,
208 _In_ PCWSTR InstallationDir,
210
211// NTSTATUS
214 IN OUT PUSETUP_DATA pSetupData,
215 IN ULONG InitPhase);
216
217VOID
219 IN OUT PUSETUP_DATA pSetupData);
220
221
223{
233
234typedef VOID
236
239 IN OUT PUSETUP_DATA pSetupData,
240 IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
241 IN PPARTLIST PartitionList, /* HACK HACK! */
242 IN WCHAR DestinationDriveLetter, /* HACK HACK! */
243 IN PCWSTR SelectedLanguageId, /* HACK HACK! */
245 IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL);
246
247/* EOF */
unsigned char BOOLEAN
#define __cdecl
Definition: accygwin.h:79
#define VOID
Definition: acefi.h:82
LONG NTSTATUS
Definition: precomp.h:26
static FSVOL_OP CALLBACK FsVolCallback(_In_opt_ PVOID Context, _In_ FSVOLNOTIFY FormatStatus, _In_ ULONG_PTR Param1, _In_ ULONG_PTR Param2)
Definition: reactos.c:1250
PPARTENTRY InstallPartition
Definition: reactos.c:45
#define MAX_PATH
Definition: compat.h:34
enum _ERROR_NUMBER ERROR_NUMBER
USHORT LANGID
Definition: mui.h:9
UNICODE_STRING Volume
Definition: fltkernel.h:1172
static const char const char const char PIMAGEHLP_STATUS_ROUTINE StatusRoutine
Definition: image.c:35
#define _Inout_
Definition: ms_sal.h:378
#define _Out_
Definition: ms_sal.h:345
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
long LONG
Definition: pedump.c:60
FSVOL_OP(CALLBACK * PFSVOL_CALLBACK)(_In_opt_ PVOID Context, _In_ FSVOLNOTIFY FormatStatus, _In_ ULONG_PTR Param1, _In_ ULONG_PTR Param2)
Definition: fsutil.h:196
NTSTATUS InitDestinationPaths(_Inout_ PUSETUP_DATA pSetupData, _In_ PCWSTR InstallationDir, _In_ PVOLENTRY Volume)
Definition: setuplib.c:797
BOOLEAN InitSystemPartition(_In_ PPARTLIST PartitionList, _In_ PPARTENTRY InstallPartition, _Out_ PPARTENTRY *pSystemPartition, _In_opt_ PFSVOL_CALLBACK FsVolCallback, _In_opt_ PVOID Context)
Find or set the active system partition.
Definition: setuplib.c:614
_ARCHITECTURE_TYPE
Definition: setuplib.h:70
@ ARCH_Arc
Definition: setuplib.h:74
@ ARCH_NEC98x86
Definition: setuplib.h:72
@ ARCH_PcAT
Definition: setuplib.h:71
@ ARCH_Xbox
Definition: setuplib.h:73
@ ARCH_Efi
Definition: setuplib.h:75
ERROR_NUMBER LoadSetupInf(IN OUT PUSETUP_DATA pSetupData)
Definition: setuplib.c:499
VOID FinishSetup(IN OUT PUSETUP_DATA pSetupData)
Definition: setuplib.c:1048
BOOLEAN IsValidInstallDirectory(_In_ PCWSTR InstallDir)
Verify whether the given directory is suitable for ReactOS installation. Each path component must be ...
Definition: setuplib.c:713
VOID CheckUnattendedSetup(IN OUT PUSETUP_DATA pSetupData)
Definition: setuplib.c:28
HANDLE ProcessHeap
Definition: servman.c:15
_REGISTRY_STATUS
Definition: setuplib.h:223
@ KeybLayouts
Definition: setuplib.h:229
@ DisplaySettingsUpdate
Definition: setuplib.h:227
@ CodePageInfoUpdate
Definition: setuplib.h:231
@ LocaleSettingsUpdate
Definition: setuplib.h:228
@ RegHiveUpdate
Definition: setuplib.h:225
@ ImportRegHive
Definition: setuplib.h:226
@ KeybSettingsUpdate
Definition: setuplib.h:230
@ Success
Definition: setuplib.h:224
enum _ARCHITECTURE_TYPE ARCHITECTURE_TYPE
VOID(__cdecl * PREGISTRY_STATUS_ROUTINE)(IN REGISTRY_STATUS,...)
Definition: setuplib.h:235
ERROR_NUMBER UpdateRegistry(IN OUT PUSETUP_DATA pSetupData, IN BOOLEAN RepairUpdateFlag, IN PPARTLIST PartitionList, IN WCHAR DestinationDriveLetter, IN PCWSTR SelectedLanguageId, IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL, IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL)
Definition: setuplib.c:1098
NTSTATUS GetSourcePaths(OUT PUNICODE_STRING SourcePath, OUT PUNICODE_STRING SourceRootPath, OUT PUNICODE_STRING SourceRootDir)
Definition: setuplib.c:382
enum _REGISTRY_STATUS REGISTRY_STATUS
struct _USETUP_DATA * PUSETUP_DATA
VOID InstallSetupInfFile(IN OUT PUSETUP_DATA pSetupData)
Definition: setuplib.c:202
BOOLEAN IsUnattendedSetup
Definition: reactos.c:41
struct _USETUP_DATA USETUP_DATA
VOID(__cdecl * PSETUP_ERROR_ROUTINE)(IN struct _USETUP_DATA *,...)
Definition: setuplib.h:67
ERROR_NUMBER InitializeSetup(IN OUT PUSETUP_DATA pSetupData, IN ULONG InitPhase)
Definition: setuplib.c:952
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
PGENERIC_LIST DisplayList
Definition: setuplib.h:130
LONG DestinationPartitionNumber
Definition: setuplib.h:121
UNICODE_STRING DestinationRootPath
Definition: setuplib.h:115
PGENERIC_LIST LanguageList
Definition: setuplib.h:133
UNICODE_STRING SourcePath
Definition: setuplib.h:94
PGENERIC_LIST LayoutList
Definition: setuplib.h:132
PVOID SetupFileQueue
Definition: setuplib.h:89
PGENERIC_LIST ComputerList
Definition: setuplib.h:129
UNICODE_STRING SourceRootDir
Definition: setuplib.h:93
PSETUP_ERROR_ROUTINE ErrorRoutine
Definition: setuplib.h:83
HINF SetupInf
Definition: setuplib.h:86
UNICODE_STRING SystemRootPath
Definition: setuplib.h:110
LONG FsType
Definition: setuplib.h:126
LONG AutoPartition
Definition: setuplib.h:125
UNICODE_STRING SourceRootPath
Definition: setuplib.h:92
WCHAR InstallationDirectory[MAX_PATH]
Definition: setuplib.h:148
UNICODE_STRING InstallPath
Definition: setuplib.h:118
LONG BootLoaderLocation
Definition: setuplib.h:123
UNICODE_STRING DestinationPath
Definition: setuplib.h:114
ARCHITECTURE_TYPE ArchType
Definition: setuplib.h:136
PCWSTR DisplayType
Definition: setuplib.h:138
PGENERIC_LIST KeyboardList
Definition: setuplib.h:131
LANGID LanguageId
Definition: setuplib.h:145
UNICODE_STRING DestinationArcPath
Definition: setuplib.h:113
PCWSTR ComputerType
Definition: setuplib.h:137
WCHAR LocaleID[9]
Definition: setuplib.h:144
ULONG RequiredPartitionDiskSpace
Definition: setuplib.h:147
ERROR_NUMBER LastErrorNumber
Definition: setuplib.h:82
PCWSTR LayoutId
Definition: setuplib.h:141
LONG DestinationDiskNumber
Definition: setuplib.h:120
LONG FormatPartition
Definition: setuplib.h:124
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
static PPARTLIST PartitionList
Definition: usetup.c:75
static BOOLEAN RepairUpdateFlag
Definition: usetup.c:72
PCWSTR SelectedLanguageId
Definition: usetup.c:68
__wchar_t WCHAR
Definition: xmlstorage.h:180