Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygendevctrl.c
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS kernel 00004 * FILE: drivers/filesystems/cdfs/devctrl.c 00005 * PURPOSE: CDROM (ISO 9660) filesystem driver 00006 * PROGRAMMER: Pierre Schweitzer 00007 * 00008 */ 00009 00010 /* INCLUDES *****************************************************************/ 00011 00012 #include "cdfs.h" 00013 00014 #define NDEBUG 00015 #include <debug.h> 00016 00017 /* FUNCTIONS ****************************************************************/ 00018 00019 NTSTATUS NTAPI 00020 CdfsDeviceControl(PDEVICE_OBJECT DeviceObject, 00021 PIRP Irp) 00022 { 00023 NTSTATUS Status; 00024 PVCB Vcb = NULL; 00025 PFILE_OBJECT FileObject; 00026 PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp); 00027 00028 FileObject = Stack->FileObject; 00029 Irp->IoStatus.Information = 0; 00030 00031 /* FIXME: HACK, it means that CD has changed */ 00032 if (!FileObject) 00033 { 00034 DPRINT1("FIXME: CdfsDeviceControl called without FileObject!\n"); 00035 Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; 00036 IoCompleteRequest(Irp, IO_NO_INCREMENT); 00037 return STATUS_INVALID_DEVICE_REQUEST; 00038 } 00039 00040 /* Only support such operations on volume */ 00041 if (!(FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL)) 00042 { 00043 Irp->IoStatus.Status = STATUS_INVALID_PARAMETER; 00044 IoCompleteRequest(Irp, IO_NO_INCREMENT); 00045 return STATUS_INVALID_PARAMETER; 00046 } 00047 00048 if (Stack->Parameters.DeviceIoControl.IoControlCode == IOCTL_CDROM_DISK_TYPE) 00049 { 00050 /* We should handle this one, but we don't! */ 00051 Status = STATUS_NOT_IMPLEMENTED; 00052 Irp->IoStatus.Status = Status; 00053 IoCompleteRequest(Irp, IO_NO_INCREMENT); 00054 } 00055 else 00056 { 00057 /* Pass it to storage driver */ 00058 IoSkipCurrentIrpStackLocation(Irp); 00059 Vcb = (PVCB)Stack->DeviceObject->DeviceExtension; 00060 Status = IoCallDriver(Vcb->StorageDevice, Irp); 00061 } 00062 00063 return Status; 00064 } Generated on Sat May 26 2012 04:26:04 for ReactOS by
1.7.6.1
|