mirror of
https://github.com/reactos/reactos.git
synced 2024-12-26 17:14:41 +00:00
Implemented IOCTL_CDROM_GET_DRIVE_GEOMETRY.
Some fixes to enable mounting of cdroms. svn path=/trunk/; revision=2838
This commit is contained in:
parent
62b86daaf8
commit
f1bc2201f0
4 changed files with 52 additions and 3 deletions
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: atapi.c,v 1.18 2002/03/25 21:54:41 ekohl Exp $
|
||||
/* $Id: atapi.c,v 1.19 2002/04/10 17:01:47 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS ATAPI miniport driver
|
||||
|
@ -2003,6 +2003,7 @@ AtapiErrorToScsi(PVOID DeviceExtension,
|
|||
DPRINT1("IDE error: %02x\n", ErrorReg);
|
||||
|
||||
ScsiStatus = 0;
|
||||
SrbStatus = SRB_STATUS_ERROR;
|
||||
|
||||
#if 0
|
||||
UCHAR SectorCount, SectorNum, CylinderLow, CylinderHigh;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: cdrom.c,v 1.7 2002/03/25 21:56:19 ekohl Exp $
|
||||
/* $Id: cdrom.c,v 1.8 2002/04/10 17:02:22 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -467,6 +467,7 @@ CdromClassCreateDeviceObject(IN PDRIVER_OBJECT DriverObject,
|
|||
{
|
||||
/* Set ISO9660 defaults */
|
||||
DiskDeviceExtension->DiskGeometry->BytesPerSector = 2048;
|
||||
DiskDeviceExtension->DiskGeometry->MediaType = RemovableMedia;
|
||||
DiskDeviceExtension->SectorShift = 11;
|
||||
DiskDeviceExtension->PartitionLength.QuadPart = (ULONGLONG)0x7fffffff;
|
||||
}
|
||||
|
@ -526,6 +527,31 @@ CdromClassDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
|||
|
||||
switch (ControlCode)
|
||||
{
|
||||
case IOCTL_CDROM_GET_DRIVE_GEOMETRY:
|
||||
DPRINT1("IOCTL_CDROM_GET_DRIVE_GEOMETRY\n");
|
||||
if (IrpStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(DISK_GEOMETRY))
|
||||
{
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
else if (DeviceExtension->DiskGeometry == NULL)
|
||||
{
|
||||
DPRINT1("No cdrom geometry available!\n");
|
||||
Status = STATUS_NO_SUCH_DEVICE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PDISK_GEOMETRY Geometry;
|
||||
|
||||
Geometry = (PDISK_GEOMETRY) Irp->AssociatedIrp.SystemBuffer;
|
||||
RtlMoveMemory(Geometry,
|
||||
DeviceExtension->DiskGeometry,
|
||||
sizeof(DISK_GEOMETRY));
|
||||
|
||||
Status = STATUS_SUCCESS;
|
||||
Information = sizeof(DISK_GEOMETRY);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
DPRINT1("Unhandled control code: %lx\n", ControlCode);
|
||||
Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: ntddk.h,v 1.26 2002/01/14 01:41:08 ekohl Exp $
|
||||
/* $Id: ntddk.h,v 1.27 2002/04/10 17:01:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -26,6 +26,7 @@ extern "C"
|
|||
|
||||
#include <ntos/types.h>
|
||||
#include <ntos/time.h>
|
||||
#include <ntos/cdrom.h>
|
||||
#include <ntos/disk.h>
|
||||
#include <ntos/registry.h>
|
||||
#include <ntos/port.h>
|
||||
|
|
21
reactos/include/ntos/cdrom.h
Normal file
21
reactos/include/ntos/cdrom.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* $Id: cdrom.h,v 1.1 2002/04/10 17:00:52 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: include/ntos/cdrom.h
|
||||
* PURPOSE: CD-ROM related definitions used by all the parts of the system
|
||||
* PROGRAMMER: Eric Kohl <ekohl@rz-online.de>
|
||||
* UPDATE HISTORY:
|
||||
* 10/04/2002: Created
|
||||
*/
|
||||
|
||||
#ifndef __INCLUDE_NTOS_CDROM_H
|
||||
#define __INCLUDE_NTOS_CDROM_H
|
||||
|
||||
|
||||
#define IOCTL_CDROM_GET_DRIVE_GEOMETRY CTL_CODE(FILE_DEVICE_CD_ROM, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
|
||||
|
||||
|
||||
#endif /* __INCLUDE_NTOS_CDROM_H */
|
||||
|
||||
/* EOF */
|
Loading…
Reference in a new issue