From: James Tabor Date: Sun, 27 Feb 2005 21:17:24 +0000 (+0000) Subject: Check for removable media and Partition length is 0, for DiskClassCheckReadWrite. X-Git-Tag: backups/alex_devel_branch@15093~21^2~5 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=ab1066da6a1cefeabcc6529be6af81824b9dc9d7;ds=sidebyside Check for removable media and Partition length is 0, for DiskClassCheckReadWrite. svn path=/trunk/; revision=13768 --- diff --git a/reactos/drivers/storage/disk/disk.c b/reactos/drivers/storage/disk/disk.c index 2d68cf862a0..b0e89045c7a 100644 --- a/reactos/drivers/storage/disk/disk.c +++ b/reactos/drivers/storage/disk/disk.c @@ -406,10 +406,26 @@ DiskClassCheckReadWrite(IN PDEVICE_OBJECT DeviceObject, 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;