781 lines
14 KiB
C
781 lines
14 KiB
C
/*++
|
||
|
||
Copyright (c) 1992 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
setupldr.h
|
||
|
||
Abstract:
|
||
|
||
Common header file for the setupldr module
|
||
|
||
Author:
|
||
|
||
John Vert (jvert) 6-Oct-1993
|
||
|
||
Environment:
|
||
|
||
ARC environment
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
#include "bldr.h"
|
||
#include "haldtect.h"
|
||
#include "setupblk.h"
|
||
#include "msgs.h"
|
||
#include "stdio.h"
|
||
#include "stdarg.h"
|
||
|
||
|
||
//
|
||
// OEM source device types
|
||
//
|
||
#define SL_OEM_SOURCE_DEVICE_TYPE_LOCAL 0x00008000
|
||
#define SL_OEM_SOURCE_DEVICE_TYPE_REMOVABLE 0x00000001
|
||
#define SL_OEM_SOURCE_DEVICE_TYPE_FIXED 0x00000002
|
||
#define SL_OEM_SOURCE_DEVICE_TYPE_PREINSTALL 0x10000000
|
||
#define SL_OEM_SOURCE_DEVICE_TYPE_DYN_UPDATE 0x20000000
|
||
#define SL_OEM_SOURCE_DEVICE_TYPE_VIRTUAL 0x40000000
|
||
#define SL_OEM_SOURCE_DEVICE_TYPE_REMOTE 0x80000000
|
||
|
||
//
|
||
// OEM source device media states
|
||
//
|
||
#define SL_OEM_SOURCE_MEDIA_ABSENT 0x00000001
|
||
#define SL_OEM_SOURCE_MEDIA_NO_DRIVERS 0x00000002
|
||
#define SL_OEM_SOURCE_MEDIA_HAS_MSD 0x00000004
|
||
#define SL_OEM_SOURCE_MEDIA_HAS_HAL 0x00000008
|
||
#define SL_OEM_SOURCE_MEDIA_HAS_DEFAULT 0x20000000
|
||
#define SL_OEM_SOURCE_MEDIA_HAS_DRIVERS 0x40000000
|
||
#define SL_OEM_SOURCE_MEDIA_PRESENT 0x80000000
|
||
|
||
//
|
||
// OEM source device processing states
|
||
//
|
||
#define SL_OEM_SOURCE_DEVICE_NOT_PROCESSED 0x00000000
|
||
#define SL_OEM_SOURCE_DEVICE_PROCESSED 0x00000001
|
||
#define SL_OEM_SOURCE_DEVICE_SKIPPED 0x00000002
|
||
#define SL_OEM_SOURCE_DEVICE_SCANNED 0x00000004
|
||
#define SL_OEM_SOURCE_DEVICE_HAL_LOADED 0x00000008
|
||
#define SL_OEM_SOURCE_DEVICE_MSD_LOADED 0x00000010
|
||
#define SL_OEM_SOURCE_DEVICE_DRIVERS_LOADED 0x40000000
|
||
#define SL_OEM_SOURCE_DEVICE_PROCESSING 0x80000000
|
||
|
||
typedef struct _OEM_SOURCE_DEVICE {
|
||
CHAR ArcDeviceName[128];
|
||
ULONG DeviceType;
|
||
ULONG MediaType;
|
||
ULONG DeviceState;
|
||
ULONG DeviceId;
|
||
PVOID InfHandle;
|
||
PCSTR DriverDir;
|
||
struct _OEM_SOURCE_DEVICE *Next;
|
||
} OEM_SOURCE_DEVICE, *POEM_SOURCE_DEVICE;
|
||
|
||
|
||
#define SL_OEM_SOURCE_DEVICE_TYPE(DevicePtr, Type) \
|
||
((DevicePtr)->DeviceType & (Type))
|
||
|
||
#define SL_OEM_SET_SOURCE_DEVICE_TYPE(DevicePtr, Type) \
|
||
((DevicePtr)->DeviceType = (Type))
|
||
|
||
#define SL_OEM_SOURCE_MEDIA_TYPE(DevicePtr, Type) \
|
||
((DevicePtr)->MediaType & (Type))
|
||
|
||
#define SL_OEM_SET_SOURCE_MEDIA_TYPE(DevicePtr, Type) \
|
||
((DevicePtr)->MediaType = (Type))
|
||
|
||
#define SL_OEM_SOURCE_DEVICE_STATE(DevicePtr, Type) \
|
||
((DevicePtr)->DeviceState & (Type))
|
||
|
||
#define SL_OEM_SET_SOURCE_DEVICE_STATE(DevicePtr, Type) \
|
||
((DevicePtr)->DeviceState = (Type))
|
||
|
||
ARC_STATUS
|
||
SlInitOemSourceDevices(
|
||
IN OUT POEM_SOURCE_DEVICE *OemSourceDevices,
|
||
IN OUT POEM_SOURCE_DEVICE *DefaultSourceDevice
|
||
);
|
||
|
||
//
|
||
//
|
||
// Functions for managing the display
|
||
//
|
||
//
|
||
|
||
VOID
|
||
SlSetCurrentAttribute(
|
||
IN UCHAR Attribute
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlWriteString(
|
||
IN _PTUCHAR s
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlPositionCursor(
|
||
IN unsigned x,
|
||
IN unsigned y
|
||
);
|
||
|
||
VOID
|
||
SlGetCursorPosition(
|
||
OUT unsigned *x,
|
||
OUT unsigned *y
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlClearClientArea(
|
||
VOID
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlClearToEol(
|
||
VOID
|
||
);
|
||
|
||
VOID
|
||
SlInitDisplay(
|
||
VOID
|
||
);
|
||
|
||
VOID
|
||
SlWriteHeaderText(
|
||
IN ULONG MsgId
|
||
);
|
||
|
||
VOID
|
||
SlSetStatusAttribute(
|
||
IN UCHAR Attribute
|
||
);
|
||
|
||
BOOLEAN
|
||
SlGetStatusBarStatus(
|
||
VOID
|
||
);
|
||
|
||
VOID
|
||
SlEnableStatusBar(
|
||
IN BOOLEAN Enable
|
||
);
|
||
|
||
VOID
|
||
SlWriteStatusText(
|
||
IN PTCHAR Text
|
||
);
|
||
|
||
VOID
|
||
SlGetStatusText(
|
||
OUT PTCHAR Text
|
||
);
|
||
|
||
VOID
|
||
SlClearDisplay(
|
||
VOID
|
||
);
|
||
|
||
VOID
|
||
SlPrint(
|
||
IN PTCHAR FormatString,
|
||
...
|
||
);
|
||
|
||
VOID
|
||
SlConfirmExit(
|
||
VOID
|
||
);
|
||
|
||
|
||
BOOLEAN
|
||
SlPromptForDisk(
|
||
IN PTCHAR DiskName,
|
||
IN BOOLEAN IsCancellable
|
||
);
|
||
|
||
BOOLEAN
|
||
SlGetDisk(
|
||
IN PCHAR Filename
|
||
);
|
||
|
||
//
|
||
// Menuing support
|
||
//
|
||
typedef struct _SL_MENU {
|
||
ULONG ItemCount;
|
||
ULONG Width;
|
||
LIST_ENTRY ItemListHead;
|
||
} SL_MENU, *PSL_MENU;
|
||
|
||
typedef struct _SL_MENUITEM {
|
||
LIST_ENTRY ListEntry;
|
||
PTCHAR Text;
|
||
PVOID Data;
|
||
ULONG Attributes;
|
||
} SL_MENUITEM, *PSL_MENUITEM;
|
||
|
||
PSL_MENU
|
||
SlCreateMenu(
|
||
VOID
|
||
);
|
||
|
||
ULONG
|
||
SlAddMenuItem(
|
||
PSL_MENU Menu,
|
||
PTCHAR Text,
|
||
PVOID Data,
|
||
ULONG Attributes
|
||
);
|
||
|
||
PVOID
|
||
SlGetMenuItem(
|
||
IN PSL_MENU Menu,
|
||
IN ULONG Item
|
||
);
|
||
|
||
ULONG
|
||
SlDisplayMenu(
|
||
IN ULONG HeaderId,
|
||
IN PSL_MENU Menu,
|
||
IN OUT PULONG Selection
|
||
);
|
||
|
||
BOOLEAN
|
||
SlGetMenuItemIndex(
|
||
IN PSL_MENU Menu,
|
||
IN PTCHAR Text,
|
||
OUT PULONG Index
|
||
);
|
||
|
||
//
|
||
// Bullet character and macro to make a beep at the console
|
||
//
|
||
#ifndef EFI
|
||
#define BULLET "*"
|
||
#define BEEP { ULONG c; ArcWrite(ARC_CONSOLE_OUTPUT,"",1,&c); }
|
||
|
||
#if 0
|
||
#define BULLET ""
|
||
#define BEEP HWCURSOR(0x80000000,0xe07); // int 10 func e, char 7
|
||
#endif
|
||
#endif
|
||
|
||
//
|
||
// Character attributes used for various purposes.
|
||
//
|
||
|
||
UCHAR
|
||
SlGetDefaultAttr(
|
||
VOID
|
||
);
|
||
|
||
UCHAR
|
||
SlGetDefaultInvAttr(
|
||
VOID
|
||
);
|
||
|
||
|
||
#define ATT_FG_BLACK 0
|
||
#define ATT_FG_RED 1
|
||
#define ATT_FG_GREEN 2
|
||
#define ATT_FG_YELLOW 3
|
||
#define ATT_FG_BLUE 4
|
||
#define ATT_FG_MAGENTA 5
|
||
#define ATT_FG_CYAN 6
|
||
#define ATT_FG_WHITE 7
|
||
|
||
#define ATT_BG_BLACK (ATT_FG_BLACK << 4)
|
||
#define ATT_BG_BLUE (ATT_FG_BLUE << 4)
|
||
#define ATT_BG_GREEN (ATT_FG_GREEN << 4)
|
||
#define ATT_BG_CYAN (ATT_FG_CYAN << 4)
|
||
#define ATT_BG_RED (ATT_FG_RED << 4)
|
||
#define ATT_BG_MAGENTA (ATT_FG_MAGENTA << 4)
|
||
#define ATT_BG_YELLOW (ATT_FG_YELLOW << 4)
|
||
#define ATT_BG_WHITE (ATT_FG_WHITE << 4)
|
||
|
||
#define ATT_FG_INTENSE 8
|
||
#define ATT_BG_INTENSE (ATT_FG_INTENSE << 4)
|
||
|
||
#define DEFATT SlGetDefaultAttr()
|
||
#define INVATT SlGetDefaultInvAttr()
|
||
|
||
#define DEFIATT (ATT_FG_WHITE | ATT_BG_BLUE | ATT_FG_INTENSE)
|
||
// intense red on blue doesn't show up on all monitors.
|
||
//#define DEFERRATT (ATT_FG_RED | ATT_BG_BLUE | ATT_FG_INTENSE)
|
||
#define DEFERRATT DEFATT
|
||
#define DEFSTATTR (ATT_FG_BLACK | ATT_BG_WHITE)
|
||
#define DEFDLGATT (ATT_FG_RED | ATT_BG_WHITE)
|
||
|
||
|
||
//
|
||
// Function to flush keyboard buffer
|
||
//
|
||
|
||
VOID
|
||
SlFlushConsoleBuffer(
|
||
VOID
|
||
);
|
||
|
||
|
||
//
|
||
// Function to retrieve a keystroke
|
||
//
|
||
|
||
ULONG
|
||
SlGetChar(
|
||
VOID
|
||
);
|
||
|
||
|
||
//
|
||
// Virtualized contants for various keystrokes
|
||
//
|
||
#define ASCI_BS 8
|
||
#define ASCI_CR 13
|
||
#define ASCI_LF 10
|
||
#define ASCI_ESC 27
|
||
#define SL_KEY_UP 0x00010000
|
||
#define SL_KEY_DOWN 0x00020000
|
||
#define SL_KEY_HOME 0x00030000
|
||
#define SL_KEY_END 0x00040000
|
||
#define SL_KEY_PAGEUP 0x00050000
|
||
#define SL_KEY_PAGEDOWN 0x00060000
|
||
#define SL_KEY_F1 0x01000000
|
||
#define SL_KEY_F2 0x02000000
|
||
#define SL_KEY_F3 0x03000000
|
||
#define SL_KEY_F5 0x05000000
|
||
#define SL_KEY_F6 0x06000000
|
||
#define SL_KEY_F7 0x07000000
|
||
#define SL_KEY_F8 0x08000000
|
||
#define SL_KEY_F9 0x09000000
|
||
#define SL_KEY_F10 0x0A000000
|
||
#define SL_KEY_F11 0x0B000000
|
||
#define SL_KEY_F12 0x0C000000
|
||
|
||
|
||
//
|
||
// Standard error handling functions
|
||
//
|
||
|
||
extern TCHAR MessageBuffer[1024];
|
||
|
||
VOID
|
||
SlFriendlyError(
|
||
IN ULONG uStatus,
|
||
IN PCHAR pchBadFile,
|
||
IN ULONG uLine,
|
||
IN PCHAR pchCodeFile
|
||
);
|
||
|
||
ULONG
|
||
SlDisplayMessageBox(
|
||
IN ULONG MessageId,
|
||
...
|
||
);
|
||
|
||
VOID
|
||
SlGenericMessageBox(
|
||
IN ULONG MessageId, OPTIONAL
|
||
IN va_list *args, OPTIONAL
|
||
IN PTCHAR Message, OPTIONAL
|
||
IN OUT PULONG xLeft, OPTIONAL
|
||
IN OUT PULONG yTop, OPTIONAL
|
||
OUT PULONG yBottom, OPTIONAL
|
||
IN BOOLEAN bCenterMsg
|
||
);
|
||
|
||
VOID
|
||
SlMessageBox(
|
||
IN ULONG MessageId,
|
||
...
|
||
);
|
||
|
||
VOID
|
||
SlFatalError(
|
||
IN ULONG MessageId,
|
||
...
|
||
);
|
||
|
||
//
|
||
// Routines for parsing the setupldr.ini file
|
||
//
|
||
|
||
#define SIF_FILENAME_INDEX 0
|
||
|
||
extern PVOID InfFile;
|
||
extern PVOID WinntSifHandle;
|
||
|
||
ARC_STATUS
|
||
SlInitIniFile(
|
||
IN PCHAR DevicePath,
|
||
IN ULONG DeviceId,
|
||
IN PCHAR INFFile,
|
||
OUT PVOID *pINFHandle,
|
||
OUT PVOID *pINFBuffer OPTIONAL,
|
||
OUT PULONG INFBufferSize OPTIONAL,
|
||
OUT PULONG ErrorLine
|
||
);
|
||
|
||
PCHAR
|
||
SlGetIniValue(
|
||
IN PVOID InfHandle,
|
||
IN PCHAR SectionName,
|
||
IN PCHAR KeyName,
|
||
IN PCHAR Default
|
||
);
|
||
|
||
PCHAR
|
||
SlGetKeyName(
|
||
IN PVOID INFHandle,
|
||
IN PCHAR SectionName,
|
||
IN ULONG LineIndex
|
||
);
|
||
|
||
ULONG
|
||
SlGetSectionKeyOrdinal(
|
||
IN PVOID INFHandle,
|
||
IN PCHAR SectionName,
|
||
IN PCHAR Key
|
||
);
|
||
|
||
PCHAR
|
||
SlGetSectionKeyIndex (
|
||
IN PVOID INFHandle,
|
||
IN PCHAR SectionName,
|
||
IN PCHAR Key,
|
||
IN ULONG ValueIndex
|
||
);
|
||
|
||
PCHAR
|
||
SlCopyStringA(
|
||
IN PCSTR String
|
||
);
|
||
|
||
PTCHAR
|
||
SlCopyString(
|
||
IN PTCHAR String
|
||
);
|
||
|
||
|
||
PCHAR
|
||
SlGetSectionLineIndex (
|
||
IN PVOID INFHandle,
|
||
IN PCHAR SectionName,
|
||
IN ULONG LineIndex,
|
||
IN ULONG ValueIndex
|
||
);
|
||
|
||
ULONG
|
||
SlCountLinesInSection(
|
||
IN PVOID INFHandle,
|
||
IN PCHAR SectionName
|
||
);
|
||
|
||
BOOLEAN
|
||
SpSearchINFSection (
|
||
IN PVOID INFHandle,
|
||
IN PCHAR SectionName
|
||
);
|
||
|
||
PCHAR
|
||
SlSearchSection(
|
||
IN PCHAR SectionName,
|
||
IN PCHAR TargetName
|
||
);
|
||
|
||
//
|
||
// functions for querying the ARC configuration tree
|
||
//
|
||
typedef
|
||
BOOLEAN
|
||
(*PNODE_CALLBACK)(
|
||
IN PCONFIGURATION_COMPONENT_DATA FoundComponent
|
||
);
|
||
|
||
BOOLEAN
|
||
SlSearchConfigTree(
|
||
IN PCONFIGURATION_COMPONENT_DATA Node,
|
||
IN CONFIGURATION_CLASS Class,
|
||
IN CONFIGURATION_TYPE Type,
|
||
IN ULONG Key,
|
||
IN PNODE_CALLBACK CallbackRoutine
|
||
);
|
||
|
||
BOOLEAN
|
||
SlFindFloppy(
|
||
IN ULONG FloppyNumber,
|
||
OUT PCHAR ArcName
|
||
);
|
||
|
||
//
|
||
// Routines for detecting various hardware
|
||
//
|
||
VOID
|
||
SlDetectScsi(
|
||
IN PSETUP_LOADER_BLOCK SetupBlock
|
||
);
|
||
|
||
VOID
|
||
SlDetectVideo(
|
||
IN PSETUP_LOADER_BLOCK SetupBlock
|
||
);
|
||
|
||
//
|
||
// Routines for dealing with OEM disks.
|
||
//
|
||
extern BOOLEAN PromptOemHal;
|
||
extern BOOLEAN PromptOemScsi;
|
||
extern BOOLEAN PromptOemVideo;
|
||
|
||
|
||
//
|
||
// Variable indicating whether we are booting into
|
||
// WinPE (aka MiniNT) or not
|
||
//
|
||
extern BOOLEAN WinPEBoot;
|
||
|
||
typedef struct _OEMSCSIINFO {
|
||
|
||
struct _OEMSCSIINFO *Next;
|
||
|
||
//
|
||
// Address where the SCSI driver was loaded
|
||
//
|
||
PVOID ScsiBase;
|
||
|
||
//
|
||
// Name of the SCSI driver
|
||
//
|
||
PCHAR ScsiName;
|
||
|
||
} OEMSCSIINFO, *POEMSCSIINFO;
|
||
|
||
VOID
|
||
SlPromptOemVideo(
|
||
IN POEM_SOURCE_DEVICE VideoSourceDevice,
|
||
IN BOOLEAN AllowUserSelection,
|
||
OUT PVOID *VideoBase,
|
||
OUT PCHAR *VideoName
|
||
);
|
||
|
||
VOID
|
||
SlPromptOemHal(
|
||
IN POEM_SOURCE_DEVICE HalSourceDevice,
|
||
IN BOOLEAN AllowUserSelection,
|
||
OUT PVOID *HalBase,
|
||
OUT PCHAR *ImageName
|
||
);
|
||
|
||
|
||
VOID
|
||
SlPromptOemScsi(
|
||
IN POEM_SOURCE_DEVICE ScsiSourceDevice,
|
||
IN BOOLEAN AllowUserSelection,
|
||
OUT POEMSCSIINFO *pOemScsiInfo
|
||
);
|
||
|
||
BOOLEAN
|
||
SlLoadOemScsiDriversUnattended(
|
||
IN POEM_SOURCE_DEVICE OemSourceDevice,
|
||
IN PVOID InfHandle,
|
||
IN PCHAR ParamsSectionName,
|
||
IN PCHAR RootDirKeyName,
|
||
IN PCHAR BootDriversKeyName,
|
||
IN POEMSCSIINFO* ScsiInfo,
|
||
OUT PPNP_HARDWARE_ID* HardwareIdDatabase
|
||
);
|
||
|
||
|
||
#if defined(_X86_) || defined(_IA64_)
|
||
VOID
|
||
BlInitializeTerminal(
|
||
VOID
|
||
);
|
||
#endif
|
||
|
||
|
||
//
|
||
// Routine to find the ARC name of a floppy
|
||
//
|
||
BOOLEAN
|
||
SlpFindFloppy(
|
||
IN ULONG Number,
|
||
OUT PCHAR ArcName
|
||
);
|
||
|
||
//
|
||
// Are all the floppies only removable ATAPI super floppies
|
||
//
|
||
BOOLEAN
|
||
SlpIsOnlySuperFloppy(
|
||
void
|
||
);
|
||
|
||
//
|
||
// Enums for controlling setupldr process
|
||
//
|
||
typedef enum _SETUP_TYPE {
|
||
SetupInteractive,
|
||
SetupRepair,
|
||
SetupCustom,
|
||
SetupUpgrade,
|
||
SetupExpress
|
||
} SETUP_TYPE;
|
||
|
||
typedef enum _MEDIA_TYPE {
|
||
MediaInteractive,
|
||
MediaFloppy,
|
||
MediaCdRom,
|
||
MediaDisk
|
||
} MEDIA_TYPE;
|
||
|
||
//
|
||
// Enum for status of inserting a new SCSI device
|
||
//
|
||
typedef enum _SCSI_INSERT_STATUS {
|
||
ScsiInsertError,
|
||
ScsiInsertNewEntry,
|
||
ScsiInsertExisting
|
||
} SCSI_INSERT_STATUS;
|
||
|
||
//
|
||
// Routine to insert a DETECTED_DEVICE into its
|
||
// correct position in the ScsiDevices linked list.
|
||
//
|
||
SCSI_INSERT_STATUS
|
||
SlInsertScsiDevice(
|
||
IN ULONG Ordinal,
|
||
OUT PDETECTED_DEVICE *pScsiDevice
|
||
);
|
||
|
||
BOOLEAN
|
||
SlRemoveInboxDriver(
|
||
IN PCHAR DriverToRemove
|
||
);
|
||
|
||
PDETECTED_DEVICE
|
||
SlCheckForInboxDriver(
|
||
IN PCHAR DriverToCheck
|
||
);
|
||
|
||
BOOLEAN
|
||
SlConfirmInboxDriverReplacement(
|
||
IN PTCHAR DriverName,
|
||
IN PTCHAR AdditionalInfo
|
||
);
|
||
|
||
typedef enum _VERSION_COMP_RESULT {
|
||
VersionError,
|
||
VersionOemNew,
|
||
VersionInboxNew,
|
||
VersionSame
|
||
} VERSION_COMP_RESULT;
|
||
|
||
|
||
VERSION_COMP_RESULT
|
||
SlCompareDriverVersion(
|
||
IN ULONG InboxDeviceId,
|
||
IN PDETECTED_DEVICE InboxDriver,
|
||
IN ULONG OemDeviceId,
|
||
IN PDETECTED_DEVICE OemDriver
|
||
);
|
||
|
||
//
|
||
// Variables dealing with pre-installation.
|
||
//
|
||
|
||
typedef struct _PREINSTALL_DRIVER_INFO {
|
||
|
||
struct _PREINSTALL_DRIVER_INFO *Next;
|
||
|
||
//
|
||
// String that describes the driver to preinstall
|
||
//
|
||
PTCHAR DriverDescription;
|
||
|
||
//
|
||
// Name of the SCSI driver
|
||
//
|
||
BOOLEAN OemDriver;
|
||
|
||
} PREINSTALL_DRIVER_INFO, *PPREINSTALL_DRIVER_INFO;
|
||
|
||
|
||
|
||
extern BOOLEAN PreInstall;
|
||
extern PTCHAR ComputerType;
|
||
extern BOOLEAN OemHal;
|
||
// extern PCHAR OemBootPath;
|
||
extern PPREINSTALL_DRIVER_INFO PreinstallDriverList;
|
||
|
||
PCHAR
|
||
SlPreInstallGetComponentName(
|
||
IN PVOID Inf,
|
||
IN PCHAR SectionName,
|
||
IN PTCHAR TargetName
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlLoadSection(
|
||
IN PVOID Inf,
|
||
IN PCSTR SectionName,
|
||
IN BOOLEAN IsScsiSection,
|
||
IN BOOLEAN AppendLoadSuffix,
|
||
IN OUT PULONG StartingIndexInsert
|
||
);
|
||
|
||
#define WINPE_AUTOBOOT_FILENAME "$WINPE$.$$$"
|
||
|
||
BOOLEAN
|
||
SlIsWinPEAutoBoot(
|
||
IN PSTR LoaderDeviceName
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlGetWinPEStartupParams(
|
||
IN PSTR DeviceName,
|
||
IN PSTR StartupDirectory
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlLoadWinPESection(
|
||
IN POEM_SOURCE_DEVICE OemSourceDevice,
|
||
IN PVOID OemInfHandle,
|
||
IN PCSTR OemSectionName,
|
||
IN PVOID InboxInfHandle,
|
||
IN PCSTR InboxSectionName,
|
||
IN BOOLEAN IsScsiSection,
|
||
IN POEMSCSIINFO* ScsiInfo, OPTIONAL
|
||
OUT PPNP_HARDWARE_ID* HardwareIdDatabase OPTIONAL
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlLoadOemScsiDriversFromOemSources(
|
||
IN POEM_SOURCE_DEVICE OemSourceDevices,
|
||
IN OUT PPNP_HARDWARE_ID *HardwareIds,
|
||
OUT POEMSCSIINFO *OemScsiInfo
|
||
);
|
||
|
||
ARC_STATUS
|
||
SlInitVirtualOemSourceDevices(
|
||
IN PSETUP_LOADER_BLOCK SetupLoaderBlock,
|
||
IN POEM_SOURCE_DEVICE OemSourceDevices
|
||
);
|
||
|
||
|
||
#if defined(ARCI386)
|
||
BOOLEAN
|
||
SlDetectSifPromVersion(
|
||
IN PSETUP_LOADER_BLOCK SetupBlock
|
||
);
|
||
#endif
|
||
|
||
#define VGA_DRIVER_FILENAME "vga.sys"
|
||
#define VIDEO_DEVICE_NAME "VGA"
|
||
|
||
extern ULONG BootFontImageLength;
|
||
|
||
|