mirror of
https://github.com/reactos/reactos.git
synced 2024-07-30 16:18:43 +00:00
[USETUP]
Re-enable scrolling through multiple disks and support logical partitions. svn path=/trunk/; revision=63597
This commit is contained in:
parent
5e52a82ae0
commit
9955f52225
|
@ -2013,15 +2013,15 @@ BOOL
|
||||||
ScrollDownPartitionList(
|
ScrollDownPartitionList(
|
||||||
PPARTLIST List)
|
PPARTLIST List)
|
||||||
{
|
{
|
||||||
// PDISKENTRY DiskEntry;
|
PLIST_ENTRY DiskListEntry;
|
||||||
|
PLIST_ENTRY PartListEntry;
|
||||||
|
PDISKENTRY DiskEntry;
|
||||||
PPARTENTRY PartEntry;
|
PPARTENTRY PartEntry;
|
||||||
PLIST_ENTRY Entry;
|
|
||||||
|
|
||||||
/* Check for empty disks */
|
/* Fail, if no disks are available */
|
||||||
if (IsListEmpty(&List->DiskListHead))
|
if (IsListEmpty(&List->DiskListHead))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
|
||||||
/* Check for next usable entry on current disk */
|
/* Check for next usable entry on current disk */
|
||||||
if (List->CurrentPartition != NULL)
|
if (List->CurrentPartition != NULL)
|
||||||
{
|
{
|
||||||
|
@ -2029,21 +2029,21 @@ ScrollDownPartitionList(
|
||||||
{
|
{
|
||||||
/* Logical partition */
|
/* Logical partition */
|
||||||
|
|
||||||
Entry = List->CurrentPartition->ListEntry.Flink;
|
PartListEntry = List->CurrentPartition->ListEntry.Flink;
|
||||||
if (Entry != &List->CurrentDisk->LogicalPartListHead)
|
if (PartListEntry != &List->CurrentDisk->LogicalPartListHead)
|
||||||
{
|
{
|
||||||
/* Next logical partition */
|
/* Next logical partition */
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
List->CurrentPartition = PartEntry;
|
List->CurrentPartition = PartEntry;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Entry = List->CurrentDisk->ExtendedPartition->ListEntry.Flink;
|
PartListEntry = List->CurrentDisk->ExtendedPartition->ListEntry.Flink;
|
||||||
if (Entry != &List->CurrentDisk->PrimaryPartListHead)
|
if (PartListEntry != &List->CurrentDisk->PrimaryPartListHead)
|
||||||
{
|
{
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
List->CurrentPartition = PartEntry;
|
List->CurrentPartition = PartEntry;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -2057,10 +2057,10 @@ ScrollDownPartitionList(
|
||||||
if (IsContainerPartition(List->CurrentPartition->PartitionType))
|
if (IsContainerPartition(List->CurrentPartition->PartitionType))
|
||||||
{
|
{
|
||||||
/* First logical partition */
|
/* First logical partition */
|
||||||
Entry = List->CurrentDisk->LogicalPartListHead.Flink;
|
PartListEntry = List->CurrentDisk->LogicalPartListHead.Flink;
|
||||||
if (Entry != &List->CurrentDisk->LogicalPartListHead)
|
if (PartListEntry != &List->CurrentDisk->LogicalPartListHead)
|
||||||
{
|
{
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
List->CurrentPartition = PartEntry;
|
List->CurrentPartition = PartEntry;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -2069,10 +2069,10 @@ ScrollDownPartitionList(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Next primary partition */
|
/* Next primary partition */
|
||||||
Entry = List->CurrentPartition->ListEntry.Flink;
|
PartListEntry = List->CurrentPartition->ListEntry.Flink;
|
||||||
if (Entry != &List->CurrentDisk->PrimaryPartListHead)
|
if (PartListEntry != &List->CurrentDisk->PrimaryPartListHead)
|
||||||
{
|
{
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
List->CurrentPartition = PartEntry;
|
List->CurrentPartition = PartEntry;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -2081,32 +2081,24 @@ ScrollDownPartitionList(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT1("TODO: Check the next drive!\n");
|
/* Search for the first partition entry on the next disk */
|
||||||
|
DiskListEntry = List->CurrentDisk->ListEntry.Flink;
|
||||||
#if 0
|
while (DiskListEntry != &List->DiskListHead)
|
||||||
/* Check for first usable entry on next disk */
|
|
||||||
if (List->CurrentDisk != NULL)
|
|
||||||
{
|
{
|
||||||
Entry1 = List->CurrentDisk->ListEntry.Flink;
|
DiskEntry = CONTAINING_RECORD(DiskListEntry, DISKENTRY, ListEntry);
|
||||||
while (Entry1 != &List->DiskListHead)
|
|
||||||
|
PartListEntry = DiskEntry->PrimaryPartListHead.Flink;
|
||||||
|
if (PartListEntry != &DiskEntry->PrimaryPartListHead)
|
||||||
{
|
{
|
||||||
DiskEntry = CONTAINING_RECORD(Entry1, DISKENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
Entry2 = DiskEntry->PartListHead.Flink;
|
List->CurrentDisk = DiskEntry;
|
||||||
if (Entry2 != &DiskEntry->PartListHead)
|
List->CurrentPartition = PartEntry;
|
||||||
{
|
return TRUE;
|
||||||
PartEntry = CONTAINING_RECORD(Entry2, PARTENTRY, ListEntry);
|
|
||||||
|
|
||||||
List->CurrentDisk = DiskEntry;
|
|
||||||
List->CurrentPartition = PartEntry;
|
|
||||||
DrawPartitionList(List);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Entry1 = Entry1->Flink;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DiskListEntry = DiskListEntry->Flink;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -2116,11 +2108,12 @@ BOOL
|
||||||
ScrollUpPartitionList(
|
ScrollUpPartitionList(
|
||||||
PPARTLIST List)
|
PPARTLIST List)
|
||||||
{
|
{
|
||||||
// PDISKENTRY DiskEntry;
|
PLIST_ENTRY DiskListEntry;
|
||||||
|
PLIST_ENTRY PartListEntry;
|
||||||
|
PDISKENTRY DiskEntry;
|
||||||
PPARTENTRY PartEntry;
|
PPARTENTRY PartEntry;
|
||||||
PLIST_ENTRY Entry;
|
|
||||||
|
|
||||||
/* Check for empty disks */
|
/* Fail, if no disks are available */
|
||||||
if (IsListEmpty(&List->DiskListHead))
|
if (IsListEmpty(&List->DiskListHead))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
@ -2130,11 +2123,11 @@ ScrollUpPartitionList(
|
||||||
if (List->CurrentPartition->LogicalPartition)
|
if (List->CurrentPartition->LogicalPartition)
|
||||||
{
|
{
|
||||||
/* Logical partition */
|
/* Logical partition */
|
||||||
Entry = List->CurrentPartition->ListEntry.Blink;
|
PartListEntry = List->CurrentPartition->ListEntry.Blink;
|
||||||
if (Entry != &List->CurrentDisk->LogicalPartListHead)
|
if (PartListEntry != &List->CurrentDisk->LogicalPartListHead)
|
||||||
{
|
{
|
||||||
/* Previous logical partition */
|
/* Previous logical partition */
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2149,15 +2142,15 @@ ScrollUpPartitionList(
|
||||||
{
|
{
|
||||||
/* Primary or extended partition */
|
/* Primary or extended partition */
|
||||||
|
|
||||||
Entry = List->CurrentPartition->ListEntry.Blink;
|
PartListEntry = List->CurrentPartition->ListEntry.Blink;
|
||||||
if (Entry != &List->CurrentDisk->PrimaryPartListHead)
|
if (PartListEntry != &List->CurrentDisk->PrimaryPartListHead)
|
||||||
{
|
{
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
if (IsContainerPartition(PartEntry->PartitionType))
|
if (IsContainerPartition(PartEntry->PartitionType))
|
||||||
{
|
{
|
||||||
Entry = List->CurrentDisk->LogicalPartListHead.Blink;
|
PartListEntry = List->CurrentDisk->LogicalPartListHead.Blink;
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
List->CurrentPartition = PartEntry;
|
List->CurrentPartition = PartEntry;
|
||||||
|
@ -2167,34 +2160,39 @@ ScrollUpPartitionList(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT1("TODO: Check the previous drive!\n");
|
/* Search for the last partition entry on the previous disk */
|
||||||
|
DiskListEntry = List->CurrentDisk->ListEntry.Blink;
|
||||||
#if 0
|
while (DiskListEntry != &List->DiskListHead)
|
||||||
/* check for last usable entry on previous disk */
|
|
||||||
if (List->CurrentDisk != NULL)
|
|
||||||
{
|
{
|
||||||
Entry1 = List->CurrentDisk->ListEntry.Blink;
|
DiskEntry = CONTAINING_RECORD(DiskListEntry, DISKENTRY, ListEntry);
|
||||||
while (Entry1 != &List->DiskListHead)
|
|
||||||
|
PartListEntry = DiskEntry->PrimaryPartListHead.Blink;
|
||||||
|
if (PartListEntry != &DiskEntry->PrimaryPartListHead)
|
||||||
{
|
{
|
||||||
DiskEntry = CONTAINING_RECORD(Entry1, DISKENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
Entry2 = DiskEntry->PrimaryPartListHead.Blink;
|
if (IsContainerPartition(PartEntry->PartitionType))
|
||||||
if (Entry2 != &DiskEntry->PrimaryPartListHead)
|
|
||||||
{
|
{
|
||||||
PartEntry = CONTAINING_RECORD(Entry2, PARTENTRY, ListEntry);
|
PartListEntry = DiskEntry->LogicalPartListHead.Blink;
|
||||||
|
if (PartListEntry != &DiskEntry->LogicalPartListHead)
|
||||||
|
{
|
||||||
|
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
|
List->CurrentDisk = DiskEntry;
|
||||||
|
List->CurrentPartition = PartEntry;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
List->CurrentDisk = DiskEntry;
|
List->CurrentDisk = DiskEntry;
|
||||||
List->CurrentPartition = PartEntry;
|
List->CurrentPartition = PartEntry;
|
||||||
|
return TRUE;
|
||||||
/* Draw partition list and return */
|
|
||||||
DrawPartitionList(List);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Entry1 = Entry1->Blink;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DiskListEntry = DiskListEntry->Blink;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue