ReactOS  0.4.15-dev-345-g5d88487
winldr.h File Reference
#include <arc/setupblk.h>
#include <pshpack1.h>
#include <poppack.h>
Include dependency graph for winldr.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  RSDP_DESCRIPTOR
 
struct  _ARC_DISK_SIGNATURE_EX
 

Macros

#define TAG_WLDR_DTE   'eDlW'
 
#define TAG_WLDR_BDE   'dBlW'
 
#define TAG_WLDR_NAME   'mNlW'
 

Typedefs

typedef struct RSDP_DESCRIPTORPRSDP_DESCRIPTOR
 
typedef struct _ARC_DISK_SIGNATURE_EX ARC_DISK_SIGNATURE_EX
 
typedef struct _ARC_DISK_SIGNATURE_EXPARC_DISK_SIGNATURE_EX
 

Functions

ARC_STATUS LoadAndBootWindows (IN ULONG Argc, IN PCHAR Argv[], IN PCHAR Envp[])
 
ARC_STATUS LoadReactOSSetup (IN ULONG Argc, IN PCHAR Argv[], IN PCHAR Envp[])
 
PVOID VaToPa (PVOID Va)
 
PVOID PaToVa (PVOID Pa)
 
VOID List_PaToVa (_In_ LIST_ENTRY *ListEntry)
 

Macro Definition Documentation

◆ TAG_WLDR_BDE

#define TAG_WLDR_BDE   'dBlW'

Definition at line 14 of file winldr.h.

◆ TAG_WLDR_DTE

#define TAG_WLDR_DTE   'eDlW'

Definition at line 13 of file winldr.h.

◆ TAG_WLDR_NAME

#define TAG_WLDR_NAME   'mNlW'

Definition at line 15 of file winldr.h.

Typedef Documentation

◆ ARC_DISK_SIGNATURE_EX

◆ PARC_DISK_SIGNATURE_EX

◆ PRSDP_DESCRIPTOR

Function Documentation

◆ List_PaToVa()

VOID List_PaToVa ( _In_ LIST_ENTRY ListEntry)

◆ LoadAndBootWindows()

ARC_STATUS LoadAndBootWindows ( IN ULONG  Argc,
IN PCHAR  Argv[],
IN PCHAR  Envp[] 
)

Definition at line 820 of file winldr.c.

824 {
826  PCSTR ArgValue;
828  PCHAR File;
830  USHORT OperatingSystemVersion;
831  PLOADER_PARAMETER_BLOCK LoaderBlock;
832  CHAR BootPath[MAX_PATH];
834  CHAR BootOptions[256];
835 
836  /* Retrieve the (mandatory) boot type */
837  ArgValue = GetArgumentValue(Argc, Argv, "BootType");
838  if (!ArgValue || !*ArgValue)
839  {
840  ERR("No 'BootType' value, aborting!\n");
841  return EINVAL;
842  }
843 
844  /* Convert it to an OS version */
845  if (_stricmp(ArgValue, "Windows") == 0 ||
846  _stricmp(ArgValue, "Windows2003") == 0)
847  {
848  OperatingSystemVersion = _WIN32_WINNT_WS03;
849  }
850  else if (_stricmp(ArgValue, "WindowsNT40") == 0)
851  {
852  OperatingSystemVersion = _WIN32_WINNT_NT4;
853  }
854  else
855  {
856  ERR("Unknown 'BootType' value '%s', aborting!\n", ArgValue);
857  return EINVAL;
858  }
859 
860  /* Retrieve the (mandatory) system partition */
861  SystemPartition = GetArgumentValue(Argc, Argv, "SystemPartition");
863  {
864  ERR("No 'SystemPartition' specified, aborting!\n");
865  return EINVAL;
866  }
867 
868  UiDrawBackdrop();
869  UiDrawProgressBarCenter(1, 100, "Loading NT...");
870 
871  /* Retrieve the system path */
872  *BootPath = ANSI_NULL;
873  ArgValue = GetArgumentValue(Argc, Argv, "SystemPath");
874  if (ArgValue)
875  RtlStringCbCopyA(BootPath, sizeof(BootPath), ArgValue);
876 
877  /*
878  * Check whether BootPath is a full path
879  * and if not, create a full boot path.
880  *
881  * See FsOpenFile for the technique used.
882  */
883  if (strrchr(BootPath, ')') == NULL)
884  {
885  /* Temporarily save the boot path */
886  RtlStringCbCopyA(FileName, sizeof(FileName), BootPath);
887 
888  /* This is not a full path: prepend the SystemPartition */
889  RtlStringCbCopyA(BootPath, sizeof(BootPath), SystemPartition);
890 
891  /* Append a path separator if needed */
892  if (*FileName != '\\' && *FileName != '/')
893  RtlStringCbCatA(BootPath, sizeof(BootPath), "\\");
894 
895  /* Append the remaining path */
896  RtlStringCbCatA(BootPath, sizeof(BootPath), FileName);
897  }
898 
899  /* Append a path separator if needed */
900  if (!*BootPath || BootPath[strlen(BootPath) - 1] != '\\')
901  RtlStringCbCatA(BootPath, sizeof(BootPath), "\\");
902 
903  TRACE("BootPath: '%s'\n", BootPath);
904 
905  /* Retrieve the boot options */
907  ArgValue = GetArgumentValue(Argc, Argv, "Options");
908  if (ArgValue && *ArgValue)
909  RtlStringCbCopyA(BootOptions, sizeof(BootOptions), ArgValue);
910 
911  /* Append boot-time options */
913 
914  /*
915  * Set "/HAL=" and "/KERNEL=" options if needed.
916  * If already present on the standard "Options=" option line, they take
917  * precedence over those passed via the separate "Hal=" and "Kernel="
918  * options.
919  */
920  if (strstr(BootOptions, "/HAL=") != 0)
921  {
922  /*
923  * Not found in the options, try to retrieve the
924  * separate value and append it to the options.
925  */
926  ArgValue = GetArgumentValue(Argc, Argv, "Hal");
927  if (ArgValue && *ArgValue)
928  {
929  RtlStringCbCatA(BootOptions, sizeof(BootOptions), " /HAL=");
930  RtlStringCbCatA(BootOptions, sizeof(BootOptions), ArgValue);
931  }
932  }
933  if (strstr(BootOptions, "/KERNEL=") != 0)
934  {
935  /*
936  * Not found in the options, try to retrieve the
937  * separate value and append it to the options.
938  */
939  ArgValue = GetArgumentValue(Argc, Argv, "Kernel");
940  if (ArgValue && *ArgValue)
941  {
942  RtlStringCbCatA(BootOptions, sizeof(BootOptions), " /KERNEL=");
943  RtlStringCbCatA(BootOptions, sizeof(BootOptions), ArgValue);
944  }
945  }
946 
947  TRACE("BootOptions: '%s'\n", BootOptions);
948 
949  /* Check if a ramdisk file was given */
950  File = strstr(BootOptions, "/RDPATH=");
951  if (File)
952  {
953  /* Load the ramdisk */
955  if (Status != ESUCCESS)
956  {
957  File += 8;
958  UiMessageBox("Failed to load RAM disk file '%.*s'",
959  strcspn(File, " \t"), File);
960  return Status;
961  }
962  }
963 
964  /* Let user know we started loading */
965  //UiDrawStatusText("Loading...");
966 
967  /* Allocate and minimally-initialize the Loader Parameter Block */
968  AllocateAndInitLPB(OperatingSystemVersion, &LoaderBlock);
969 
970  /* Load the system hive */
971  UiDrawBackdrop();
972  UiDrawProgressBarCenter(15, 100, "Loading system hive...");
973  Success = WinLdrInitSystemHive(LoaderBlock, BootPath, FALSE);
974  TRACE("SYSTEM hive %s\n", (Success ? "loaded" : "not loaded"));
975  /* Bail out if failure */
976  if (!Success)
977  return ENOEXEC;
978 
979  /* Fixup the version number using data from the registry */
980  if (OperatingSystemVersion == 0)
981  OperatingSystemVersion = WinLdrDetectVersion();
982  LoaderBlock->Extension->MajorVersion = (OperatingSystemVersion & 0xFF00) >> 8;
983  LoaderBlock->Extension->MinorVersion = (OperatingSystemVersion & 0xFF);
984 
985  /* Load NLS data, OEM font, and prepare boot drivers list */
986  Success = WinLdrScanSystemHive(LoaderBlock, BootPath);
987  TRACE("SYSTEM hive %s\n", (Success ? "scanned" : "not scanned"));
988  /* Bail out if failure */
989  if (!Success)
990  return ENOEXEC;
991 
992  /* Load the Firmware Errata file */
993  Success = WinLdrInitErrataInf(LoaderBlock, OperatingSystemVersion, BootPath);
994  TRACE("Firmware Errata file %s\n", (Success ? "loaded" : "not loaded"));
995  /* Not necessarily fatal if not found - carry on going */
996 
997  /* Finish loading */
998  return LoadAndBootWindowsCommon(OperatingSystemVersion,
999  LoaderBlock,
1000  BootOptions,
1001  BootPath,
1002  FALSE);
1003 }
VOID AppendBootTimeOptions(PCHAR BootOptions)
Definition: options.c:252
signed char * PCHAR
Definition: retypes.h:7
ARC_STATUS RamDiskInitialize(IN BOOLEAN InitRamDisk, IN PCSTR LoadOptions OPTIONAL, IN PCSTR DefaultPath OPTIONAL)
Definition: ramdisk.c:204
#define _WIN32_WINNT_WS03
Definition: sdkddkver.h:23
Definition: arc.h:32
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
BOOLEAN WinLdrScanSystemHive(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock, IN PCSTR SystemRoot)
Definition: wlregistry.c:173
char * strstr(char *String1, char *String2)
Definition: utclib.c:653
_Check_return_ _CRTIMP size_t __cdecl strcspn(_In_z_ const char *_Str, _In_z_ const char *_Control)
Definition: arc.h:39
PLOADER_PARAMETER_EXTENSION Extension
Definition: arc.h:512
char CHAR
Definition: xmlstorage.h:175
ULONG ARC_STATUS
Definition: arc.h:4
static BOOLEAN WinLdrInitErrataInf(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock, IN USHORT OperatingSystemVersion, IN PCSTR SystemRoot)
Definition: winldr.c:759
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
#define _stricmp
Definition: cat.c:22
NTSTRSAFEAPI RtlStringCbCopyA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
Definition: ntstrsafe.h:156
#define ANSI_NULL
_In_opt_ PVOID _In_ PCSTR File
Definition: iofuncs.h:615
VOID UiMessageBox(PCSTR Format,...)
Definition: ui.c:320
unsigned char BOOLEAN
smooth NULL
Definition: ftsmooth.c:416
#define _WIN32_WINNT_NT4
Definition: sdkddkver.h:20
USHORT WinLdrDetectVersion(VOID)
Definition: winldr.c:428
#define TRACE(s)
Definition: solgame.cpp:4
#define MAX_PATH
Definition: compat.h:26
static PPARTENTRY SystemPartition
Definition: usetup.c:61
VOID UiDrawBackdrop(VOID)
Definition: ui.c:214
VOID AllocateAndInitLPB(IN USHORT VersionToBoot, OUT PLOADER_PARAMETER_BLOCK *OutLoaderBlock)
Definition: winldr.c:43
Status
Definition: gdiplustypes.h:24
#define ERR(fmt,...)
Definition: debug.h:110
unsigned short USHORT
Definition: pedump.c:61
ARC_STATUS LoadAndBootWindowsCommon(USHORT OperatingSystemVersion, PLOADER_PARAMETER_BLOCK LoaderBlock, PCSTR BootOptions, PCSTR BootPath, BOOLEAN Setup)
Definition: winldr.c:1006
Definition: arc.h:47
const char * PCSTR
Definition: typedefs.h:52
Definition: File.h:15
PCHAR GetArgumentValue(IN ULONG Argc, IN PCHAR Argv[], IN PCHAR ArgumentName)
Definition: arcsupp.c:41
BOOLEAN WinLdrInitSystemHive(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock, IN PCSTR SystemRoot, IN BOOLEAN Setup)
Definition: wlregistry.c:123
VOID UiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText)
Definition: ui.c:346
NTSTRSAFEAPI RtlStringCbCatA(_Inout_updates_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
Definition: ntstrsafe.h:625

◆ LoadReactOSSetup()

ARC_STATUS LoadReactOSSetup ( IN ULONG  Argc,
IN PCHAR  Argv[],
IN PCHAR  Envp[] 
)

Definition at line 178 of file setupldr.c.

182 {
184  PCSTR ArgValue;
186  PCHAR File;
188  CHAR BootPath[MAX_PATH];
189  CHAR BootOptions2[256];
190  PCSTR LoadOptions;
192  BOOLEAN BootFromFloppy;
194  ULONG i, ErrorLine;
195  HINF InfHandle;
196  INFCONTEXT InfContext;
197  PLOADER_PARAMETER_BLOCK LoaderBlock;
198  PSETUP_LOADER_BLOCK SetupBlock;
199  PCSTR SystemPath;
200 
201  static PCSTR SourcePaths[] =
202  {
203  "", /* Only for floppy boot */
204 #if defined(_M_IX86)
205  "I386\\",
206 #elif defined(_M_MPPC)
207  "PPC\\",
208 #elif defined(_M_MRX000)
209  "MIPS\\",
210 #endif
211  "reactos\\",
212  NULL
213  };
214 
215  /* Retrieve the (mandatory) system partition */
216  SystemPartition = GetArgumentValue(Argc, Argv, "SystemPartition");
218  {
219  ERR("No 'SystemPartition' specified, aborting!\n");
220  return EINVAL;
221  }
222 
223  UiDrawStatusText("Setup is loading...");
224 
225  UiDrawBackdrop();
226  UiDrawProgressBarCenter(1, 100, "Loading ReactOS Setup...");
227 
228  /* Retrieve the system path */
229  *BootPath = ANSI_NULL;
230  ArgValue = GetArgumentValue(Argc, Argv, "SystemPath");
231  if (ArgValue)
232  {
233  RtlStringCbCopyA(BootPath, sizeof(BootPath), ArgValue);
234  }
235  else
236  {
237  /*
238  * IMPROVE: I don't want to use the SystemPartition here as a
239  * default choice because I can do it after (see few lines below).
240  * Instead I reset BootPath here so that we can build the full path
241  * using the general code from below.
242  */
243  // RtlStringCbCopyA(BootPath, sizeof(BootPath), SystemPartition);
244  *BootPath = ANSI_NULL;
245  }
246 
247  /*
248  * Check whether BootPath is a full path
249  * and if not, create a full boot path.
250  *
251  * See FsOpenFile for the technique used.
252  */
253  if (strrchr(BootPath, ')') == NULL)
254  {
255  /* Temporarily save the boot path */
256  RtlStringCbCopyA(FileName, sizeof(FileName), BootPath);
257 
258  /* This is not a full path: prepend the SystemPartition */
259  RtlStringCbCopyA(BootPath, sizeof(BootPath), SystemPartition);
260 
261  /* Append a path separator if needed */
262  if (*FileName != '\\' && *FileName != '/')
263  RtlStringCbCatA(BootPath, sizeof(BootPath), "\\");
264 
265  /* Append the remaining path */
266  RtlStringCbCatA(BootPath, sizeof(BootPath), FileName);
267  }
268 
269  /* Append a path separator if needed */
270  if (!*BootPath || BootPath[strlen(BootPath) - 1] != '\\')
271  RtlStringCbCatA(BootPath, sizeof(BootPath), "\\");
272 
273  TRACE("BootPath: '%s'\n", BootPath);
274 
275  /* Retrieve the boot options */
276  *BootOptions2 = ANSI_NULL;
277  ArgValue = GetArgumentValue(Argc, Argv, "Options");
278  if (ArgValue && *ArgValue)
279  RtlStringCbCopyA(BootOptions2, sizeof(BootOptions2), ArgValue);
280 
281  TRACE("BootOptions: '%s'\n", BootOptions2);
282 
283  /* Check if a ramdisk file was given */
284  File = strstr(BootOptions2, "/RDPATH=");
285  if (File)
286  {
287  /* Load the ramdisk */
288  Status = RamDiskInitialize(FALSE, BootOptions2, SystemPartition);
289  if (Status != ESUCCESS)
290  {
291  File += 8;
292  UiMessageBox("Failed to load RAM disk file '%.*s'",
293  strcspn(File, " \t"), File);
294  return Status;
295  }
296  }
297 
298  /* Check if we booted from floppy */
299  BootFromFloppy = strstr(BootPath, "fdisk") != NULL;
300 
301  /* Open 'txtsetup.sif' from any of source paths */
302  File = BootPath + strlen(BootPath);
303  for (i = BootFromFloppy ? 0 : 1; ; i++)
304  {
305  SystemPath = SourcePaths[i];
306  if (!SystemPath)
307  {
308  UiMessageBox("Failed to open txtsetup.sif");
309  return ENOENT;
310  }
311  RtlStringCbCopyA(File, sizeof(BootPath) - (File - BootPath)*sizeof(CHAR), SystemPath);
312  RtlStringCbCopyA(FileName, sizeof(FileName), BootPath);
313  RtlStringCbCatA(FileName, sizeof(FileName), "txtsetup.sif");
314  if (InfOpenFile(&InfHandle, FileName, &ErrorLine))
315  {
316  break;
317  }
318  }
319 
320  TRACE("BootPath: '%s', SystemPath: '%s'\n", BootPath, SystemPath);
321 
322  /* Get load options - debug and non-debug */
323  if (!InfFindFirstLine(InfHandle, "SetupData", "OsLoadOptions", &InfContext))
324  {
325  ERR("Failed to find 'SetupData/OsLoadOptions'\n");
326  return EINVAL;
327  }
328 
329  if (!InfGetDataField(&InfContext, 1, &LoadOptions))
330  {
331  ERR("Failed to get load options\n");
332  return EINVAL;
333  }
334 
335 #if DBG
336  /* Get debug load options and use them */
337  if (InfFindFirstLine(InfHandle, "SetupData", "DbgOsLoadOptions", &InfContext))
338  {
339  PCSTR DbgLoadOptions;
340 
341  if (InfGetDataField(&InfContext, 1, &DbgLoadOptions))
342  LoadOptions = DbgLoadOptions;
343  }
344 #endif
345 
346  /* Copy LoadOptions (original string will be freed) */
347  BootOptions = FrLdrTempAlloc(strlen(LoadOptions) + 1, TAG_BOOT_OPTIONS);
349  strcpy(BootOptions, LoadOptions);
350 
351  TRACE("BootOptions: '%s'\n", BootOptions);
352 
353  /* Allocate and minimally-initialize the Loader Parameter Block */
354  AllocateAndInitLPB(_WIN32_WINNT_WS03, &LoaderBlock);
355 
356  /* Allocate and initialize setup loader block */
357  SetupBlock = &WinLdrSystemBlock->SetupBlock;
358  LoaderBlock->SetupLdrBlock = SetupBlock;
359 
360  /* Set textmode setup flag */
361  SetupBlock->Flags = SETUPLDR_TEXT_MODE;
362 
363  /* Load the system hive "setupreg.hiv" for setup */
364  UiDrawBackdrop();
365  UiDrawProgressBarCenter(15, 100, "Loading setup system hive...");
366  Success = WinLdrInitSystemHive(LoaderBlock, BootPath, TRUE);
367  TRACE("Setup SYSTEM hive %s\n", (Success ? "loaded" : "not loaded"));
368  /* Bail out if failure */
369  if (!Success)
370  return ENOEXEC;
371 
372  /* Load NLS data, they are in the System32 directory of the installation medium */
373  RtlStringCbCopyA(FileName, sizeof(FileName), BootPath);
374  RtlStringCbCatA(FileName, sizeof(FileName), "system32\\");
375  SetupLdrLoadNlsData(LoaderBlock, InfHandle, FileName);
376 
377  /* Load the Firmware Errata file from the installation medium */
378  Success = SetupLdrInitErrataInf(LoaderBlock, InfHandle, BootPath);
379  TRACE("Firmware Errata file %s\n", (Success ? "loaded" : "not loaded"));
380  /* Not necessarily fatal if not found - carry on going */
381 
382  // UiDrawStatusText("Press F6 if you need to install a 3rd-party SCSI or RAID driver...");
383 
384  /* Get a list of boot drivers */
385  SetupLdrScanBootDrivers(&LoaderBlock->BootDriverListHead, InfHandle, BootPath);
386 
387  /* Close the inf file */
388  InfCloseFile(InfHandle);
389 
390  UiDrawStatusText("The Setup program is starting...");
391 
392  /* Load ReactOS Setup */
394  LoaderBlock,
395  BootOptions,
396  BootPath,
397  TRUE);
398 }
signed char * PCHAR
Definition: retypes.h:7
ARC_STATUS RamDiskInitialize(IN BOOLEAN InitRamDisk, IN PCSTR LoadOptions OPTIONAL, IN PCSTR DefaultPath OPTIONAL)
Definition: ramdisk.c:204
#define TRUE
Definition: types.h:120
#define _WIN32_WINNT_WS03
Definition: sdkddkver.h:23
Definition: arc.h:32
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
static VOID SetupLdrScanBootDrivers(PLIST_ENTRY BootDriverListHead, HINF InfHandle, PCSTR SearchPath)
Definition: setupldr.c:125
char * strstr(char *String1, char *String2)
Definition: utclib.c:653
_Check_return_ _CRTIMP size_t __cdecl strcspn(_In_z_ const char *_Str, _In_z_ const char *_Control)
Definition: arc.h:39
static VOID SetupLdrLoadNlsData(PLOADER_PARAMETER_BLOCK LoaderBlock, HINF InfHandle, PCSTR SearchPath)
Definition: setupldr.c:26
char CHAR
Definition: xmlstorage.h:175
ULONG ARC_STATUS
Definition: arc.h:4
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
BOOLEAN InfGetDataField(PINFCONTEXT Context, ULONG FieldIndex, PWCHAR *Data)
Definition: infrosget.c:127
NTSTRSAFEAPI RtlStringCbCopyA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
Definition: ntstrsafe.h:156
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _SETUP_LOADER_BLOCK * SetupLdrBlock
Definition: arc.h:511
#define ANSI_NULL
_In_opt_ PVOID _In_ PCSTR File
Definition: iofuncs.h:615
VOID UiMessageBox(PCSTR Format,...)
Definition: ui.c:320
FORCEINLINE PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
Definition: mm.h:177
unsigned char BOOLEAN
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define MAX_PATH
Definition: compat.h:26
LIST_ENTRY BootDriverListHead
Definition: arc.h:495
static PPARTENTRY SystemPartition
Definition: usetup.c:61
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
VOID UiDrawStatusText(PCSTR StatusText)
Definition: ui.c:249
VOID InfCloseFile(HINF InfHandle)
Definition: inffile.c:1028
VOID UiDrawBackdrop(VOID)
Definition: ui.c:214
Status
Definition: gdiplustypes.h:24
SETUP_LOADER_BLOCK SetupBlock
Definition: winldr.h:50
#define ERR(fmt,...)
Definition: debug.h:110
#define TAG_BOOT_OPTIONS
Definition: setupldr.c:17
#define SETUPLDR_TEXT_MODE
Definition: setupblk.h:7
signed char * PSTR
Definition: retypes.h:7
ARC_STATUS LoadAndBootWindowsCommon(USHORT OperatingSystemVersion, PLOADER_PARAMETER_BLOCK LoaderBlock, PCSTR BootOptions, PCSTR BootPath, BOOLEAN Setup)
Definition: winldr.c:1006
Definition: arc.h:46
static BOOLEAN SetupLdrInitErrataInf(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock, IN HINF InfHandle, IN PCSTR SystemRoot)
Definition: setupldr.c:84
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
VOID AllocateAndInitLPB(IN USHORT VersionToBoot, OUT PLOADER_PARAMETER_BLOCK *OutLoaderBlock)
Definition: winldr.c:43
BOOLEAN InfFindFirstLine(HINF InfHandle, PCSTR Section, PCSTR Key, PINFCONTEXT Context)
Definition: inffile.c:1050
unsigned int ULONG
Definition: retypes.h:1
Definition: arc.h:47
const char * PCSTR
Definition: typedefs.h:52
Definition: File.h:15
PCHAR GetArgumentValue(IN ULONG Argc, IN PCHAR Argv[], IN PCHAR ArgumentName)
Definition: arcsupp.c:41
BOOLEAN WinLdrInitSystemHive(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock, IN PCSTR SystemRoot, IN BOOLEAN Setup)
Definition: wlregistry.c:123
BOOLEAN InfOpenFile(PHINF InfHandle, PCSTR FileName, PULONG ErrorLine)
Definition: inffile.c:918
VOID UiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText)
Definition: ui.c:346
PLOADER_SYSTEM_BLOCK WinLdrSystemBlock
Definition: winldr.c:27
NTSTRSAFEAPI RtlStringCbCatA(_Inout_updates_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
Definition: ntstrsafe.h:625

◆ PaToVa()

◆ VaToPa()