mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
911 lines
19 KiB
911 lines
19 KiB
/*++
|
|
|
|
Copyright (c) 1993 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
spmisc.h
|
|
|
|
Abstract:
|
|
|
|
Miscellaneous stuff for text setup.
|
|
|
|
Author:
|
|
|
|
Ted Miller (tedm) 29-July-1993
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _SPSETUP_DEFN_
|
|
#define _SPSETUP_DEFN_
|
|
|
|
ULONG
|
|
SpStartSetup(
|
|
VOID
|
|
);
|
|
|
|
extern UCHAR TemporaryBuffer[32768];
|
|
|
|
#ifdef _X86_
|
|
//
|
|
// BUGBUG Remove this flag in the future
|
|
//
|
|
extern BOOLEAN DisableWin95Migration;
|
|
#endif
|
|
|
|
//
|
|
// TRUE if setup should find only Cairo systems on upgrade mode.
|
|
// BUGBUG: THIS IS A TEMPORARY VARIABLE THAT SHOULD BE REMOVED WHEN
|
|
// NT AND CAIRO ARE MERGED. THIS VARIABLE WILL TELL SETUP NOT
|
|
// TO FIND NT 3.x INSTALLATIONS TO UPGRADE, WHEN IT INSTALLS CAIRO
|
|
//
|
|
extern BOOLEAN CairoSetup;
|
|
|
|
//
|
|
// TRUE if setup should run in the step-up upgrade mode.
|
|
// In this mode, setup is not allowed to do clean install,
|
|
// and is not allowed to upgrade workstation to server.
|
|
//
|
|
// We also track an evaluation time for the evaluation SKU.
|
|
//
|
|
extern BOOLEAN StepUpMode;
|
|
extern ULONG EvaluationTime;
|
|
extern ULONG RestrictCpu;
|
|
|
|
//
|
|
// Non-0 if gui setup is supposed to be restartable.
|
|
// This causes us to do special stuff with hives in spconfig.c.
|
|
//
|
|
extern BOOLEAN RestartableGuiSetup;
|
|
|
|
//
|
|
// TRUE if user chose Repair Winnt
|
|
//
|
|
|
|
extern BOOLEAN RepairWinnt;
|
|
|
|
//
|
|
// TRUE if user chose Custom Setup.
|
|
//
|
|
extern BOOLEAN CustomSetup;
|
|
|
|
#ifdef _X86_
|
|
//
|
|
// TRUE if floppyless boot
|
|
//
|
|
extern BOOLEAN IsFloppylessBoot;
|
|
#endif
|
|
|
|
#ifdef _PPC_
|
|
//
|
|
// On PPC, we need to identify IBM Power Series 6050 and 6070, so that we can
|
|
// reconfigure atapi and atdisk.
|
|
//
|
|
extern BOOLEAN InstallingOnCarolinaMachine;
|
|
|
|
#endif //def _PPC_
|
|
|
|
|
|
//
|
|
// ARC pathname of the device from which we were started.
|
|
//
|
|
extern PWSTR ArcBootDevicePath;
|
|
|
|
//
|
|
// Gets set to TRUE if the user elects to convert or format to ntfs.
|
|
// And a flag indicating whether we are doing a dirty sleazy hack
|
|
// for oem preinstall.
|
|
//
|
|
extern BOOLEAN ConvertNtVolumeToNtfs;
|
|
extern BOOLEAN ExtendingOemPartition;
|
|
|
|
//
|
|
// TRUE if upgrading NT to NT
|
|
//
|
|
typedef enum _ENUMUPRADETYPE {
|
|
DontUpgrade = 0,
|
|
UpgradeFull,
|
|
UpgradeInstallFresh
|
|
} ENUMUPGRADETYPE;
|
|
extern ENUMUPGRADETYPE NTUpgrade;
|
|
extern ULONG OldMinorVersion,OldMajorVersion;
|
|
|
|
//
|
|
// TRUE if upgrading Workstation to Standard Server, or upgrading
|
|
// existing Standard Server
|
|
//
|
|
extern BOOLEAN StandardServerUpgrade;
|
|
|
|
typedef enum _ENUMNONNTUPRADETYPE {
|
|
NoWinUpgrade = 0,
|
|
UpgradeWin31,
|
|
UpgradeWin95
|
|
} ENUMNONNTUPRADETYPE;
|
|
//
|
|
// TRUE if upgrading win31 or win95 to NT.
|
|
//
|
|
extern ENUMNONNTUPRADETYPE WinUpgradeType;
|
|
|
|
//
|
|
// TRUE if this setup was started with winnt.exe.
|
|
//
|
|
extern BOOLEAN WinntSetup;
|
|
|
|
//
|
|
// If this is an unattended setup, this value will be a TRUE
|
|
//
|
|
extern BOOLEAN UnattendedOperation;
|
|
//
|
|
// If there is an Unattended GUI section, this value will be TRUE
|
|
//
|
|
extern BOOLEAN UnattendedGuiOperation;
|
|
//
|
|
// This value is strictly a pointer to the WINNT.SIF file in the
|
|
// case that Unattended operation occurs in either the textmode
|
|
// or GUI Mode case. It has been kept to avoid changing large
|
|
// sections of code.
|
|
//
|
|
extern PVOID UnattendedSifHandle;
|
|
//
|
|
// This value is a non-null pointer to the WINNT.SIF file. It is
|
|
// initialized when the driver is started. Any parameter which is
|
|
// to be passed to GUI mode is added to the WINNT.SIF file by
|
|
// referencing this parameter.
|
|
//
|
|
extern PVOID WinntSifHandle;
|
|
extern BOOLEAN SkipMissingFiles;
|
|
|
|
//
|
|
// This is a handle to txtsetup.oem, used on pre-install mode.
|
|
//
|
|
extern PVOID PreinstallOemSifHandle;
|
|
|
|
|
|
//
|
|
// On unattended mode, indicates whether OEM files
|
|
// that have same name as Microsoft files released
|
|
// with the product should be overwritten.
|
|
//
|
|
extern BOOLEAN UnattendedOverwriteOem;
|
|
|
|
#ifdef _FASTRECOVER_
|
|
//
|
|
// TRUE if operating in Fast Recover mode. This mode
|
|
// is set by adding the "FastRecover = yes" line in the
|
|
// [SetupData] section.
|
|
//
|
|
extern BOOLEAN FastRecoverOperation;
|
|
|
|
//
|
|
// On unattended mode, indicates whether the
|
|
// automatic partition check (autochk) should be skipped.
|
|
// By skipping the autochk, significant time can be saved
|
|
// during the unattended fast recovery process.
|
|
//
|
|
extern BOOLEAN UnattendedSkipAutoCheck;
|
|
|
|
//
|
|
// On unattended mode, indicates whether the
|
|
// partitioning should be interactive. This is done to
|
|
// allow all of text mode setup to run unattended,
|
|
// expect for partitioning.
|
|
//
|
|
extern BOOLEAN UnattendedPartitionInteract;
|
|
|
|
//
|
|
// On unattended mode, indicates whether the user should
|
|
// be prompted with the REBOOT screen (normally displayed
|
|
// during attended operation), so that the user can be
|
|
// reminded to remove any floppy media left in the drive
|
|
// during unattended operation.
|
|
//
|
|
extern BOOLEAN UnattendedPromptForReboot;
|
|
#endif
|
|
|
|
//
|
|
// On unattended mode, indicates that this is is
|
|
// an OEM pre-installation
|
|
//
|
|
extern BOOLEAN PreInstall;
|
|
|
|
|
|
//
|
|
// On pre-install mode, points to the directory that contains the files
|
|
// that need to be copied during textmode setup
|
|
//
|
|
extern PWSTR PreinstallOemSourcePath;
|
|
|
|
//
|
|
// Variable used during the repair process, that indicates that the
|
|
// system has no CD-ROM drive.
|
|
// This is a hack that we did for World Bank so that they can repair
|
|
// the hives even if they don't have a CD-ROM drive.
|
|
//
|
|
extern BOOLEAN RepairNoCDROMDrive;
|
|
|
|
//
|
|
// Filename of local source directory.
|
|
//
|
|
extern PWSTR LocalSourceDirectory;
|
|
|
|
//
|
|
// Platform-specific extension, used when creating names of sections
|
|
// in sif/inf files.
|
|
//
|
|
extern PWSTR PlatformExtension;
|
|
|
|
//
|
|
// TRUE if this is advanced server we're setting up.
|
|
//
|
|
extern BOOLEAN AdvancedServer;
|
|
|
|
//
|
|
// Windows NT Version.
|
|
//
|
|
extern ULONG WinntMajorVer;
|
|
extern ULONG WinntMinorVer;
|
|
|
|
//
|
|
// Representation of the boot device path in the nt namespace.
|
|
//
|
|
extern PWSTR NtBootDevicePath;
|
|
extern PWSTR DirectoryOnBootDevice;
|
|
|
|
//
|
|
// Setup parameters passed to us by setupldr.
|
|
//
|
|
extern SETUP_LOADER_BLOCK_SCALARS SetupParameters;
|
|
|
|
//
|
|
// System information gathered by the user-mode part of text setup
|
|
// and passed to us in IOCTL_SETUP_START
|
|
//
|
|
extern SYSTEM_BASIC_INFORMATION SystemBasicInfo;
|
|
|
|
//
|
|
// Flags indicating whether or not keyboard and video have been initialized
|
|
//
|
|
extern BOOLEAN VideoInitialized, KeyboardInitialized, KbdLayoutInitialized;
|
|
|
|
//
|
|
// ARC disk/signature information structure.
|
|
// A list of these is created during phase0 initialization.
|
|
//
|
|
typedef struct _DISK_SIGNATURE_INFORMATION {
|
|
struct _DISK_SIGNATURE_INFORMATION *Next;
|
|
ULONG Signature;
|
|
PWSTR ArcPath;
|
|
ULONG CheckSum;
|
|
BOOLEAN ValidPartitionTable;
|
|
} DISK_SIGNATURE_INFORMATION, *PDISK_SIGNATURE_INFORMATION;
|
|
|
|
extern PDISK_SIGNATURE_INFORMATION DiskSignatureInformation;
|
|
|
|
//
|
|
// Flag indicating whether or not pcmcia driver has been initialized
|
|
//
|
|
|
|
extern BOOLEAN PcmciaLoaded;
|
|
|
|
//
|
|
// Flag indicating whether or not atapi driver has been initialized
|
|
//
|
|
|
|
extern BOOLEAN AtapiLoaded;
|
|
|
|
//
|
|
// Array with the PIDs of all NT greater than 4.x found in the machine (PID 2.0)
|
|
// The values in this array will be saved under Setup\PID key in the registry,
|
|
// and will be used during GUI setup
|
|
//
|
|
extern PWSTR* Pid20Array;
|
|
|
|
//
|
|
// Product Id read from setup.ini
|
|
//
|
|
extern PWSTR PidString;
|
|
|
|
//
|
|
// Object types.
|
|
//
|
|
extern POBJECT_TYPE *IoFileObjectType;
|
|
extern POBJECT_TYPE *IoDeviceObjectType;
|
|
|
|
//
|
|
// Setup fatal error codes.
|
|
//
|
|
// If you add anything here, you must also update ntos\nls\bugcodes.txt.
|
|
//
|
|
#define SETUP_BUGCHECK_BAD_OEM_FONT 0
|
|
#define SETUP_BUGCHECK_BOOTPATH 4
|
|
#define SETUP_BUGCHECK_PARTITION 5
|
|
//
|
|
// The following error codes are no longer used, because we have friendlier
|
|
// error messages for them.
|
|
//
|
|
// #define SETUP_BUGCHECK_VIDEO 1
|
|
// #define SETUP_BUGCHECK_MEMORY 2
|
|
// #define SETUP_BUGCHECK_KEYBOARD 3
|
|
|
|
|
|
//
|
|
// Video-specific bugcheck subcodes.
|
|
//
|
|
#define VIDEOBUG_OPEN 0
|
|
#define VIDEOBUG_GETNUMMODES 1
|
|
#define VIDEOBUG_GETMODES 2
|
|
#define VIDEOBUG_BADMODE 3
|
|
#define VIDEOBUG_SETMODE 4
|
|
#define VIDEOBUG_MAP 5
|
|
#define VIDEOBUG_SETFONT 6
|
|
|
|
//
|
|
// Partition sanity check bugcheck subcodes.
|
|
//
|
|
#define PARTITIONBUG_A 0
|
|
#define PARTITIONBUG_B 1
|
|
|
|
//
|
|
// Use the following enum to access line draw characters in
|
|
// the LineChars array.
|
|
//
|
|
|
|
typedef enum {
|
|
LineCharDoubleUpperLeft = 0,
|
|
LineCharDoubleUpperRight,
|
|
LineCharDoubleLowerLeft,
|
|
LineCharDoubleLowerRight,
|
|
LineCharDoubleHorizontal,
|
|
LineCharDoubleVertical,
|
|
LineCharSingleUpperLeft,
|
|
LineCharSingleUpperRight,
|
|
LineCharSingleLowerLeft,
|
|
LineCharSingleLowerRight,
|
|
LineCharSingleHorizontal,
|
|
LineCharSingleVertical,
|
|
LineCharMax
|
|
} LineCharIndex;
|
|
|
|
extern WCHAR LineChars[LineCharMax];
|
|
|
|
|
|
//
|
|
// Enumerate the possible returns values from SpEnumFiles()
|
|
//
|
|
typedef enum {
|
|
NormalReturn, // if the whole process completes uninterrupted
|
|
EnumFileError, // if an error occurs while enumerating files
|
|
CallbackReturn // if the callback returns FALSE, causing termination
|
|
} ENUMFILESRESULT;
|
|
|
|
typedef BOOLEAN (*ENUMFILESPROC) (
|
|
IN PWSTR,
|
|
IN PFILE_BOTH_DIR_INFORMATION,
|
|
OUT PULONG,
|
|
IN PVOID
|
|
);
|
|
|
|
ENUMFILESRESULT
|
|
SpEnumFiles(
|
|
IN PWSTR DirName,
|
|
IN ENUMFILESPROC EnumFilesProc,
|
|
OUT PULONG ReturnData,
|
|
IN PVOID Pointer
|
|
);
|
|
|
|
|
|
//
|
|
// This macro filters in-page exceptions, which occur if there is
|
|
// an I/O error while the memory manager is paging in parts of a
|
|
// memory-mapped file. Access to such data should be guarded with SEH!
|
|
//
|
|
#define IN_PAGE_ERROR \
|
|
\
|
|
((GetExceptionCode() == STATUS_IN_PAGE_ERROR) \
|
|
? EXCEPTION_EXECUTE_HANDLER \
|
|
: EXCEPTION_CONTINUE_SEARCH)
|
|
|
|
|
|
//
|
|
// Helper macro to make object attribute initialization a little cleaner.
|
|
//
|
|
#define INIT_OBJA(Obja,UnicodeString,UnicodeText) \
|
|
\
|
|
RtlInitUnicodeString((UnicodeString),(UnicodeText)); \
|
|
\
|
|
InitializeObjectAttributes( \
|
|
(Obja), \
|
|
(UnicodeString), \
|
|
OBJ_CASE_INSENSITIVE, \
|
|
NULL, \
|
|
NULL \
|
|
)
|
|
|
|
//
|
|
// Macro to align a buffer.
|
|
//
|
|
#define ALIGN(p,val) \
|
|
\
|
|
(PVOID)((((ULONG)(p) + (val) - 1)) & (~((val) - 1)))
|
|
|
|
|
|
//
|
|
// Macro to determine the number of elements in a statically
|
|
// initialized array.
|
|
//
|
|
#define ELEMENT_COUNT(x) (sizeof(x)/sizeof(x[0]))
|
|
|
|
//
|
|
// Marcos to pull potentially unaligned values from memory.
|
|
//
|
|
#define U_USHORT(p) (*(USHORT UNALIGNED *)(p))
|
|
#define U_ULONG(p) (*(ULONG UNALIGNED *)(p))
|
|
|
|
|
|
//
|
|
// Setup media types. Setup can be started from one media
|
|
// (ie, floppy) and copy files from another (ie, cd-rom).
|
|
//
|
|
typedef enum {
|
|
SetupBootMedia,
|
|
SetupSourceMedia
|
|
} SetupMediaType;
|
|
|
|
|
|
//
|
|
// Upgrade-specific routines.
|
|
//
|
|
VOID
|
|
SpPrepareFontsForUpgrade(
|
|
IN PWSTR SystemDirectory
|
|
);
|
|
|
|
//
|
|
// User-mode services.
|
|
//
|
|
NTSTATUS
|
|
SpExecuteImage(
|
|
IN PWSTR ImagePath,
|
|
OUT PULONG ReturnStatus, OPTIONAL
|
|
IN ULONG ArgumentCount,
|
|
... // argv[0] is generated automatically
|
|
);
|
|
|
|
NTSTATUS
|
|
SpLoadUnloadKey(
|
|
IN HANDLE TargetKeyRootDirectory, OPTIONAL
|
|
IN HANDLE SourceFileRootDirectory, OPTIONAL
|
|
IN PWSTR TargetKeyName,
|
|
IN PWSTR SourceFileName OPTIONAL
|
|
);
|
|
|
|
NTSTATUS
|
|
SpDeleteKey(
|
|
IN HANDLE KeyRootDirectory, OPTIONAL
|
|
IN PWSTR Key
|
|
);
|
|
|
|
NTSTATUS
|
|
SpQueryDirectoryObject(
|
|
IN HANDLE DirectoryHandle,
|
|
IN BOOLEAN RestartScan,
|
|
IN OUT PULONG Context
|
|
);
|
|
|
|
NTSTATUS
|
|
SpFlushVirtualMemory(
|
|
IN PVOID BaseAddress,
|
|
IN ULONG RangeLength
|
|
);
|
|
|
|
NTSTATUS
|
|
SpShutdownSystem(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
SpLoadKbdLayoutDll(
|
|
IN PWSTR Directory,
|
|
IN PWSTR DllName,
|
|
OUT PVOID *TableAddress
|
|
);
|
|
|
|
NTSTATUS
|
|
SpVerifyFileAccess(
|
|
IN PWSTR FileName,
|
|
IN ACCESS_MASK DesiredAccess
|
|
);
|
|
|
|
NTSTATUS
|
|
SpSetDefaultFileSecurity(
|
|
IN PWSTR FileName
|
|
);
|
|
|
|
NTSTATUS
|
|
SpCreatePageFile(
|
|
IN PWSTR FileName,
|
|
IN ULONG MinSize,
|
|
IN ULONG MaxSize
|
|
);
|
|
|
|
//
|
|
// Registry Hives. We pass around the keys to the hives
|
|
// in an array. Use the following enum values to access
|
|
// the hive members
|
|
//
|
|
typedef enum {
|
|
SetupHiveSystem,
|
|
SetupHiveSoftware,
|
|
SetupHiveDefault,
|
|
SetupHiveMax
|
|
} SetupHive;
|
|
|
|
//
|
|
// Function to set up registry.
|
|
//
|
|
VOID
|
|
SpInitializeRegistry(
|
|
IN PVOID SifHandle,
|
|
IN PDISK_REGION TargetRegion,
|
|
IN PWSTR SystemRoot,
|
|
IN PWSTR SetupSourceDevicePath,
|
|
IN PWSTR DirectoryOnSourceDevice,
|
|
IN PWSTR SpecialDevicePath OPTIONAL
|
|
);
|
|
|
|
//
|
|
// Function to examine a target registry
|
|
//
|
|
|
|
typedef enum {
|
|
UpgradeNotInProgress = 0,
|
|
UpgradeInProgress,
|
|
UpgradeMaxValue
|
|
} UPG_PROGRESS_TYPE;
|
|
|
|
|
|
NTSTATUS
|
|
SpDetermineProduct(
|
|
IN PDISK_REGION TargetRegion,
|
|
IN PWSTR SystemRoot,
|
|
OUT PNT_PRODUCT_TYPE ProductType,
|
|
OUT ULONG *MajorVersion,
|
|
OUT ULONG *MinorVersion,
|
|
OUT UPG_PROGRESS_TYPE *UpgradeProgressValue,
|
|
OUT PWSTR *UniqueIdFromReg, OPTIONAL
|
|
OUT PWSTR *Pid
|
|
);
|
|
|
|
NTSTATUS
|
|
SpSetUpgradeStatus(
|
|
IN PDISK_REGION TargetRegion,
|
|
IN PWSTR SystemRoot,
|
|
IN UPG_PROGRESS_TYPE UpgradeProgressValue
|
|
);
|
|
|
|
|
|
//
|
|
// Utility functions.
|
|
//
|
|
VOID
|
|
SpGetTargetPath(
|
|
IN PVOID SifHandle,
|
|
IN PDISK_REGION Region,
|
|
IN PWSTR DefaultPath,
|
|
OUT PWSTR *TargetPath
|
|
);
|
|
|
|
VOID
|
|
SpDone(
|
|
IN BOOLEAN Successful,
|
|
IN BOOLEAN Wait
|
|
);
|
|
|
|
VOID
|
|
SpFatalSifError(
|
|
IN PVOID SifHandle,
|
|
IN PWSTR Section,
|
|
IN PWSTR Key, OPTIONAL
|
|
IN ULONG Line,
|
|
IN ULONG ValueNumber
|
|
);
|
|
|
|
VOID
|
|
SpNonFatalSifError(
|
|
IN PVOID SifHandle,
|
|
IN PWSTR Section,
|
|
IN PWSTR Key, OPTIONAL
|
|
IN ULONG Line,
|
|
IN ULONG ValueNumber,
|
|
IN PWSTR FileName
|
|
);
|
|
|
|
VOID
|
|
SpFatalKbdError(
|
|
IN ULONG MessageId,
|
|
...
|
|
);
|
|
|
|
PWSTR
|
|
SpMakePlatformSpecificSectionName(
|
|
IN PWSTR SectionName
|
|
);
|
|
|
|
VOID
|
|
SpConfirmExit(
|
|
VOID
|
|
);
|
|
|
|
PWSTR
|
|
SpDupStringW(
|
|
IN PWSTR String
|
|
);
|
|
|
|
PUCHAR
|
|
SpDupString(
|
|
IN PUCHAR String
|
|
);
|
|
|
|
PWSTR
|
|
SpToUnicode(
|
|
IN PUCHAR OemString
|
|
);
|
|
|
|
PUCHAR
|
|
SpToOem(
|
|
IN PWSTR UnicodeString
|
|
);
|
|
|
|
VOID
|
|
SpGetSourceMediaInfo(
|
|
IN PVOID SifHandle,
|
|
IN PWSTR MediaShortName,
|
|
OUT PWSTR *Description, OPTIONAL
|
|
OUT PWSTR *Tagfile, OPTIONAL
|
|
OUT PWSTR *Directory OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
SpConcatenatePaths(
|
|
IN OUT PWSTR Path1,
|
|
IN PWSTR Path2
|
|
);
|
|
|
|
VOID
|
|
SpFetchDiskSpaceRequirements(
|
|
IN PVOID SifHandle,
|
|
OUT PULONG FreeKBRequired, OPTIONAL
|
|
OUT PULONG FreeKBRequiredSysPart OPTIONAL
|
|
);
|
|
|
|
VOID
|
|
SpFetchUpgradeDiskSpaceReq(
|
|
IN PVOID SifHandle,
|
|
OUT PULONG FreeKBRequired, OPTIONAL
|
|
OUT PULONG FreeKBRequiredSysPart OPTIONAL
|
|
);
|
|
|
|
//
|
|
// Disk region name translations
|
|
//
|
|
|
|
typedef enum _ENUMARCPATHTYPE {
|
|
PrimaryArcPath = 0,
|
|
SecondaryArcPath
|
|
} ENUMARCPATHTYPE;
|
|
|
|
VOID
|
|
SpNtNameFromRegion(
|
|
IN PDISK_REGION Region,
|
|
OUT PWSTR NtPath,
|
|
IN ULONG BufferSizeBytes,
|
|
IN PartitionOrdinalType OrdinalType
|
|
);
|
|
|
|
VOID
|
|
SpArcNameFromRegion(
|
|
IN PDISK_REGION Region,
|
|
OUT PWSTR ArcPath,
|
|
IN ULONG BufferSizeBytes,
|
|
IN PartitionOrdinalType OrdinalType,
|
|
IN ENUMARCPATHTYPE ArcPathType
|
|
);
|
|
|
|
PDISK_REGION
|
|
SpRegionFromArcOrDosName(
|
|
IN PWSTR Name,
|
|
IN PartitionOrdinalType OrdinalType,
|
|
IN PDISK_REGION PreviousMatch
|
|
);
|
|
|
|
PDISK_REGION
|
|
SpRegionFromDosName(
|
|
IN PWSTR DosName
|
|
);
|
|
|
|
PDISK_REGION
|
|
SpRegionFromArcName(
|
|
IN PWSTR ArcName,
|
|
IN PartitionOrdinalType OrdinalType,
|
|
IN PDISK_REGION PreviousMatch
|
|
);
|
|
|
|
//
|
|
// Help routine.
|
|
//
|
|
#define SPHELP_HELPTEXT 0x00000000
|
|
#define SPHELP_LICENSETEXT 0x00000001
|
|
|
|
VOID
|
|
SpHelp(
|
|
IN ULONG MessageId, OPTIONAL
|
|
IN PCWSTR FileText, OPTIONAL
|
|
IN ULONG Flags
|
|
);
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
BOOLEAN
|
|
SpPromptForDisk(
|
|
IN PWSTR DiskDescription,
|
|
IN PWSTR DiskDevicePath,
|
|
IN PWSTR DiskTagFile,
|
|
IN BOOLEAN IgnoreDiskInDrive,
|
|
IN BOOLEAN AllowEscape,
|
|
IN BOOLEAN WarnMultiplePrompts,
|
|
OUT PBOOLEAN pRedrawFlag
|
|
);
|
|
|
|
BOOLEAN
|
|
SpPromptForSetupMedia(
|
|
IN PVOID SifHandle,
|
|
IN PWSTR MediaShortname,
|
|
IN PWSTR DiskDevicePath
|
|
);
|
|
|
|
ULONG
|
|
SpFindStringInTable(
|
|
IN PWSTR *StringTable,
|
|
IN PWSTR StringToFind
|
|
);
|
|
|
|
PWSTR
|
|
SpGenerateCompressedName(
|
|
IN PWSTR Filename
|
|
);
|
|
|
|
BOOLEAN
|
|
SpNonCriticalError(
|
|
IN PVOID SifHandle,
|
|
IN ULONG MsgId,
|
|
IN PWSTR p1,
|
|
IN PWSTR p2
|
|
);
|
|
|
|
VOID
|
|
SpPrepareForPrinterUpgrade(
|
|
IN PVOID SifHandle,
|
|
IN PDISK_REGION NtRegion,
|
|
IN PWSTR Sysroot
|
|
);
|
|
|
|
NTSTATUS
|
|
SpOpenSetValueAndClose(
|
|
IN HANDLE hKeyRoot,
|
|
IN PWSTR SubKeyName, OPTIONAL
|
|
IN PWSTR ValueName,
|
|
IN ULONG ValueType,
|
|
IN PVOID Value,
|
|
IN ULONG ValueSize
|
|
);
|
|
|
|
NTSTATUS
|
|
SpDeleteValueKey(
|
|
IN HANDLE hKeyRoot,
|
|
IN PWSTR KeyName,
|
|
IN PWSTR ValueName
|
|
);
|
|
|
|
NTSTATUS
|
|
SpGetValueKey(
|
|
IN HANDLE hKeyRoot,
|
|
IN PWSTR KeyName,
|
|
IN PWSTR ValueName,
|
|
IN ULONG BufferLength,
|
|
OUT PUCHAR Buffer,
|
|
OUT PULONG ResultLength
|
|
);
|
|
|
|
#ifndef _X86_
|
|
PWSTR
|
|
SpDetermineSystemPartitionDirectory(
|
|
IN PDISK_REGION SystemPartitionRegion,
|
|
IN PWSTR OriginalSystemPartitionDirectory OPTIONAL
|
|
);
|
|
#endif
|
|
|
|
#ifdef _X86_
|
|
BOOLEAN
|
|
SpIsRegionBeyondCylinder1024(
|
|
IN PDISK_REGION Region
|
|
);
|
|
#endif
|
|
|
|
#ifndef _X86_
|
|
VOID
|
|
SpFindSizeOfFilesInOsWinnt(
|
|
IN PVOID MasterSifHandle,
|
|
IN PDISK_REGION SystemPartition,
|
|
IN PULONG TotalSize
|
|
);
|
|
#endif
|
|
|
|
VOID
|
|
SpRunAutochkOnNtAndSystemPartitions(
|
|
IN HANDLE MasterSifHandle,
|
|
IN PDISK_REGION WinntPartitionRegion,
|
|
IN PDISK_REGION SystemPartitionRegion,
|
|
IN PWSTR SetupSourceDevicePath,
|
|
IN PWSTR DirectoryOnSourceDevice
|
|
);
|
|
|
|
#ifdef _FASTRECOVER_
|
|
VOID
|
|
SpRunImage(
|
|
IN HANDLE MasterSifHandle,
|
|
IN PWSTR SourceDevicePath,
|
|
IN PWSTR ImageFile
|
|
);
|
|
#endif
|
|
|
|
//
|
|
// Utilities used for partitioning/formatting
|
|
//
|
|
|
|
USHORT
|
|
ComputeSecPerCluster(
|
|
IN ULONG NumSectors,
|
|
IN BOOLEAN SmallFat
|
|
);
|
|
|
|
NTSTATUS
|
|
SpLockUnlockVolume(
|
|
IN HANDLE Handle,
|
|
IN BOOLEAN LockVolume
|
|
);
|
|
|
|
NTSTATUS
|
|
SpDismountVolume(
|
|
IN HANDLE Handle
|
|
);
|
|
|
|
//
|
|
// Miscellaneous other stuff
|
|
//
|
|
BOOLEAN
|
|
SpReadSKUStuff(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
SpSetDirtyShutdownFlag(
|
|
IN PDISK_REGION TargetRegion,
|
|
IN PWSTR SystemRoot
|
|
);
|
|
|
|
#ifdef _PPC_
|
|
BOOLEAN
|
|
SpIsCarolinaMachine(
|
|
);
|
|
|
|
NTSTATUS
|
|
SpFixSetupHiveForCarolinaMachine(
|
|
);
|
|
#endif // _PPC_
|
|
|
|
#endif // ndef _SPSETUP_DEFN_
|