151 lines
2.7 KiB
C
151 lines
2.7 KiB
C
/*++
|
|
|
|
Copyright (c) 1992 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
bootx86.h
|
|
|
|
Abstract:
|
|
|
|
Code to do
|
|
|
|
Author:
|
|
|
|
Sunil Pai (sunilp) 26-Oct-1993
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#define FLEXBOOT_SECTION1 "[flexboot]"
|
|
#define FLEXBOOT_SECTION2 "[boot loader]"
|
|
#define FLEXBOOT_SECTION3 "[multiboot]"
|
|
#define BOOTINI_OS_SECTION "[operating systems]"
|
|
#define TIMEOUT "timeout"
|
|
#define DEFAULT "default"
|
|
#define CRLF "\r\n"
|
|
#define EQUALS "="
|
|
|
|
#define WBOOT_INI L"boot.ini"
|
|
#define WBOOT_INI_BAK L"bootini.bak"
|
|
|
|
|
|
//
|
|
// Use this to keep track of boot.ini entries
|
|
// that previously contained 'signatured' entries
|
|
// since we convert them to multi... enties when
|
|
// we initially read the boot.ini. Rather than
|
|
// work backwards, we'll just use this struct
|
|
// to re-match the boot.ini entries when we're
|
|
// about to write it out, thus giving us a shortcut
|
|
// to determining which boot.ini entries need to
|
|
// have the 'signature' entry.
|
|
//
|
|
typedef struct _SIGNATURED_PARTITIONS {
|
|
struct _SIGNATURED_PARTITIONS *Next;
|
|
|
|
//
|
|
// What's the original boot.ini entry with that contained
|
|
// the signature?
|
|
//
|
|
PWSTR SignedString;
|
|
|
|
//
|
|
// What's the boot.ini entry after we've converted it into
|
|
// a 'multi' string?
|
|
//
|
|
PWSTR MultiString;
|
|
} SIGNATURED_PARTITIONS;
|
|
|
|
extern SIGNATURED_PARTITIONS SignedBootVars;
|
|
|
|
|
|
//
|
|
// Public routines
|
|
//
|
|
|
|
BOOLEAN
|
|
Spx86InitBootVars(
|
|
OUT PWSTR **BootVars,
|
|
OUT PWSTR *Default,
|
|
OUT PULONG Timeout
|
|
);
|
|
|
|
BOOLEAN
|
|
Spx86FlushBootVars(
|
|
IN PWSTR **BootVars,
|
|
IN ULONG Timeout,
|
|
IN PWSTR Default
|
|
);
|
|
|
|
VOID
|
|
SpLayBootCode(
|
|
IN PDISK_REGION CColonRegion
|
|
);
|
|
|
|
#if defined(REMOTE_BOOT)
|
|
BOOLEAN
|
|
Spx86FlushRemoteBootVars(
|
|
IN PDISK_REGION TargetRegion,
|
|
IN PWSTR **BootVars,
|
|
IN PWSTR Default
|
|
);
|
|
#endif // defined(REMOTE_BOOT)
|
|
|
|
//
|
|
// Private routines
|
|
//
|
|
|
|
VOID
|
|
SppProcessBootIni(
|
|
IN PCHAR BootIni,
|
|
OUT PWSTR **BootVars,
|
|
OUT PWSTR *Default,
|
|
OUT PULONG Timeout
|
|
);
|
|
|
|
PCHAR
|
|
SppNextLineInSection(
|
|
IN PCHAR p
|
|
);
|
|
|
|
PCHAR
|
|
SppFindSectionInBootIni(
|
|
IN PCHAR p,
|
|
IN PCHAR Section
|
|
);
|
|
|
|
BOOLEAN
|
|
SppProcessLine(
|
|
IN PCHAR Line,
|
|
IN OUT PCHAR Key,
|
|
IN OUT PCHAR Value,
|
|
IN OUT PCHAR RestOfLine
|
|
);
|
|
|
|
BOOLEAN
|
|
SppNextToken(
|
|
PCHAR p,
|
|
PCHAR *pBegin,
|
|
PCHAR *pEnd
|
|
);
|
|
|
|
//
|
|
// NEC98
|
|
//
|
|
PUCHAR
|
|
SpCreateBootiniImage(
|
|
OUT PULONG FileSize
|
|
);
|
|
|
|
//
|
|
// NEC98
|
|
//
|
|
BOOLEAN
|
|
SppReInitializeBootVars_Nec98(
|
|
OUT PWSTR **BootVars,
|
|
OUT PWSTR *Default,
|
|
OUT PULONG Timeout
|
|
);
|