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/cdrom/cdrom.c?rev=69418&r1=69417&r2=69418&view=diff ============================================================================== --- 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;