2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: drivers/filesystems/cdfs/devctrl.c
5 * PURPOSE: CDROM (ISO 9660) filesystem driver
6 * PROGRAMMER: Pierre Schweitzer
10 /* INCLUDES *****************************************************************/
17 /* FUNCTIONS ****************************************************************/
20 CdfsDeviceControl(PDEVICE_OBJECT DeviceObject
,
25 PFILE_OBJECT FileObject
;
26 PIO_STACK_LOCATION Stack
= IoGetCurrentIrpStackLocation(Irp
);
28 FileObject
= Stack
->FileObject
;
29 Irp
->IoStatus
.Information
= 0;
31 /* FIXME: HACK, it means that CD has changed */
34 DPRINT1("FIXME: CdfsDeviceControl called without FileObject!\n");
35 Irp
->IoStatus
.Status
= STATUS_INVALID_DEVICE_REQUEST
;
36 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
37 return STATUS_INVALID_DEVICE_REQUEST
;
40 /* Only support such operations on volume */
41 if (!(FileObject
->RelatedFileObject
== NULL
|| FileObject
->RelatedFileObject
->FsContext2
!= NULL
))
43 Irp
->IoStatus
.Status
= STATUS_INVALID_PARAMETER
;
44 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
45 return STATUS_INVALID_PARAMETER
;
48 if (Stack
->Parameters
.DeviceIoControl
.IoControlCode
== IOCTL_CDROM_DISK_TYPE
)
50 /* We should handle this one, but we don't! */
51 Status
= STATUS_NOT_IMPLEMENTED
;
52 Irp
->IoStatus
.Status
= Status
;
53 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
57 /* Pass it to storage driver */
58 IoSkipCurrentIrpStackLocation(Irp
);
59 Vcb
= (PVCB
)Stack
->DeviceObject
->DeviceExtension
;
60 Status
= IoCallDriver(Vcb
->StorageDevice
, Irp
);