[CDFS_NEW] Following 1bef487, add a hack and stub FastIO write routine to avoid bugch...
authorPierre Schweitzer <pierre@reactos.org>
Sun, 12 Nov 2017 20:16:31 +0000 (21:16 +0100)
committerPierre Schweitzer <pierre@reactos.org>
Sun, 12 Nov 2017 20:16:31 +0000 (21:16 +0100)
This allows booting the ReactOS LiveCD as HDD image in Qemu without issues :-)

drivers/filesystems/cdfs_new/cdinit.c

index b6bec14..1f086fe 100755 (executable)
@@ -58,6 +58,29 @@ CdShutdown (
 #pragma alloc_text(INIT, CdInitializeGlobalData)
 #endif
 
+#ifdef __REACTOS__
+
+//
+// Stub for CcWrite, this is a hack
+//
+BOOLEAN
+NTAPI
+CdFastIoWrite (
+    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)
+{
+    ASSERT(FALSE);
+    return FALSE;
+}
+
+#endif
+
 \f
 //
 //  Local support routine
@@ -342,6 +365,19 @@ Return Value:
     CdFastIoDispatch.SizeOfFastIoDispatch =    sizeof(FAST_IO_DISPATCH);
     CdFastIoDispatch.FastIoCheckIfPossible =   CdFastIoCheckIfPossible;  //  CheckForFastIo
     CdFastIoDispatch.FastIoRead =              FsRtlCopyRead;            //  Read
+#ifdef __REACTOS__
+
+    //
+    // Add a stub for CdFastIoWrite. This is a hack required because
+    // our current implementation of NtWriteFile won't validate
+    // access granted to files opened. And some applications may attempt
+    // to write to a file. In case it is cached, the kernel will null-dereference
+    // the fastIO routine, trying to call it.
+    // FIXME: remove once NtWriteFile got fixed!
+    //
+
+    CdFastIoDispatch.FastIoWrite =             CdFastIoWrite;            // Write
+#endif
     CdFastIoDispatch.FastIoQueryBasicInfo =    CdFastQueryBasicInfo;     //  QueryBasicInfo
     CdFastIoDispatch.FastIoQueryStandardInfo = CdFastQueryStdInfo;       //  QueryStandardInfo
     CdFastIoDispatch.FastIoLock =              CdFastLock;               //  Lock