- Update to r53061
[reactos.git] / drivers / filesystems / cdfs / cdfs.c
index a0c98ba..172282e 100644 (file)
@@ -1,30 +1,30 @@
 /*
- *  ReactOS kernel
- *  Copyright (C) 2002, 2003 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
+*  ReactOS kernel
+*  Copyright (C) 2002, 2003 ReactOS Team
+*
+*  This program is free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  This program is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  You should have received a copy of the GNU General Public License along
+*  with this program; if not, write to the Free Software Foundation, Inc.,
+*  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
 /* $Id$
- *
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * FILE:             drivers/fs/cdfs/cdfs.c
- * PURPOSE:          CDROM (ISO 9660) filesystem driver
- * PROGRAMMER:       Art Yerkes
- *                   Eric Kohl
- */
+*
+* COPYRIGHT:        See COPYING in the top level directory
+* PROJECT:          ReactOS kernel
+* FILE:             drivers/fs/cdfs/cdfs.c
+* PURPOSE:          CDROM (ISO 9660) filesystem driver
+* PROGRAMMER:       Art Yerkes
+*                   Eric Kohl
+*/
 
 /* INCLUDES *****************************************************************/
 
@@ -40,74 +40,78 @@ PCDFS_GLOBAL_DATA CdfsGlobalData;
 
 /* FUNCTIONS ****************************************************************/
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 DriverEntry(PDRIVER_OBJECT DriverObject,
-           PUNICODE_STRING RegistryPath)
-/*
- * FUNCTION: Called by the system to initalize the driver
- * ARGUMENTS:
- *           DriverObject = object describing this driver
- *           RegistryPath = path to our configuration entries
- * RETURNS: Success or failure
- */
+            PUNICODE_STRING RegistryPath)
+            /*
           * FUNCTION: Called by the system to initalize the driver
           * ARGUMENTS:
           *           DriverObject = object describing this driver
           *           RegistryPath = path to our configuration entries
           * RETURNS: Success or failure
           */
 {
-  PDEVICE_OBJECT DeviceObject;
-  NTSTATUS Status;
-  UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Cdfs");
-
-  DPRINT("CDFS 0.0.3\n");
-
-  Status = IoCreateDevice(DriverObject,
-                         sizeof(CDFS_GLOBAL_DATA),
-                         &DeviceName,
-                         FILE_DEVICE_CD_ROM_FILE_SYSTEM,
-                         0,
-                         FALSE,
-                         &DeviceObject);
-  if (!NT_SUCCESS(Status))
+    PDEVICE_OBJECT DeviceObject;
+    NTSTATUS Status;
+    UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Cdfs");
+
+    DPRINT("CDFS 0.0.3\n");
+
+    Status = IoCreateDevice(DriverObject,
+        sizeof(CDFS_GLOBAL_DATA),
+        &DeviceName,
+        FILE_DEVICE_CD_ROM_FILE_SYSTEM,
+        0,
+        FALSE,
+        &DeviceObject);
+    if (!NT_SUCCESS(Status))
     {
-      return(Status);
+        return(Status);
     }
 
-  /* Initialize global data */
-  CdfsGlobalData = DeviceObject->DeviceExtension;
-  RtlZeroMemory(CdfsGlobalData,
-               sizeof(CDFS_GLOBAL_DATA));
-  CdfsGlobalData->DriverObject = DriverObject;
-  CdfsGlobalData->DeviceObject = DeviceObject;
-
-  /* Initialize driver data */
-  DeviceObject->Flags = DO_DIRECT_IO;
-  DriverObject->MajorFunction[IRP_MJ_CLOSE] = CdfsClose;
-  DriverObject->MajorFunction[IRP_MJ_CLEANUP] = CdfsCleanup;
-  DriverObject->MajorFunction[IRP_MJ_CREATE] = CdfsCreate;
-  DriverObject->MajorFunction[IRP_MJ_READ] = CdfsRead;
-  DriverObject->MajorFunction[IRP_MJ_WRITE] = CdfsWrite;
-  DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] =
-    CdfsFileSystemControl;
-  DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] =
-    CdfsDirectoryControl;
-  DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] =
-    CdfsQueryInformation;
-  DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] =
-    CdfsSetInformation;
-  DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] =
-    CdfsQueryVolumeInformation;
-  DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] =
-    CdfsSetVolumeInformation;
-
-  DriverObject->DriverUnload = NULL;
-
-   /* Cache manager */
-  CdfsGlobalData->CacheMgrCallbacks.AcquireForLazyWrite = CdfsAcquireForLazyWrite;
-  CdfsGlobalData->CacheMgrCallbacks.ReleaseFromLazyWrite = CdfsReleaseFromLazyWrite;
-  CdfsGlobalData->CacheMgrCallbacks.AcquireForReadAhead = CdfsAcquireForLazyWrite;
-  CdfsGlobalData->CacheMgrCallbacks.ReleaseFromReadAhead = CdfsReleaseFromLazyWrite;
-
-  IoRegisterFileSystem(DeviceObject);
-  DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
-
-  return(STATUS_SUCCESS);
+    /* Initialize global data */
+    CdfsGlobalData = DeviceObject->DeviceExtension;
+    RtlZeroMemory(CdfsGlobalData,
+        sizeof(CDFS_GLOBAL_DATA));
+    CdfsGlobalData->DriverObject = DriverObject;
+    CdfsGlobalData->DeviceObject = DeviceObject;
+
+    /* Initialize driver data */
+    DeviceObject->Flags = DO_DIRECT_IO;
+    DriverObject->MajorFunction[IRP_MJ_CLOSE] = CdfsClose;
+    DriverObject->MajorFunction[IRP_MJ_CLEANUP] = CdfsCleanup;
+    DriverObject->MajorFunction[IRP_MJ_CREATE] = CdfsCreate;
+    DriverObject->MajorFunction[IRP_MJ_READ] = CdfsRead;
+    DriverObject->MajorFunction[IRP_MJ_WRITE] = CdfsWrite;
+    DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] =
+        CdfsFileSystemControl;
+    DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] =
+        CdfsDirectoryControl;
+    DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] =
+        CdfsQueryInformation;
+    DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] =
+        CdfsSetInformation;
+    DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] =
+        CdfsQueryVolumeInformation;
+    DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] =
+        CdfsSetVolumeInformation;
+    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] =
+        CdfsDeviceControl;
+
+    DriverObject->DriverUnload = NULL;
+
+    /* Cache manager */
+    CdfsGlobalData->CacheMgrCallbacks.AcquireForLazyWrite = CdfsAcquireForLazyWrite;
+    CdfsGlobalData->CacheMgrCallbacks.ReleaseFromLazyWrite = CdfsReleaseFromLazyWrite;
+    CdfsGlobalData->CacheMgrCallbacks.AcquireForReadAhead = CdfsAcquireForLazyWrite;
+    CdfsGlobalData->CacheMgrCallbacks.ReleaseFromReadAhead = CdfsReleaseFromLazyWrite;
+
+    DeviceObject->Flags |= DO_LOW_PRIORITY_FILESYSTEM;
+
+    IoRegisterFileSystem(DeviceObject);
+    DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+
+    return(STATUS_SUCCESS);
 }
 
 
@@ -115,24 +119,24 @@ BOOLEAN NTAPI
 CdfsAcquireForLazyWrite(IN PVOID Context,
                         IN BOOLEAN Wait)
 {
-       PFCB Fcb = (PFCB)Context;
-       ASSERT(Fcb);
-       DPRINT("CdfsAcquireForLazyWrite(): Fcb %p\n", Fcb);
-
-       if (!ExAcquireResourceExclusiveLite(&(Fcb->MainResource), Wait))
-       {
-               DPRINT("CdfsAcquireForLazyWrite(): ExReleaseResourceLite failed.\n");
-               return FALSE;
-       }
-       return TRUE;
+    PFCB Fcb = (PFCB)Context;
+    ASSERT(Fcb);
+    DPRINT("CdfsAcquireForLazyWrite(): Fcb %p\n", Fcb);
+
+    if (!ExAcquireResourceExclusiveLite(&(Fcb->MainResource), Wait))
+    {
+        DPRINT("CdfsAcquireForLazyWrite(): ExReleaseResourceLite failed.\n");
+        return FALSE;
+    }
+    return TRUE;
 }
 
 VOID NTAPI
 CdfsReleaseFromLazyWrite(IN PVOID Context)
 {
-       PFCB Fcb = (PFCB)Context;
-       ASSERT(Fcb);
-       DPRINT("CdfsReleaseFromLazyWrite(): Fcb %p\n", Fcb);
+    PFCB Fcb = (PFCB)Context;
+    ASSERT(Fcb);
+    DPRINT("CdfsReleaseFromLazyWrite(): Fcb %p\n", Fcb);
 
-       ExReleaseResourceLite(&(Fcb->MainResource));
+    ExReleaseResourceLite(&(Fcb->MainResource));
 }