Author: pschweitzer
Date: Wed Sep 30 16:29:07 2015
New Revision: 69418
URL:
http://svn.reactos.org/svn/reactos?rev=69418&view=rev
Log:
[CDROM]
Properly implement support for IOCTL_DISK_GET_DRIVE_GEOMETRY,
IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, IOCTL_CDROM_GET_DRIVE_GEOMETRY_EX,
IOCTL_DISK_GET_LENGTH_INFO in CdRomDeviceControl
CORE-10287 #resolve #comment Fixed with r69418
Modified:
trunk/reactos/drivers/storage/class/cdrom/cdrom.c
Modified: trunk/reactos/drivers/storage/class/cdrom/cdrom.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/class/cdro…
==============================================================================
--- trunk/reactos/drivers/storage/class/cdrom/cdrom.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/storage/class/cdrom/cdrom.c [iso-8859-1] Wed Sep 30 16:29:07
2015
@@ -4727,12 +4727,48 @@
return STATUS_PENDING;
}
+ case IOCTL_DISK_GET_DRIVE_GEOMETRY:
case IOCTL_CDROM_GET_DRIVE_GEOMETRY: {
DebugPrint((2,"CdRomDeviceControl: Get drive geometry\n"));
if ( irpStack->Parameters.DeviceIoControl.OutputBufferLength <
sizeof( DISK_GEOMETRY ) ) {
+
+ status = STATUS_INFO_LENGTH_MISMATCH;
+ break;
+ }
+
+ IoMarkIrpPending(Irp);
+ IoStartPacket(DeviceObject,Irp, NULL,NULL);
+
+ return STATUS_PENDING;
+ }
+
+ case IOCTL_DISK_GET_DRIVE_GEOMETRY_EX:
+ case IOCTL_CDROM_GET_DRIVE_GEOMETRY_EX: {
+
+ DebugPrint((2,"CdRomDeviceControl: Get drive geometry ex\n"));
+
+ if ( irpStack->Parameters.DeviceIoControl.OutputBufferLength <
+ sizeof( DISK_GEOMETRY_EX ) ) {
+
+ status = STATUS_INFO_LENGTH_MISMATCH;
+ break;
+ }
+
+ IoMarkIrpPending(Irp);
+ IoStartPacket(DeviceObject,Irp, NULL,NULL);
+
+ return STATUS_PENDING;
+ }
+
+ case IOCTL_DISK_GET_LENGTH_INFO: {
+
+ DebugPrint((2,"CdRomDeviceControl: Get length info\n"));
+
+ if ( irpStack->Parameters.DeviceIoControl.OutputBufferLength <
+ sizeof( GET_LENGTH_INFORMATION ) ) {
status = STATUS_INFO_LENGTH_MISMATCH;
break;