mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 08:03:03 +00:00
fixed problem with extended partitions that contain only Linux logical partitions
svn path=/trunk/; revision=2014
This commit is contained in:
parent
b8e0d46292
commit
5eb89e0c5a
2 changed files with 11 additions and 9 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: disk.h,v 1.5 2001/06/07 21:16:17 ekohl Exp $
|
/* $Id: disk.h,v 1.6 2001/06/28 02:42:27 rex Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -84,6 +84,9 @@
|
||||||
((P) == PTDosExtended || \
|
((P) == PTDosExtended || \
|
||||||
(P) == PTWin95ExtendedLBA)
|
(P) == PTWin95ExtendedLBA)
|
||||||
|
|
||||||
|
#define IsNormalPartition(P) \
|
||||||
|
((P) != PTEmpty && \
|
||||||
|
!IsExtendedPartition(P))
|
||||||
|
|
||||||
typedef enum _MEDIA_TYPE {
|
typedef enum _MEDIA_TYPE {
|
||||||
Unknown,
|
Unknown,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: xhaldrv.c,v 1.10 2001/06/08 15:11:04 ekohl Exp $
|
/* $Id: xhaldrv.c,v 1.11 2001/06/28 02:42:27 rex Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -42,7 +42,6 @@
|
||||||
(P) == PTWin95FAT32LBA || \
|
(P) == PTWin95FAT32LBA || \
|
||||||
(P) == PTWin95FAT16LBA)
|
(P) == PTWin95FAT16LBA)
|
||||||
|
|
||||||
|
|
||||||
typedef struct _PARTITION
|
typedef struct _PARTITION
|
||||||
{
|
{
|
||||||
unsigned char BootFlags;
|
unsigned char BootFlags;
|
||||||
|
@ -618,7 +617,7 @@ xHalIoReadPartitionTable(PDEVICE_OBJECT DeviceObject,
|
||||||
NotificationEvent,
|
NotificationEvent,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
||||||
DPRINT("PartitionOffset: %I64u\n", PartitionOffset.QuadPart / SectorSize);
|
DPRINT1("PartitionOffset: %I64u\n", PartitionOffset.QuadPart / SectorSize);
|
||||||
|
|
||||||
Irp = IoBuildSynchronousFsdRequest(IRP_MJ_READ,
|
Irp = IoBuildSynchronousFsdRequest(IRP_MJ_READ,
|
||||||
DeviceObject,
|
DeviceObject,
|
||||||
|
@ -641,7 +640,7 @@ xHalIoReadPartitionTable(PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT("xHalIoReadPartitonTable failed (Status = 0x%08lx)\n",
|
DbgPrint("xHalIoReadPartitonTable failed (Status = 0x%08lx)\n",
|
||||||
Status);
|
Status);
|
||||||
ExFreePool(SectorBuffer);
|
ExFreePool(SectorBuffer);
|
||||||
ExFreePool(LayoutBuffer);
|
ExFreePool(LayoutBuffer);
|
||||||
|
@ -654,16 +653,16 @@ xHalIoReadPartitionTable(PDEVICE_OBJECT DeviceObject,
|
||||||
DPRINT("Magic %x\n", PartitionTable->Magic);
|
DPRINT("Magic %x\n", PartitionTable->Magic);
|
||||||
if (PartitionTable->Magic != PARTITION_MAGIC)
|
if (PartitionTable->Magic != PARTITION_MAGIC)
|
||||||
{
|
{
|
||||||
DPRINT("Invalid partition table magic\n");
|
DbgPrint("Invalid partition table magic\n");
|
||||||
ExFreePool(SectorBuffer);
|
ExFreePool(SectorBuffer);
|
||||||
*PartitionBuffer = LayoutBuffer;
|
*PartitionBuffer = LayoutBuffer;
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#if 1 /* ndef NDEBUG */
|
||||||
for (i = 0; i < PARTITION_TBL_SIZE; i++)
|
for (i = 0; i < PARTITION_TBL_SIZE; i++)
|
||||||
{
|
{
|
||||||
DPRINT(" %d: flags:%2x type:%x start:%d:%d:%d end:%d:%d:%d stblk:%d count:%d\n",
|
DPRINT1(" %d: flags:%2x type:%x start:%d:%d:%d end:%d:%d:%d stblk:%d count:%d\n",
|
||||||
i,
|
i,
|
||||||
PartitionTable->Partition[i].BootFlags,
|
PartitionTable->Partition[i].BootFlags,
|
||||||
PartitionTable->Partition[i].PartitionType,
|
PartitionTable->Partition[i].PartitionType,
|
||||||
|
@ -743,7 +742,7 @@ xHalIoReadPartitionTable(PDEVICE_OBJECT DeviceObject,
|
||||||
LayoutBuffer->PartitionCount++;
|
LayoutBuffer->PartitionCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsUsablePartition(PartitionTable->Partition[i].PartitionType))
|
if (IsNormalPartition(PartitionTable->Partition[i].PartitionType))
|
||||||
{
|
{
|
||||||
PartitionOffset.QuadPart = (ULONGLONG)PartitionOffset.QuadPart +
|
PartitionOffset.QuadPart = (ULONGLONG)PartitionOffset.QuadPart +
|
||||||
(((ULONGLONG)PartitionTable->Partition[i].StartingBlock +
|
(((ULONGLONG)PartitionTable->Partition[i].StartingBlock +
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue