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 UNREFERENCED_PARAMETER(DeviceObject
);
30 FileObject
= Stack
->FileObject
;
31 Irp
->IoStatus
.Information
= 0;
33 /* FIXME: HACK, it means that CD has changed */
36 DPRINT1("FIXME: CdfsDeviceControl called without FileObject!\n");
37 Irp
->IoStatus
.Status
= STATUS_INVALID_DEVICE_REQUEST
;
38 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
39 return STATUS_INVALID_DEVICE_REQUEST
;
42 /* Only support such operations on volume */
43 if (!(FileObject
->RelatedFileObject
== NULL
|| FileObject
->RelatedFileObject
->FsContext2
!= NULL
))
45 Irp
->IoStatus
.Status
= STATUS_INVALID_PARAMETER
;
46 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
47 return STATUS_INVALID_PARAMETER
;
50 if (Stack
->Parameters
.DeviceIoControl
.IoControlCode
== IOCTL_CDROM_DISK_TYPE
)
52 /* We should handle this one, but we don't! */
53 Status
= STATUS_NOT_IMPLEMENTED
;
54 Irp
->IoStatus
.Status
= Status
;
55 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
59 /* Pass it to storage driver */
60 IoSkipCurrentIrpStackLocation(Irp
);
61 Vcb
= (PVCB
)Stack
->DeviceObject
->DeviceExtension
;
62 Status
= IoCallDriver(Vcb
->StorageDevice
, Irp
);