[BLUE][CDFS]
authorThomas Faber <thomas.faber@reactos.org>
Fri, 1 May 2015 13:56:37 +0000 (13:56 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Fri, 1 May 2015 13:56:37 +0000 (13:56 +0000)
- Arch, don't assume the driver you see in the backtrace is one that needs fixing. CDFS is the one who's a file system driver here...

svn path=/trunk/; revision=67496

reactos/drivers/filesystems/cdfs/cdfs.c
reactos/drivers/filesystems/cdfs/cdfs.h
reactos/drivers/setup/blue/blue.c

index 9a7662d..9faa5a1 100644 (file)
@@ -99,6 +99,10 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
     DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] =
         CdfsDeviceControl;
 
+    CdfsGlobalData->FastIoDispatch.FastIoRead = CdfsFastIoRead;
+    CdfsGlobalData->FastIoDispatch.FastIoWrite = CdfsFastIoWrite;
+    DriverObject->FastIoDispatch = &CdfsGlobalData->FastIoDispatch;
+
     DriverObject->DriverUnload = NULL;
 
     /* Cache manager */
@@ -141,3 +145,49 @@ CdfsReleaseFromLazyWrite(IN PVOID Context)
 
     ExReleaseResourceLite(&(Fcb->MainResource));
 }
+
+BOOLEAN
+NTAPI
+CdfsFastIoRead(
+    _In_ PFILE_OBJECT FileObject,
+    _In_ PLARGE_INTEGER FileOffset,
+    _In_ ULONG Length,
+    _In_ BOOLEAN Wait,
+    _In_ ULONG LockKey,
+    _Out_ PVOID Buffer,
+    _Out_ PIO_STATUS_BLOCK IoStatus,
+    _In_ PDEVICE_OBJECT DeviceObject)
+{
+    DBG_UNREFERENCED_PARAMETER(FileObject);
+    DBG_UNREFERENCED_PARAMETER(FileOffset);
+    DBG_UNREFERENCED_PARAMETER(Length);
+    DBG_UNREFERENCED_PARAMETER(Wait);
+    DBG_UNREFERENCED_PARAMETER(LockKey);
+    DBG_UNREFERENCED_PARAMETER(Buffer);
+    DBG_UNREFERENCED_PARAMETER(IoStatus);
+    DBG_UNREFERENCED_PARAMETER(DeviceObject);
+    return FALSE;
+}
+
+BOOLEAN
+NTAPI
+CdfsFastIoWrite(
+    _In_ PFILE_OBJECT FileObject,
+    _In_ PLARGE_INTEGER FileOffset,
+    _In_ ULONG Length,
+    _In_ BOOLEAN Wait,
+    _In_ ULONG LockKey,
+    _In_ PVOID Buffer,
+    _Out_ PIO_STATUS_BLOCK IoStatus,
+    _In_ PDEVICE_OBJECT DeviceObject)
+{
+    DBG_UNREFERENCED_PARAMETER(FileObject);
+    DBG_UNREFERENCED_PARAMETER(FileOffset);
+    DBG_UNREFERENCED_PARAMETER(Length);
+    DBG_UNREFERENCED_PARAMETER(Wait);
+    DBG_UNREFERENCED_PARAMETER(LockKey);
+    DBG_UNREFERENCED_PARAMETER(Buffer);
+    DBG_UNREFERENCED_PARAMETER(IoStatus);
+    DBG_UNREFERENCED_PARAMETER(DeviceObject);
+    return FALSE;
+}
index fd4fd3a..67ce0f3 100644 (file)
@@ -174,7 +174,7 @@ typedef struct
 
 #define MAX_PATH                260
 
-typedef struct _CDFS_SHORT_NAME 
+typedef struct _CDFS_SHORT_NAME
 {
     LIST_ENTRY Entry;
     LARGE_INTEGER StreamOffset;
@@ -244,6 +244,7 @@ typedef struct
   PDEVICE_OBJECT DeviceObject;
   ULONG Flags;
   CACHE_MANAGER_CALLBACKS CacheMgrCallbacks;
+  FAST_IO_DISPATCH FastIoDispatch;
 } CDFS_GLOBAL_DATA, *PCDFS_GLOBAL_DATA;
 
 extern PCDFS_GLOBAL_DATA CdfsGlobalData;
@@ -429,9 +430,9 @@ CdfsFileFlagsToAttributes(PFCB Fcb,
 
 VOID
 CdfsShortNameCacheGet
-(PFCB DirectoryFcb, 
- PLARGE_INTEGER StreamOffset, 
- PUNICODE_STRING LongName, 
+(PFCB DirectoryFcb,
+ PLARGE_INTEGER StreamOffset,
+ PUNICODE_STRING LongName,
  PUNICODE_STRING ShortName);
 
 /* rw.c */
@@ -480,4 +481,7 @@ CdfsAcquireForLazyWrite(IN PVOID Context,
 VOID NTAPI
 CdfsReleaseFromLazyWrite(IN PVOID Context);
 
+FAST_IO_READ CdfsFastIoRead;
+FAST_IO_WRITE CdfsFastIoWrite;
+
 #endif /* CDFS_H */
index e15db5f..be94f75 100644 (file)
@@ -88,8 +88,6 @@ static const UCHAR DefaultPalette[] =
    0xFF, 0xFF, 0xFF
 };
 
-static FAST_IO_DISPATCH ScrFastIoDispatch;
-
 /* FUNCTIONS **************************************************************/
 
 static VOID FASTCALL
@@ -794,82 +792,6 @@ ScrIoControl(PDEVICE_OBJECT DeviceObject,
   return Status;
 }
 
-static DRIVER_DISPATCH ScrDispatch;
-static NTSTATUS NTAPI
-ScrDispatch(PDEVICE_OBJECT DeviceObject,
-        PIRP Irp)
-{
-    PIO_STACK_LOCATION stk = IoGetCurrentIrpStackLocation(Irp);
-    NTSTATUS Status;
-
-    switch (stk->MajorFunction)
-    {
-        case IRP_MJ_CLOSE:
-            Status = STATUS_SUCCESS;
-            break;
-
-        default:
-            Status = STATUS_NOT_IMPLEMENTED;
-            break;
-    }
-
-
-    Irp->IoStatus.Status = Status;
-    IoCompleteRequest (Irp, IO_NO_INCREMENT);
-
-    return (Status);
-}
-
-static FAST_IO_READ ScrFastIoRead;
-static
-BOOLEAN
-NTAPI
-ScrFastIoRead(
-    _In_ PFILE_OBJECT FileObject,
-    _In_ PLARGE_INTEGER FileOffset,
-    _In_ ULONG Length,
-    _In_ BOOLEAN Wait,
-    _In_ ULONG LockKey,
-    _Out_ PVOID Buffer,
-    _Out_ PIO_STATUS_BLOCK IoStatus,
-    _In_ PDEVICE_OBJECT DeviceObject)
-{
-    DBG_UNREFERENCED_PARAMETER(FileObject);
-    DBG_UNREFERENCED_PARAMETER(FileOffset);
-    DBG_UNREFERENCED_PARAMETER(Length);
-    DBG_UNREFERENCED_PARAMETER(Wait);
-    DBG_UNREFERENCED_PARAMETER(LockKey);
-    DBG_UNREFERENCED_PARAMETER(Buffer);
-    DBG_UNREFERENCED_PARAMETER(IoStatus);
-    DBG_UNREFERENCED_PARAMETER(DeviceObject);
-    return FALSE;
-}
-
-static FAST_IO_WRITE ScrFastIoWrite;
-static
-BOOLEAN
-NTAPI
-ScrFastIoWrite(
-    _In_ PFILE_OBJECT FileObject,
-    _In_ PLARGE_INTEGER FileOffset,
-    _In_ ULONG Length,
-    _In_ BOOLEAN Wait,
-    _In_ ULONG LockKey,
-    _In_ PVOID Buffer,
-    _Out_ PIO_STATUS_BLOCK IoStatus,
-    _In_ PDEVICE_OBJECT DeviceObject)
-{
-    DBG_UNREFERENCED_PARAMETER(FileObject);
-    DBG_UNREFERENCED_PARAMETER(FileOffset);
-    DBG_UNREFERENCED_PARAMETER(Length);
-    DBG_UNREFERENCED_PARAMETER(Wait);
-    DBG_UNREFERENCED_PARAMETER(LockKey);
-    DBG_UNREFERENCED_PARAMETER(Buffer);
-    DBG_UNREFERENCED_PARAMETER(IoStatus);
-    DBG_UNREFERENCED_PARAMETER(DeviceObject);
-    return FALSE;
-}
-
 /*
  * Module entry point
  */
@@ -889,10 +811,6 @@ DriverEntry (PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
     DriverObject->MajorFunction[IRP_MJ_WRITE]  = ScrWrite;
     DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL ] = ScrIoControl;
 
-    ScrFastIoDispatch.FastIoRead = ScrFastIoRead;
-    ScrFastIoDispatch.FastIoWrite = ScrFastIoWrite;
-    DriverObject->FastIoDispatch = &ScrFastIoDispatch;
-
     Status = IoCreateDevice (DriverObject,
                              sizeof(DEVICE_EXTENSION),
                              &DeviceName,