mirror of
https://github.com/reactos/reactos.git
synced 2025-06-10 04:14:53 +00:00
[SETUPLIB] Cleanup some partition getters and remove GetDiskOrPartition.
- osdetect.c: Replace usage of GetDiskOrPartition by SelectPartition.
This commit is contained in:
parent
63935f857f
commit
a2777cd828
3 changed files with 48 additions and 115 deletions
|
@ -78,7 +78,6 @@ EnumerateInstallations(
|
||||||
|
|
||||||
ULONG DiskNumber = 0, PartitionNumber = 0;
|
ULONG DiskNumber = 0, PartitionNumber = 0;
|
||||||
PCWSTR PathComponent = NULL;
|
PCWSTR PathComponent = NULL;
|
||||||
PDISKENTRY DiskEntry = NULL;
|
|
||||||
PPARTENTRY PartEntry = NULL;
|
PPARTENTRY PartEntry = NULL;
|
||||||
|
|
||||||
UNICODE_STRING SystemRootPath;
|
UNICODE_STRING SystemRootPath;
|
||||||
|
@ -184,10 +183,11 @@ EnumerateInstallations(
|
||||||
DPRINT("SystemRootPath = '%wZ' points to disk #%d, partition #%d, path '%S'\n",
|
DPRINT("SystemRootPath = '%wZ' points to disk #%d, partition #%d, path '%S'\n",
|
||||||
&SystemRootPath, DiskNumber, PartitionNumber, PathComponent);
|
&SystemRootPath, DiskNumber, PartitionNumber, PathComponent);
|
||||||
|
|
||||||
/* Retrieve the corresponding disk and partition */
|
/* Retrieve the corresponding partition */
|
||||||
if (!GetDiskOrPartition(Data->PartList, DiskNumber, PartitionNumber, &DiskEntry, &PartEntry))
|
PartEntry = SelectPartition(Data->PartList, DiskNumber, PartitionNumber);
|
||||||
|
if (!PartEntry)
|
||||||
{
|
{
|
||||||
DPRINT1("GetDiskOrPartition(disk #%d, partition #%d) failed\n",
|
DPRINT1("SelectPartition(disk #%d, partition #%d) failed\n",
|
||||||
DiskNumber, PartitionNumber);
|
DiskNumber, PartitionNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2062,8 +2062,8 @@ DestroyPartitionList(
|
||||||
|
|
||||||
PDISKENTRY
|
PDISKENTRY
|
||||||
GetDiskByBiosNumber(
|
GetDiskByBiosNumber(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN ULONG HwDiskNumber)
|
_In_ ULONG HwDiskNumber)
|
||||||
{
|
{
|
||||||
PDISKENTRY DiskEntry;
|
PDISKENTRY DiskEntry;
|
||||||
PLIST_ENTRY Entry;
|
PLIST_ENTRY Entry;
|
||||||
|
@ -2076,10 +2076,7 @@ GetDiskByBiosNumber(
|
||||||
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
|
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
|
||||||
|
|
||||||
if (DiskEntry->HwDiskNumber == HwDiskNumber)
|
if (DiskEntry->HwDiskNumber == HwDiskNumber)
|
||||||
{
|
return DiskEntry; /* Disk found, return it */
|
||||||
/* Disk found */
|
|
||||||
return DiskEntry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Disk not found, stop there */
|
/* Disk not found, stop there */
|
||||||
|
@ -2088,8 +2085,8 @@ GetDiskByBiosNumber(
|
||||||
|
|
||||||
PDISKENTRY
|
PDISKENTRY
|
||||||
GetDiskByNumber(
|
GetDiskByNumber(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN ULONG DiskNumber)
|
_In_ ULONG DiskNumber)
|
||||||
{
|
{
|
||||||
PDISKENTRY DiskEntry;
|
PDISKENTRY DiskEntry;
|
||||||
PLIST_ENTRY Entry;
|
PLIST_ENTRY Entry;
|
||||||
|
@ -2102,10 +2099,7 @@ GetDiskByNumber(
|
||||||
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
|
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
|
||||||
|
|
||||||
if (DiskEntry->DiskNumber == DiskNumber)
|
if (DiskEntry->DiskNumber == DiskNumber)
|
||||||
{
|
return DiskEntry; /* Disk found, return it */
|
||||||
/* Disk found */
|
|
||||||
return DiskEntry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Disk not found, stop there */
|
/* Disk not found, stop there */
|
||||||
|
@ -2114,10 +2108,10 @@ GetDiskByNumber(
|
||||||
|
|
||||||
PDISKENTRY
|
PDISKENTRY
|
||||||
GetDiskBySCSI(
|
GetDiskBySCSI(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN USHORT Port,
|
_In_ USHORT Port,
|
||||||
IN USHORT Bus,
|
_In_ USHORT Bus,
|
||||||
IN USHORT Id)
|
_In_ USHORT Id)
|
||||||
{
|
{
|
||||||
PDISKENTRY DiskEntry;
|
PDISKENTRY DiskEntry;
|
||||||
PLIST_ENTRY Entry;
|
PLIST_ENTRY Entry;
|
||||||
|
@ -2133,7 +2127,7 @@ GetDiskBySCSI(
|
||||||
DiskEntry->Bus == Bus &&
|
DiskEntry->Bus == Bus &&
|
||||||
DiskEntry->Id == Id)
|
DiskEntry->Id == Id)
|
||||||
{
|
{
|
||||||
/* Disk found */
|
/* Disk found, return it */
|
||||||
return DiskEntry;
|
return DiskEntry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2144,8 +2138,8 @@ GetDiskBySCSI(
|
||||||
|
|
||||||
PDISKENTRY
|
PDISKENTRY
|
||||||
GetDiskBySignature(
|
GetDiskBySignature(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN ULONG Signature)
|
_In_ ULONG Signature)
|
||||||
{
|
{
|
||||||
PDISKENTRY DiskEntry;
|
PDISKENTRY DiskEntry;
|
||||||
PLIST_ENTRY Entry;
|
PLIST_ENTRY Entry;
|
||||||
|
@ -2158,10 +2152,7 @@ GetDiskBySignature(
|
||||||
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
|
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
|
||||||
|
|
||||||
if (DiskEntry->LayoutBuffer->Signature == Signature)
|
if (DiskEntry->LayoutBuffer->Signature == Signature)
|
||||||
{
|
return DiskEntry; /* Disk found, return it */
|
||||||
/* Disk found */
|
|
||||||
return DiskEntry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Disk not found, stop there */
|
/* Disk not found, stop there */
|
||||||
|
@ -2170,20 +2161,13 @@ GetDiskBySignature(
|
||||||
|
|
||||||
PPARTENTRY
|
PPARTENTRY
|
||||||
GetPartition(
|
GetPartition(
|
||||||
// IN PPARTLIST List,
|
_In_ PDISKENTRY DiskEntry,
|
||||||
IN PDISKENTRY DiskEntry,
|
_In_ ULONG PartitionNumber)
|
||||||
IN ULONG PartitionNumber)
|
|
||||||
{
|
{
|
||||||
PPARTENTRY PartEntry;
|
PPARTENTRY PartEntry;
|
||||||
PLIST_ENTRY Entry;
|
PLIST_ENTRY Entry;
|
||||||
|
|
||||||
if (DiskEntry->DiskStyle == PARTITION_STYLE_GPT)
|
/* Loop over the primary partitions first... */
|
||||||
{
|
|
||||||
DPRINT("GPT-partitioned disk detected, not currently supported by SETUP!\n");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Disk found, loop over the primary partitions first... */
|
|
||||||
for (Entry = DiskEntry->PrimaryPartListHead.Flink;
|
for (Entry = DiskEntry->PrimaryPartListHead.Flink;
|
||||||
Entry != &DiskEntry->PrimaryPartListHead;
|
Entry != &DiskEntry->PrimaryPartListHead;
|
||||||
Entry = Entry->Flink)
|
Entry = Entry->Flink)
|
||||||
|
@ -2191,12 +2175,12 @@ GetPartition(
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
if (PartEntry->PartitionNumber == PartitionNumber)
|
if (PartEntry->PartitionNumber == PartitionNumber)
|
||||||
{
|
return PartEntry; /* Partition found, return it */
|
||||||
/* Partition found */
|
|
||||||
return PartEntry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (DiskEntry->DiskStyle == PARTITION_STYLE_GPT)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* ... then over the logical partitions if needed */
|
/* ... then over the logical partitions if needed */
|
||||||
for (Entry = DiskEntry->LogicalPartListHead.Flink;
|
for (Entry = DiskEntry->LogicalPartListHead.Flink;
|
||||||
Entry != &DiskEntry->LogicalPartListHead;
|
Entry != &DiskEntry->LogicalPartListHead;
|
||||||
|
@ -2205,75 +2189,33 @@ GetPartition(
|
||||||
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
|
||||||
|
|
||||||
if (PartEntry->PartitionNumber == PartitionNumber)
|
if (PartEntry->PartitionNumber == PartitionNumber)
|
||||||
{
|
return PartEntry; /* Partition found, return it */
|
||||||
/* Partition found */
|
|
||||||
return PartEntry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The partition was not found on the disk, stop there */
|
/* The partition was not found on the disk, stop there */
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
GetDiskOrPartition(
|
|
||||||
IN PPARTLIST List,
|
|
||||||
IN ULONG DiskNumber,
|
|
||||||
IN ULONG PartitionNumber OPTIONAL,
|
|
||||||
OUT PDISKENTRY* pDiskEntry,
|
|
||||||
OUT PPARTENTRY* pPartEntry OPTIONAL)
|
|
||||||
{
|
|
||||||
PDISKENTRY DiskEntry;
|
|
||||||
PPARTENTRY PartEntry = NULL;
|
|
||||||
|
|
||||||
/* Find the disk */
|
|
||||||
DiskEntry = GetDiskByNumber(List, DiskNumber);
|
|
||||||
if (!DiskEntry)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/* If we have a partition (PartitionNumber != 0), find it */
|
|
||||||
if (PartitionNumber != 0)
|
|
||||||
{
|
|
||||||
if (DiskEntry->DiskStyle == PARTITION_STYLE_GPT)
|
|
||||||
{
|
|
||||||
DPRINT("GPT-partitioned disk detected, not currently supported by SETUP!\n");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
PartEntry = GetPartition(/*List,*/ DiskEntry, PartitionNumber);
|
|
||||||
if (!PartEntry)
|
|
||||||
return FALSE;
|
|
||||||
ASSERT(PartEntry->DiskEntry == DiskEntry);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Return the disk (and optionally the partition) */
|
|
||||||
*pDiskEntry = DiskEntry;
|
|
||||||
if (pPartEntry) *pPartEntry = PartEntry;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// NOTE: Was introduced broken in r6258 by Casper
|
|
||||||
//
|
|
||||||
PPARTENTRY
|
PPARTENTRY
|
||||||
SelectPartition(
|
SelectPartition(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN ULONG DiskNumber,
|
_In_ ULONG DiskNumber,
|
||||||
IN ULONG PartitionNumber)
|
_In_ ULONG PartitionNumber)
|
||||||
{
|
{
|
||||||
PDISKENTRY DiskEntry;
|
PDISKENTRY DiskEntry;
|
||||||
PPARTENTRY PartEntry;
|
PPARTENTRY PartEntry;
|
||||||
|
|
||||||
|
/* Find the disk */
|
||||||
DiskEntry = GetDiskByNumber(List, DiskNumber);
|
DiskEntry = GetDiskByNumber(List, DiskNumber);
|
||||||
if (!DiskEntry)
|
if (!DiskEntry)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
ASSERT(DiskEntry->DiskNumber == DiskNumber);
|
||||||
|
|
||||||
PartEntry = GetPartition(/*List,*/ DiskEntry, PartitionNumber);
|
/* Find the partition */
|
||||||
|
PartEntry = GetPartition(DiskEntry, PartitionNumber);
|
||||||
if (!PartEntry)
|
if (!PartEntry)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ASSERT(PartEntry->DiskEntry == DiskEntry);
|
ASSERT(PartEntry->DiskEntry == DiskEntry);
|
||||||
ASSERT(DiskEntry->DiskNumber == DiskNumber);
|
|
||||||
ASSERT(PartEntry->PartitionNumber == PartitionNumber);
|
ASSERT(PartEntry->PartitionNumber == PartitionNumber);
|
||||||
|
|
||||||
return PartEntry;
|
return PartEntry;
|
||||||
|
|
|
@ -251,45 +251,36 @@ DestroyPartitionList(
|
||||||
|
|
||||||
PDISKENTRY
|
PDISKENTRY
|
||||||
GetDiskByBiosNumber(
|
GetDiskByBiosNumber(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN ULONG HwDiskNumber);
|
_In_ ULONG HwDiskNumber);
|
||||||
|
|
||||||
PDISKENTRY
|
PDISKENTRY
|
||||||
GetDiskByNumber(
|
GetDiskByNumber(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN ULONG DiskNumber);
|
_In_ ULONG DiskNumber);
|
||||||
|
|
||||||
PDISKENTRY
|
PDISKENTRY
|
||||||
GetDiskBySCSI(
|
GetDiskBySCSI(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN USHORT Port,
|
_In_ USHORT Port,
|
||||||
IN USHORT Bus,
|
_In_ USHORT Bus,
|
||||||
IN USHORT Id);
|
_In_ USHORT Id);
|
||||||
|
|
||||||
PDISKENTRY
|
PDISKENTRY
|
||||||
GetDiskBySignature(
|
GetDiskBySignature(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN ULONG Signature);
|
_In_ ULONG Signature);
|
||||||
|
|
||||||
PPARTENTRY
|
PPARTENTRY
|
||||||
GetPartition(
|
GetPartition(
|
||||||
// IN PPARTLIST List,
|
_In_ PDISKENTRY DiskEntry,
|
||||||
IN PDISKENTRY DiskEntry,
|
_In_ ULONG PartitionNumber);
|
||||||
IN ULONG PartitionNumber);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
GetDiskOrPartition(
|
|
||||||
IN PPARTLIST List,
|
|
||||||
IN ULONG DiskNumber,
|
|
||||||
IN ULONG PartitionNumber OPTIONAL,
|
|
||||||
OUT PDISKENTRY* pDiskEntry,
|
|
||||||
OUT PPARTENTRY* pPartEntry OPTIONAL);
|
|
||||||
|
|
||||||
PPARTENTRY
|
PPARTENTRY
|
||||||
SelectPartition(
|
SelectPartition(
|
||||||
IN PPARTLIST List,
|
_In_ PPARTLIST List,
|
||||||
IN ULONG DiskNumber,
|
_In_ ULONG DiskNumber,
|
||||||
IN ULONG PartitionNumber);
|
_In_ ULONG PartitionNumber);
|
||||||
|
|
||||||
PPARTENTRY
|
PPARTENTRY
|
||||||
GetNextPartition(
|
GetNextPartition(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue