mirror of
https://github.com/reactos/reactos.git
synced 2024-12-04 17:03:30 +08:00
[DISK.SYS] Add a HACK so that we can use NT5+ NTOS functions with this NT4 driver for removable devices.
This is needed in order to avoid an infinite recursive loop between disk!UpdateRemovableGeometry() and ntos!IoReadPartitionTable(). This does not happen with NT5+ disk_new.sys because it doesn't call IoReadPartitionTable() in that situation.
This commit is contained in:
parent
397fe9c817
commit
a56a2e95a2
@ -116,6 +116,15 @@ typedef struct _DISK_DATA {
|
||||
|
||||
PARTITION_LIST_STATE PartitionListState;
|
||||
|
||||
#ifdef __REACTOS__
|
||||
//
|
||||
// HACK so that we can use NT5+ NTOS functions with this NT4 driver
|
||||
// for removable devices and avoid an infinite recursive loop between
|
||||
// disk!UpdateRemovableGeometry() and ntos!IoReadPartitionTable().
|
||||
//
|
||||
ULONG UpdateRemovableGeometryCount;
|
||||
#endif
|
||||
|
||||
} DISK_DATA, *PDISK_DATA;
|
||||
|
||||
//
|
||||
@ -1147,6 +1156,15 @@ CreatePartitionDeviceObjects(
|
||||
|
||||
}
|
||||
|
||||
#ifdef __REACTOS__
|
||||
//
|
||||
// HACK so that we can use NT5+ NTOS functions with this NT4 driver
|
||||
// for removable devices and avoid an infinite recursive loop between
|
||||
// disk!UpdateRemovableGeometry() and ntos!IoReadPartitionTable().
|
||||
//
|
||||
diskData->UpdateRemovableGeometryCount = 0;
|
||||
#endif
|
||||
|
||||
//
|
||||
// Create objects for all the partitions on the device.
|
||||
//
|
||||
@ -4456,6 +4474,21 @@ Return Value:
|
||||
return(status);
|
||||
}
|
||||
|
||||
#ifdef __REACTOS__
|
||||
//
|
||||
// HACK so that we can use NT5+ NTOS functions with this NT4 driver
|
||||
// for removable devices and avoid an infinite recursive loop between
|
||||
// disk!UpdateRemovableGeometry() and ntos!IoReadPartitionTable().
|
||||
//
|
||||
// Check whether the update-count is greater or equal than one
|
||||
// (and increase it) and if so, reset it and return success.
|
||||
if (diskData->UpdateRemovableGeometryCount++ >= 1)
|
||||
{
|
||||
diskData->UpdateRemovableGeometryCount = 0;
|
||||
return(STATUS_SUCCESS);
|
||||
}
|
||||
#endif
|
||||
|
||||
//
|
||||
// Read the partition table again.
|
||||
//
|
||||
@ -4465,6 +4498,15 @@ Return Value:
|
||||
TRUE,
|
||||
&partitionList);
|
||||
|
||||
#ifdef __REACTOS__
|
||||
//
|
||||
// HACK so that we can use NT5+ NTOS functions with this NT4 driver
|
||||
// for removable devices and avoid an infinite recursive loop between
|
||||
// disk!UpdateRemovableGeometry() and ntos!IoReadPartitionTable().
|
||||
//
|
||||
// Inconditionally reset the update-count.
|
||||
diskData->UpdateRemovableGeometryCount = 0;
|
||||
#endif
|
||||
|
||||
if (!NT_SUCCESS(status)) {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user