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
10 /* INCLUDES *****************************************************************/
12 /* Needed PSDK headers when using this library */
15 #define WIN32_NO_STATUS
17 #define COM_NO_WINDOWS_H
23 /* NOTE: Please keep the header inclusion order! */
25 extern HANDLE ProcessHeap
;
27 #include "errorcode.h"
28 #include "utils/linklist.h"
29 #include "utils/ntverrsrc.h"
30 // #include "utils/arcname.h"
31 #include "utils/bldrsup.h"
33 #include "utils/filesup.h"
35 #include "utils/genlist.h"
36 #include "utils/infsupp.h"
37 #include "utils/inicache.h"
38 #include "utils/partlist.h"
39 #include "utils/arcname.h"
40 #include "utils/osdetect.h"
41 #include "utils/regutil.h"
47 /* DEFINES ******************************************************************/
49 #define KB ((ULONGLONG)1024)
52 // #define TB (KB*KB*KB*KB)
53 // #define PB (KB*KB*KB*KB*KB)
56 /* TYPEDEFS *****************************************************************/
58 typedef struct _USETUP_DATA
60 /* SOURCE Paths *****/
61 UNICODE_STRING SourceRootPath
;
62 UNICODE_STRING SourceRootDir
;
63 UNICODE_STRING SourcePath
;
65 /* DESTINATION Paths *****/
67 * Path to the system partition, where the boot manager resides.
68 * On x86 PCs, this is usually the active partition.
69 * On ARC, (u)EFI, ... platforms, this is a dedicated partition.
71 * For more information, see:
72 * https://en.wikipedia.org/wiki/System_partition_and_boot_partition
73 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/boot-and-system-volumes.html
74 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/arc-boot-process.html
75 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/efi-boot-process.html
76 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-system-volume.html
77 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-boot-volume.html
79 UNICODE_STRING SystemRootPath
;
81 /* Path to the installation directory inside the ReactOS boot partition */
82 UNICODE_STRING DestinationPath
; /** Equivalent of 'NTOS_INSTALLATION::SystemNtPath' **/
83 UNICODE_STRING DestinationArcPath
; /** Equivalent of 'NTOS_INSTALLATION::SystemArcPath' **/
84 UNICODE_STRING DestinationRootPath
;
86 LONG DestinationDiskNumber
;
87 LONG DestinationPartitionNumber
;
96 ULONG RequiredPartitionDiskSpace
;
97 WCHAR InstallationDirectory
[MAX_PATH
];
98 } USETUP_DATA
, *PUSETUP_DATA
;
101 extern BOOLEAN IsUnattendedSetup
;
104 /* FUNCTIONS ****************************************************************/
107 CheckUnattendedSetup(
108 IN OUT PUSETUP_DATA pSetupData
);
112 IN OUT PUSETUP_DATA pSetupData
);
116 OUT PUNICODE_STRING SourcePath
,
117 OUT PUNICODE_STRING SourceRootPath
,
118 OUT PUNICODE_STRING SourceRootDir
);
123 IN OUT PUSETUP_DATA pSetupData
);
126 typedef enum _REGISTRY_STATUS
131 DisplaySettingsUpdate
,
132 LocaleSettingsUpdate
,
139 (__cdecl
*PREGISTRY_STATUS_ROUTINE
)(IN REGISTRY_STATUS
, ...);
144 IN OUT PUSETUP_DATA pSetupData
,
145 /**/IN BOOLEAN RepairUpdateFlag
, /* HACK HACK! */
146 /**/IN PPARTLIST PartitionList
, /* HACK HACK! */
147 /**/IN WCHAR DestinationDriveLetter
, /* HACK HACK! */
148 /**/IN PCWSTR SelectedLanguageId
, /* HACK HACK! */
149 IN PGENERIC_LIST DisplayList
,
150 IN PGENERIC_LIST LayoutList
,
151 IN PGENERIC_LIST LanguageList
,
152 IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL
);