* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-/* COPYRIGHT: See COPYING in the top level directory
+/*
+ * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS text-mode setup
- * FILE: subsys/system/usetup/partlist.h
+ * FILE: base/setup/usetup/partlist.h
* PURPOSE: Partition list functions
- * PROGRAMMER: Eric Kohl
+ * PROGRAMMER:
*/
#pragma once
-/* We have to define it there, because it is not in the MS DDK */
-#define PARTITION_EXT2 0x83
+// #include "../lib/utils/partlist.h"
-typedef enum _FORMATSTATE
+typedef enum _FORMATMACHINESTATE
{
- Unformatted,
- UnformattedOrDamaged,
- UnknownFormat,
- Preformatted,
- Formatted
-} FORMATSTATE, *PFORMATSTATE;
-
-
-typedef struct _PARTENTRY
+ Start,
+ FormatSystemPartition,
+ FormatInstallPartition,
+ FormatOtherPartition,
+ FormatDone,
+ // CheckSystemPartition,
+ // CheckInstallPartition,
+ // CheckOtherPartition,
+ // CheckDone
+} FORMATMACHINESTATE, *PFORMATMACHINESTATE;
+
+typedef struct _PARTLIST_UI
{
- LIST_ENTRY ListEntry;
-
- CHAR DriveLetter[4];
- CHAR VolumeLabel[17];
- CHAR FileSystemName[9];
-
- /* Partition is unused disk space */
- BOOLEAN Unpartitioned;
-
- /* Partition is new. Table does not exist on disk yet */
- BOOLEAN New;
+ PPARTLIST List;
- /* Partition was created automatically. */
- BOOLEAN AutoCreate;
+ /*
+ * Selected partition.
+ *
+ * NOTE that when CurrentPartition != NULL, then CurrentPartition->DiskEntry
+ * must be the same as CurrentDisk. We should however keep the two members
+ * separated as we can have a selected disk without any partition.
+ */
+ PDISKENTRY CurrentDisk;
+ PPARTENTRY CurrentPartition;
- FORMATSTATE FormatState;
+ // PLIST_ENTRY FirstShown;
+ // PLIST_ENTRY LastShown;
- /*
- * Raw offset and length of the unpartitioned disk space.
- * Includes the leading, not yet existing, partition table.
- */
- ULONGLONG UnpartitionedOffset;
- ULONGLONG UnpartitionedLength;
+ SHORT Left;
+ SHORT Top;
+ SHORT Right;
+ SHORT Bottom;
- PARTITION_INFORMATION PartInfo[4];
+ SHORT Line;
+ SHORT Offset;
-} PARTENTRY, *PPARTENTRY;
-
-
-typedef struct _BIOSDISKENTRY
-{
- LIST_ENTRY ListEntry;
- ULONG DiskNumber;
- ULONG Signature;
- ULONG Checksum;
- BOOLEAN Recognized;
- CM_DISK_GEOMETRY_DEVICE_DATA DiskGeometry;
- CM_INT13_DRIVE_PARAMETER Int13DiskData;
-} BIOSDISKENTRY, *PBIOSDISKENTRY;
-
-
-typedef struct _DISKENTRY
-{
- LIST_ENTRY ListEntry;
+ // BOOL Redraw;
+} PARTLIST_UI, *PPARTLIST_UI;
- ULONGLONG Cylinders;
- ULONGLONG TracksPerCylinder;
- ULONGLONG SectorsPerTrack;
- ULONGLONG BytesPerSector;
-
- ULONGLONG DiskSize;
- ULONGLONG CylinderSize;
- ULONGLONG TrackSize;
-
- BOOLEAN BiosFound;
- ULONG BiosDiskNumber;
- ULONG Signature;
- ULONG Checksum;
-
- ULONG DiskNumber;
- USHORT Port;
- USHORT Bus;
- USHORT Id;
-
- /* Has the partition list been modified? */
- BOOLEAN Modified;
-
- BOOLEAN NewDisk;
- BOOLEAN NoMbr; /* MBR is absent */
-
- UNICODE_STRING DriverName;
-
- LIST_ENTRY PartListHead;
-
-} DISKENTRY, *PDISKENTRY;
-
-
-typedef struct _PARTLIST
-{
- SHORT Left;
- SHORT Top;
- SHORT Right;
- SHORT Bottom;
-
- SHORT Line;
- SHORT Offset;
-
- ULONG TopDisk;
- ULONG TopPartition;
-
- PDISKENTRY CurrentDisk;
- PPARTENTRY CurrentPartition;
- UCHAR CurrentPartitionNumber;
-
- PDISKENTRY ActiveBootDisk;
- PPARTENTRY ActiveBootPartition;
- UCHAR ActiveBootPartitionNumber;
-
- LIST_ENTRY DiskListHead;
- LIST_ENTRY BiosDiskListHead;
-
-} PARTLIST, *PPARTLIST;
-
-#define PARTITION_TBL_SIZE 4
-
-#include <pshpack1.h>
-
-typedef struct _PARTITION
-{
- unsigned char BootFlags; /* bootable? 0=no, 128=yes */
- unsigned char StartingHead; /* beginning head number */
- unsigned char StartingSector; /* beginning sector number */
- unsigned char StartingCylinder; /* 10 bit nmbr, with high 2 bits put in begsect */
- unsigned char PartitionType; /* Operating System type indicator code */
- unsigned char EndingHead; /* ending head number */
- unsigned char EndingSector; /* ending sector number */
- unsigned char EndingCylinder; /* also a 10 bit nmbr, with same high 2 bit trick */
- unsigned int StartingBlock; /* first sector relative to start of disk */
- unsigned int SectorCount; /* number of sectors in partition */
-} PARTITION, *PPARTITION;
-
-typedef struct _PARTITION_SECTOR
-{
- UCHAR BootCode[440]; /* 0x000 */
- ULONG Signature; /* 0x1B8 */
- UCHAR Reserved[2]; /* 0x1BC */
- PARTITION Partition[PARTITION_TBL_SIZE]; /* 0x1BE */
- USHORT Magic; /* 0x1FE */
-} PARTITION_SECTOR, *PPARTITION_SECTOR;
-
-#include <poppack.h>
-
-typedef struct
-{
- LIST_ENTRY ListEntry;
- ULONG DiskNumber;
- ULONG Idendifier;
- ULONG Signature;
-} BIOS_DISK, *PBIOS_DISK;
-
-PPARTLIST
-CreatePartitionList (SHORT Left,
- SHORT Top,
- SHORT Right,
- SHORT Bottom);
VOID
-DestroyPartitionList (PPARTLIST List);
+GetPartTypeStringFromPartitionType(
+ IN UCHAR partitionType,
+ OUT PCHAR strPartType,
+ IN ULONG cchPartType);
VOID
-DrawPartitionList (PPARTLIST List);
-
-DWORD
-SelectPartition(PPARTLIST List, ULONG DiskNumber, ULONG PartitionNumber);
-
-BOOL
-SetMountedDeviceValues(PPARTLIST List);
+InitPartitionListUi(
+ IN OUT PPARTLIST_UI ListUi,
+ IN PPARTLIST List,
+ IN PPARTENTRY CurrentEntry OPTIONAL,
+ IN SHORT Left,
+ IN SHORT Top,
+ IN SHORT Right,
+ IN SHORT Bottom);
VOID
-ScrollDownPartitionList (PPARTLIST List);
+ScrollDownPartitionList(
+ IN PPARTLIST_UI ListUi);
VOID
-ScrollUpPartitionList (PPARTLIST List);
+ScrollUpPartitionList(
+ IN PPARTLIST_UI ListUi);
VOID
-CreateNewPartition (PPARTLIST List,
- ULONGLONG PartitionSize,
- BOOLEAN AutoCreate);
-
-VOID
-DeleteCurrentPartition (PPARTLIST List);
-
-VOID
-CheckActiveBootPartition (PPARTLIST List);
-
-BOOLEAN
-CheckForLinuxFdiskPartitions (PPARTLIST List);
-
-BOOLEAN
-WritePartitionsToDisk (PPARTLIST List);
+DrawPartitionList(
+ IN PPARTLIST_UI ListUi);
/* EOF */