Check for removable media and Partition length is 0, for
DiskClassCheckReadWrite.
Modified: trunk/reactos/drivers/storage/disk/disk.c
_____
Modified: trunk/reactos/drivers/storage/disk/disk.c
--- trunk/reactos/drivers/storage/disk/disk.c 2005-02-27 20:38:36 UTC
(rev 13767)
+++ trunk/reactos/drivers/storage/disk/disk.c 2005-02-27 21:17:24 UTC
(rev 13768)
@@ -406,10 +406,26 @@
return(STATUS_INVALID_PARAMETER);
}
+
+
IrpStack = IoGetCurrentIrpStackLocation(Irp);
EndingOffset.QuadPart = IrpStack->Parameters.Read.ByteOffset.QuadPart
+
IrpStack->Parameters.Read.Length;
+
+ DPRINT("Ending %I64d, and RealEnding %I64d! PartSize
%I64d\n",EndingOffset.QuadPart,
+ DeviceExtension->PartitionLength.QuadPart,
+ DeviceExtension->PartitionLength.QuadPart /
+ DeviceExtension->DiskGeometry->BytesPerSector);
+
+ if ((DeviceObject->Characteristics & FILE_REMOVABLE_MEDIA) &&
+ (DeviceExtension->DiskGeometry->MediaType == RemovableMedia))
+ {
+/* Assume if removable media and if Partition length is 0, Partition
not built yet! */
+ if (DeviceExtension->PartitionLength.QuadPart == 0)
+ return(STATUS_SUCCESS);
+ }
+
if (EndingOffset.QuadPart >
DeviceExtension->PartitionLength.QuadPart)
{
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;