[CDFS_NEW] Re-apply many of the reactos-specific changes and fix build.
authorDavid Quintana <gigaherz@gmail.com>
Thu, 23 Nov 2017 20:05:28 +0000 (21:05 +0100)
committerPierre Schweitzer <pierre@reactos.org>
Sat, 25 Nov 2017 12:36:47 +0000 (13:36 +0100)
- Also, get rid of the old diff file.

32 files changed:
drivers/filesystems/cdfs_new/allocsup.c
drivers/filesystems/cdfs_new/cachesup.c
drivers/filesystems/cdfs_new/cddata.c
drivers/filesystems/cdfs_new/cdinit.c
drivers/filesystems/cdfs_new/cdprocs.h
drivers/filesystems/cdfs_new/cdstruc.h
drivers/filesystems/cdfs_new/cleanup.c
drivers/filesystems/cdfs_new/close.c
drivers/filesystems/cdfs_new/create.c
drivers/filesystems/cdfs_new/devctrl.c
drivers/filesystems/cdfs_new/deviosup.c
drivers/filesystems/cdfs_new/dirctrl.c
drivers/filesystems/cdfs_new/dirsup.c
drivers/filesystems/cdfs_new/fieldoff.c
drivers/filesystems/cdfs_new/fileinfo.c
drivers/filesystems/cdfs_new/filobsup.c
drivers/filesystems/cdfs_new/fsctrl.c
drivers/filesystems/cdfs_new/fspdisp.c
drivers/filesystems/cdfs_new/lockctrl.c
drivers/filesystems/cdfs_new/namesup.c
drivers/filesystems/cdfs_new/pathsup.c
drivers/filesystems/cdfs_new/pnp.c
drivers/filesystems/cdfs_new/prefxsup.c
drivers/filesystems/cdfs_new/read.c
drivers/filesystems/cdfs_new/resrcsup.c
drivers/filesystems/cdfs_new/shutdown.c
drivers/filesystems/cdfs_new/strucsup.c
drivers/filesystems/cdfs_new/verfysup.c
drivers/filesystems/cdfs_new/volinfo.c
drivers/filesystems/cdfs_new/wdk_wnet_to_ros.diff [deleted file]
drivers/filesystems/cdfs_new/workque.c
drivers/filesystems/cdfs_new/write.c

index 6a92817..44a3301 100755 (executable)
@@ -44,7 +44,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -86,8 +86,10 @@ CdDiskOffsetFromMcbEntry (
 \f
 _Requires_lock_held_(_Global_critical_region_)
 VOID
+#ifdef _MSC_VER
 // PREFast currently has no way to express the Fcb==Fcb->Vcb->VolumeDasdFcb early return
 #pragma warning(suppress: 6001 6101) 
+#endif
 CdLookupAllocation (
     _In_ PIRP_CONTEXT IrpContext,
     _In_ PFCB Fcb,
@@ -164,7 +166,7 @@ Return Value:
     //  Use a try finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  We use a loop to perform the lookup.  If we don't find the mapping in the
@@ -308,7 +310,7 @@ Return Value:
             FirstPass = FALSE;
         }
 
-    } finally {
+    } _SEH2_FINALLY {
 
         if (CleanupParent) {
 
@@ -323,7 +325,7 @@ Return Value:
         }
 
         if (UnlockFcb) { CdUnlockFcb( IrpContext, Fcb ); }
-    }
+    } _SEH2_END;
 
     return;
 }
index eea1fd2..37ac744 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -95,7 +95,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Create the internal stream.  The Vpb should be pointing at our volume
@@ -281,7 +281,7 @@ Return Value:
             }
         }
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Cleanup any dirent structures we may have used.
@@ -323,7 +323,7 @@ Return Value:
         }
 
         CdUnlockFcb( IrpContext, Fcb );
-    }
+    } _SEH2_END;
 
     return;
 }
index 15cfe2d..ff2c61c 100755 (executable)
@@ -17,7 +17,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 #ifdef CD_SANITY
 BOOLEAN CdTestTopLevel = TRUE;
@@ -287,7 +287,7 @@ Return Value:
         //  Use a try-except to handle the exception cases.
         //
 
-        try {
+        _SEH2_TRY {
 
             //
             //  If the IrpContext is NULL then this is the first pass through
@@ -436,10 +436,10 @@ Return Value:
                 CdCompleteRequest( IrpContext, Irp, Status );
             }
 
-        } except( CdExceptionFilter( IrpContext, GetExceptionInformation() )) {
+        } _SEH2_EXCEPT( CdExceptionFilter( IrpContext, _SEH2_GetExceptionInformation() )) {
 
-            Status = CdProcessException( IrpContext, Irp, GetExceptionCode() );
-        }
+            Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
+        } _SEH2_END;
 
     } while (Status == STATUS_CANT_WAIT);
 
@@ -597,7 +597,9 @@ Return Value:
 
     if (TestStatus && !FsRtlIsNtstatusExpected( ExceptionCode )) {
 
-#pragma prefast( suppress: __WARNING_USE_OTHER_FUNCTION, "We're corrupted." )    
+#ifdef _MSC_VER
+#pragma prefast( suppress: __WARNING_USE_OTHER_FUNCTION, "We're corrupted." )
+#endif
         CdBugCheck( (ULONG_PTR) ExceptionPointer->ExceptionRecord,
                     (ULONG_PTR) ExceptionPointer->ContextRecord,
                     (ULONG_PTR) ExceptionPointer->ExceptionRecord->ExceptionAddress );
@@ -686,7 +688,7 @@ Return Value:
     //  Note that (children of) CdFsdPostRequest can raise (Mdl allocation).
     //
 
-    try {
+    _SEH2_TRY {
 
         if (ExceptionCode == STATUS_CANT_WAIT) {
 
@@ -702,11 +704,10 @@ Return Value:
             ExceptionCode = CdFsdPostRequest( IrpContext, Irp );
         }
     }
-    except( CdExceptionFilter( IrpContext, GetExceptionInformation() ))  {
-    
-        ExceptionCode = GetExceptionCode();        
-    }
+    _SEH2_EXCEPT( CdExceptionFilter( IrpContext, _SEH2_GetExceptionInformation() ))  {
     
+        ExceptionCode = _SEH2_GetExceptionCode();        
+    } _SEH2_END;
     //
     //  If we posted the request or our caller will retry then just return here.
     //
@@ -1009,6 +1010,10 @@ Return Value:
 
 {
     PTHREAD_CONTEXT CurrentThreadContext;
+#ifdef __REACTOS__
+    ULONG_PTR StackTop;
+    ULONG_PTR StackBottom;
+#endif
 
     PAGED_CODE();
 
@@ -1040,9 +1045,21 @@ Return Value:
     //  If this is not a valid Cdfs context then use the input thread
     //  context and store it in the top level context.
     //
+
+#ifdef __REACTOS__
+    IoGetStackLimits( &StackTop, &StackBottom);
+#endif
+
+#ifdef _MSC_VER
 #pragma warning(suppress: 6011) // Bug in PREFast around bitflag operations
+#endif
     if (FlagOn( IrpContext->Flags, IRP_CONTEXT_FLAG_TOP_LEVEL ) ||
+#ifndef __REACTOS__
         (!IoWithinStackLimits( (ULONG_PTR)CurrentThreadContext, sizeof( THREAD_CONTEXT ) ) ||
+#else
+        (((ULONG_PTR) CurrentThreadContext > StackBottom - sizeof( THREAD_CONTEXT )) ||
+         ((ULONG_PTR) CurrentThreadContext <= StackTop) ||
+#endif
          FlagOn( (ULONG_PTR) CurrentThreadContext, 0x3 ) ||
          (CurrentThreadContext->Cdfs != 0x53464443))) {
 
@@ -1073,6 +1090,7 @@ _Function_class_(FAST_IO_CHECK_IF_POSSIBLE)
 _IRQL_requires_same_
 _Success_(return != FALSE)
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFastIoCheckIfPossible (
     _In_ PFILE_OBJECT FileObject,
     _In_ PLARGE_INTEGER FileOffset,
index 5ec9d50..871419a 100755 (executable)
@@ -13,7 +13,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -25,6 +25,7 @@ Abstract:
 DRIVER_INITIALIZE DriverEntry;
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 DriverEntry(
     _In_ PDRIVER_OBJECT DriverObject,
     _In_ PUNICODE_STRING RegistryPath
@@ -35,6 +36,7 @@ DriverEntry(
 DRIVER_UNLOAD CdUnload;
 
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdUnload(
     _In_ PDRIVER_OBJECT DriverObject
     );
@@ -43,6 +45,10 @@ NTSTATUS
 CdInitializeGlobalData (
     _In_ PDRIVER_OBJECT DriverObject,
     _In_ PDEVICE_OBJECT FileSystemDeviceObject
+#ifdef __REACTOS__
+    ,
+    IN PDEVICE_OBJECT HddFileSystemDeviceObject
+#endif
     );
 
 #ifdef ALLOC_PRAGMA
@@ -57,6 +63,7 @@ CdInitializeGlobalData (
 //
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 DriverEntry(
     _In_ PDRIVER_OBJECT DriverObject,
     _In_ PUNICODE_STRING RegistryPath
@@ -86,6 +93,9 @@ Return Value:
     UNICODE_STRING UnicodeString;
     PDEVICE_OBJECT CdfsFileSystemDeviceObject;
     FS_FILTER_CALLBACKS FilterCallbacks;
+#ifdef __REACTOS__
+    PDEVICE_OBJECT HddFileSystemDeviceObject;
+#endif
 
     UNREFERENCED_PARAMETER( RegistryPath );
 
@@ -107,11 +117,34 @@ Return Value:
         return Status;
     }
 
+#ifdef __REACTOS__
+    //
+    // Create the HDD device object.
+    //
+
+    RtlInitUnicodeString( &UnicodeString, L"\\CdfsHdd" );
+
+    Status = IoCreateDevice( DriverObject,
+                             0,
+                             &UnicodeString,
+                             FILE_DEVICE_DISK_FILE_SYSTEM,
+                             0,
+                             FALSE,
+                             &HddFileSystemDeviceObject );
+
+    if (!NT_SUCCESS( Status )) {
+        IoDeleteDevice (CdfsFileSystemDeviceObject);
+        return Status;
+    }
+#endif
+
+#ifdef _MSC_VER
 #pragma prefast(push)
 #pragma prefast(disable: 28155, "the dispatch routine has the correct type, prefast is just being paranoid.")
 #pragma prefast(disable: 28168, "the dispatch routine has the correct type, prefast is just being paranoid.")
 #pragma prefast(disable: 28169, "the dispatch routine has the correct type, prefast is just being paranoid.")
 #pragma prefast(disable: 28175, "we're allowed to change these.")
+#endif
 
     DriverObject->DriverUnload = CdUnload;
 
@@ -143,9 +176,11 @@ Return Value:
     DriverObject->MajorFunction[IRP_MJ_CLEANUP]                 =
     DriverObject->MajorFunction[IRP_MJ_PNP]                     = 
     DriverObject->MajorFunction[IRP_MJ_SHUTDOWN]                = (PDRIVER_DISPATCH) CdFsdDispatch;
+#ifdef _MSC_VER
 #pragma prefast(pop)
 
 #pragma prefast(suppress: 28175, "this is a file system driver, we're allowed to touch FastIoDispatch.")
+#endif
     DriverObject->FastIoDispatch = &CdFastIoDispatch;
 
     //
@@ -164,6 +199,9 @@ Return Value:
     if (!NT_SUCCESS( Status )) {
 
         IoDeleteDevice( CdfsFileSystemDeviceObject );
+#ifdef __REACTOS__
+        IoDeleteDevice (HddFileSystemDeviceObject);
+#endif
         return Status;
     }
 
@@ -171,9 +209,16 @@ Return Value:
     //  Initialize the global data structures
     //
 
+#ifndef __REACTOS__
     Status = CdInitializeGlobalData( DriverObject, CdfsFileSystemDeviceObject );
+#else
+    Status = CdInitializeGlobalData( DriverObject, CdfsFileSystemDeviceObject, HddFileSystemDeviceObject );
+#endif
     if (!NT_SUCCESS (Status)) {
         IoDeleteDevice (CdfsFileSystemDeviceObject);
+#ifdef __REACTOS__
+        IoDeleteDevice (HddFileSystemDeviceObject);
+#endif
         return Status;
     }
 
@@ -184,9 +229,16 @@ Return Value:
     //
 
     CdfsFileSystemDeviceObject->Flags |= DO_LOW_PRIORITY_FILESYSTEM;
+#ifdef __REACTOS__
+    HddFileSystemDeviceObject->Flags |= DO_LOW_PRIORITY_FILESYSTEM;
+#endif
 
     IoRegisterFileSystem( CdfsFileSystemDeviceObject );
     ObReferenceObject (CdfsFileSystemDeviceObject);
+#ifdef __REACTOS__
+    IoRegisterFileSystem( HddFileSystemDeviceObject );
+    ObReferenceObject (HddFileSystemDeviceObject);
+#endif
 
 #ifdef CDFS_TELEMETRY_DATA
     //
@@ -206,6 +258,7 @@ Return Value:
 
 
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdUnload(
     _In_ PDRIVER_OBJECT DriverObject
     )
@@ -245,6 +298,9 @@ Return Value:
     IoFreeWorkItem (CdData.CloseItem);
     ExDeleteResourceLite( &CdData.DataResource );
     ObDereferenceObject (CdData.FileSystemDeviceObject);
+#ifdef __REACTOS__
+    ObDereferenceObject (CdData.HddFileSystemDeviceObject);
+#endif
 }
 \f
 //
@@ -255,6 +311,10 @@ NTSTATUS
 CdInitializeGlobalData (
     _In_ PDRIVER_OBJECT DriverObject,
     _In_ PDEVICE_OBJECT FileSystemDeviceObject
+#ifdef __REACTOS__
+    ,
+    IN PDEVICE_OBJECT HddFileSystemDeviceObject
+#endif
     )
 
 /*++
@@ -284,8 +344,10 @@ Return Value:
 
     CdFastIoDispatch.SizeOfFastIoDispatch =    sizeof(FAST_IO_DISPATCH);
 
+#ifdef _MSC_VER
 #pragma prefast(push)
 #pragma prefast(disable:28155, "these are all correct")
+#endif
 
     CdFastIoDispatch.FastIoCheckIfPossible =   CdFastIoCheckIfPossible;  //  CheckForFastIo
     CdFastIoDispatch.FastIoRead =              FsRtlCopyRead;            //  Read
@@ -295,7 +357,6 @@ Return Value:
     CdFastIoDispatch.FastIoUnlockSingle =      CdFastUnlockSingle;       //  UnlockSingle
     CdFastIoDispatch.FastIoUnlockAll =         CdFastUnlockAll;          //  UnlockAll
     CdFastIoDispatch.FastIoUnlockAllByKey =    CdFastUnlockAllByKey;     //  UnlockAllByKey
-
     //
     //  This callback has been replaced by CdFilterCallbackAcquireForCreateSection.
     //
@@ -309,7 +370,9 @@ Return Value:
     CdFastIoDispatch.PrepareMdlWrite = FsRtlPrepareMdlWriteDev;
     CdFastIoDispatch.MdlWriteComplete = FsRtlMdlWriteCompleteDev;
 
+#ifdef _MSC_VER
 #pragma prefast(pop)
+#endif
 
     //
     //  Initialize the CdData structure.
@@ -322,6 +385,9 @@ Return Value:
 
     CdData.DriverObject = DriverObject;
     CdData.FileSystemDeviceObject = FileSystemDeviceObject;
+#ifdef __REACTOS__
+    CdData.HddFileSystemDeviceObject = HddFileSystemDeviceObject;
+#endif
 
     InitializeListHead( &CdData.VcbQueue );
 
@@ -331,10 +397,10 @@ Return Value:
     //  Initialize the cache manager callback routines
     //
 
-    CdData.CacheManagerCallbacks.AcquireForLazyWrite  = &CdAcquireForCache;
-    CdData.CacheManagerCallbacks.ReleaseFromLazyWrite = &CdReleaseFromCache;
-    CdData.CacheManagerCallbacks.AcquireForReadAhead  = &CdAcquireForCache;
-    CdData.CacheManagerCallbacks.ReleaseFromReadAhead = &CdReleaseFromCache;
+    CdData.CacheManagerCallbacks.AcquireForLazyWrite  = (PVOID)&CdAcquireForCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
+    CdData.CacheManagerCallbacks.ReleaseFromLazyWrite = (PVOID)&CdReleaseFromCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
+    CdData.CacheManagerCallbacks.AcquireForReadAhead  = (PVOID)&CdAcquireForCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
+    CdData.CacheManagerCallbacks.ReleaseFromReadAhead = (PVOID)&CdReleaseFromCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
 
     CdData.CacheManagerVolumeCallbacks.AcquireForLazyWrite  = &CdNoopAcquire;
     CdData.CacheManagerVolumeCallbacks.ReleaseFromLazyWrite = &CdNoopRelease;
index d2f7db0..6c957ae 100755 (executable)
@@ -17,26 +17,31 @@ Abstract:
 #ifndef _CDPROCS_
 #define _CDPROCS_
 
+#ifdef _MSC_VER
 #pragma warning( disable: 4127 ) // conditional expression is constant
 
 #pragma warning( push )
 #pragma warning( disable: 4201 ) // nonstandard extension used : nameless struct/union
 #pragma warning( disable: 4214 ) // nonstandard extension used : bit field types
+#endif
 
 #include <ntifs.h>
 
 #include <ntddcdrm.h>
 #include <ntdddisk.h>
 #include <ntddscsi.h>
+#ifdef __REACTOS__
+#include <pseh/pseh2.h>
+#endif
 
 #ifndef INLINE
 #define INLINE __inline
 #endif
 
 #include "nodetype.h"
-#include "Cd.h"
-#include "CdStruc.h"
-#include "CdData.h"
+#include "cd.h"
+#include "cdstruc.h"
+#include "cddata.h"
 
 #ifdef CDFS_TELEMETRY_DATA
 
@@ -46,7 +51,9 @@ Abstract:
 
 #endif // CDFS_TELEMETRY_DATA
 
+#ifdef _MSC_VER
 #pragma warning( pop )
+#endif
 
 //**** x86 compiler bug ****
 
@@ -221,8 +228,9 @@ CdPurgeVolume (
     _In_ BOOLEAN DismountUnderway
     );
 
+static /* ReactOS Change: GCC "multiple definition" */
+INLINE /* GCC only accepts __inline as the first modifier */
 VOID
-INLINE
 CdVerifyOrCreateDirStreamFile (
     _In_ PIRP_CONTEXT IrpContext,
     _In_ PFCB Fcb
@@ -364,6 +372,7 @@ CdHijackIrpAndFlushDevice (
 //      );
 //
 
+#ifndef __REACTOS__
 #define CdMapUserBuffer(IC, UB) {                                               \
             *(UB) = (PVOID) ( ((IC)->Irp->MdlAddress == NULL) ?                 \
                     (IC)->Irp->UserBuffer :                                     \
@@ -373,6 +382,18 @@ CdHijackIrpAndFlushDevice (
             }                                                                   \
         }                                                                       
         
+#else
+#define CdMapUserBuffer(IC, UB) {                                               \
+            *(UB) = (PVOID) ( ((IC)->Irp->MdlAddress == NULL) ?                 \
+                    (IC)->Irp->UserBuffer :                                     \
+                    (MmGetSystemAddressForMdlSafe( (IC)->Irp->MdlAddress, NormalPagePriority)));   \
+            if (NULL == *(UB))  {                         \
+                CdRaiseStatus( (IC), STATUS_INSUFFICIENT_RESOURCES);            \
+            }                                                                   \
+        }                                                                       
+        
+#endif
+
 
 #define CdLockUserBuffer(IC,BL,OP) {                        \
     if ((IC)->Irp->MdlAddress == NULL) {                    \
@@ -1071,12 +1092,14 @@ BOOLEAN DummyRestoreIrql(_Inout_ PFAST_MUTEX FastMutex);
 #endif
 
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdNoopAcquire (
     _In_ PVOID Fcb,
     _In_ BOOLEAN Wait
     );
 
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdNoopRelease (
     _In_ PVOID Fcb
     );
@@ -1084,6 +1107,7 @@ CdNoopRelease (
 _Requires_lock_held_(_Global_critical_region_)
 _When_(return!=0, _Acquires_shared_lock_(*Fcb->Resource))
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdAcquireForCache (
     _Inout_ PFCB Fcb,
     _In_ BOOLEAN Wait
@@ -1092,12 +1116,14 @@ CdAcquireForCache (
 _Requires_lock_held_(_Global_critical_region_)
 _Releases_lock_(*Fcb->Resource)
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdReleaseFromCache (
     _Inout_ PFCB Fcb
     );
 
 _Requires_lock_held_(_Global_critical_region_)
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFilterCallbackAcquireForCreateSection (
     _In_ PFS_FILTER_CALLBACK_DATA CallbackData,
     _Unreferenced_parameter_ PVOID *CompletionContext
@@ -1106,6 +1132,7 @@ CdFilterCallbackAcquireForCreateSection (
 _Function_class_(FAST_IO_RELEASE_FILE)
 _Requires_lock_held_(_Global_critical_region_)
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdReleaseForCreateSection (
     _In_ PFILE_OBJECT FileObject
     );
@@ -1324,7 +1351,7 @@ CdTeardownStructures (
                               sizeof( CD_IO_CONTEXT ),  \
                               TAG_IO_CONTEXT )
 
-#define CdFreeIoContext(IO)     CdFreePool( &(IO) )
+#define CdFreeIoContext(IO)     CdFreePool( (PVOID) &(IO) ) /* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
 
 PFCB
 CdLookupFcbTable (
@@ -1356,15 +1383,20 @@ CdProcessToc (
 //
 
 #define CdPagedPool                 PagedPool
+#ifndef __REACTOS__
 #define CdNonPagedPool              NonPagedPoolNx
 #define CdNonPagedPoolCacheAligned  NonPagedPoolNxCacheAligned
+#else
+#define CdNonPagedPool              NonPagedPool
+#define CdNonPagedPoolCacheAligned  NonPagedPoolCacheAligned
+#endif
 
 
 //
 //  Verification support routines.  Contained in verfysup.c
 //
 
-
+static /* ReactOS Change: GCC "multiple definition" */
 INLINE
 BOOLEAN
 CdOperationIsDasdOpen (
@@ -1461,6 +1493,7 @@ CdFsdPostRequest (
 
 _Requires_lock_held_(_Global_critical_region_)
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdPrePostIrp (
     _Inout_ PIRP_CONTEXT IrpContext,
     _Inout_ PIRP Irp
@@ -1468,6 +1501,7 @@ CdPrePostIrp (
 
 _Requires_lock_held_(_Global_critical_region_)
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdOplockComplete (
     _Inout_ PIRP_CONTEXT IrpContext,
     _Inout_ PIRP Irp
@@ -1483,6 +1517,7 @@ CdOplockComplete (
 //  otherwise
 //
 
+/* GCC complains about multi-line comments.
 //#ifndef BooleanFlagOn
 //#define BooleanFlagOn(F,SF) (    \
 //    (BOOLEAN)(((F) & (SF)) != 0) \
@@ -1500,6 +1535,7 @@ CdOplockComplete (
 //    (Flags) &= ~(SingleFlag);         \
 //}
 //#endif
+*/
 
 //
 //      CAST
@@ -1575,6 +1611,7 @@ CdOplockComplete (
     ((ULONG) (L)) >> SECTOR_SHIFT                                       \
 )
 
+static /* ReactOS Change: GCC "multiple definition" */
 INLINE
 ULONG
 SectorsFromLlBytes( 
@@ -2144,16 +2181,24 @@ CdCommonShutdown (                         //  Implemented in Shutdown.c
 //      #define try_return(S)  { S; goto try_exit; }
 //
 
+#ifndef __REACTOS__
 #define try_return(S) { S; goto try_exit; }
 #define try_leave(S) { S; leave; }
+#else
+#define try_return(S) { S; goto try_exit; }
+#define try_leave(S) { S; _SEH2_LEAVE; }
+#endif
 
 //
 //  Encapsulate safe pool freeing
 //
+/* ReactOS Change: GCC "passing argument 1 of CdFreePool from incompatible pointer type" */
+#define CdFreePool(x) _CdFreePool((PVOID*)(x))
 
+static /* ReactOS Change: GCC "multiple definition" */
 INLINE
 VOID
-CdFreePool(
+_CdFreePool(
     _Inout_ _At_(*Pool, __drv_freesMem(Mem) _Post_null_) PVOID *Pool
     )
 {
index 72abe0a..8a5c02d 100755 (executable)
@@ -170,6 +170,12 @@ typedef PVOID PBCB;     //**** Bcb's are now part of the cache module
 
 #define BYTE_COUNT_EMBEDDED_NAME        (32)
 
+#ifdef __REACTOS__
+#define __volatile
+#define _Unreferenced_parameter_
+#define __field_range(a,b)
+#define __analysis_assert(x)
+#endif
 \f
 //
 //  The CD_MCB is used to store the mapping of logical file offset to
@@ -349,6 +355,10 @@ typedef struct _CD_DATA {
 
     PDEVICE_OBJECT FileSystemDeviceObject;
 
+#ifdef __REACTOS__
+    PDEVICE_OBJECT HddFileSystemDeviceObject;
+#endif
+
     //
     //  Following are used to manage the async and delayed close queue.
     //
@@ -545,8 +555,8 @@ typedef struct _VCB {
     //
 
     ULONG VcbCleanup;
-    __volatile ULONG VcbReference;
-    __volatile ULONG VcbUserReference;
+    __volatile LONG VcbReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
+    __volatile LONG VcbUserReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
 
     //
     //  Fcb for the Volume Dasd file, root directory and the Path Table.
@@ -732,7 +742,7 @@ typedef struct _VOLUME_DEVICE_OBJECT {
     //  executed later.
     //
 
-    __volatile ULONG PostedRequestCount;
+    __volatile LONG PostedRequestCount; /* ReactOS Change: GCC "pointer targets in passing argument 1 of 'InterlockedDecrement' differ in signedness" */
 
     //
     //  The following field indicates the number of IRP's waiting
@@ -957,7 +967,7 @@ typedef struct _FCB {
     //
 
     ULONG FcbCleanup;
-    __volatile ULONG FcbReference;
+    __volatile LONG FcbReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
     ULONG FcbUserReference;
 
     //
index a0d8ce4..0cdda16 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -190,7 +190,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
     
         //
         //  Case on the type of open that we are trying to cleanup.
@@ -258,7 +258,9 @@ Return Value:
 
         default :
 
+#ifdef _MSC_VER
 #pragma prefast( suppress:__WARNING_USE_OTHER_FUNCTION, "argument bogus" )        
+#endif
             CdBugCheck( TypeOfOpen, 0, 0 );
         }
 
@@ -311,15 +313,15 @@ Return Value:
 
         IoRemoveShareAccess( FileObject, &Fcb->ShareAccess );
 
-    } finally {
+    } _SEH2_FINALLY {
 
-       CdReleaseFcb( IrpContext, Fcb );
+        CdReleaseFcb( IrpContext, Fcb );
         
         if (SendUnlockNotification) {
             
             FsRtlNotifyVolumeEvent( FileObject, FSRTL_VOLUME_UNLOCK );
         }
-    }
+    } _SEH2_END;
 
     //
     //  If appropriate, try to spark teardown by purging the volume.  Should
@@ -337,19 +339,19 @@ Return Value:
         
         CdAcquireCdData( IrpContext);
 
-        try {
+        _SEH2_TRY {
             
             CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
             VcbAcquired = TRUE;
             
             CdPurgeVolume( IrpContext, Vcb, FALSE );
 
-        } finally {
+        } _SEH2_FINALLY {
 
             if (VcbAcquired) { CdReleaseVcb( IrpContext, Vcb ); }
             
             CdReleaseCdData( IrpContext);
-        }
+        } _SEH2_END;
     }
 
     //
index 5e45587..fecb1e6 100755 (executable)
@@ -42,7 +42,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -81,6 +81,7 @@ CdRemoveClose (
 IO_WORKITEM_ROUTINE CdCloseWorker;
 
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdCloseWorker (
     _In_ PDEVICE_OBJECT DeviceObject,
     _In_opt_ PVOID Context
@@ -170,7 +171,7 @@ Return Value:
             //  Free the IrpContextLite.
             //
 
-            CdFreeIrpContextLite( (PIRP_CONTEXT_LITE) IrpContext );
+            CdFreeIrpContextLite( *(PVOID*)&IrpContext ); /* ReactOS Change: GCC "error: invalid lvalue in unary '&'" */
 
             //
             //  Remember we have the IrpContext from the stack.
@@ -318,7 +319,9 @@ Return Value:
 
     }
 
+#ifdef _MSC_VER
 #pragma prefast(suppress:26165, "Esp:1153")
+#endif
     FsRtlExitFileSystem();
 }
 
@@ -650,6 +653,7 @@ Return Value:
 }
 
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdCloseWorker (
     _In_ PDEVICE_OBJECT DeviceObject,
     _In_opt_ PVOID Context
index 695121d..1fb7441 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -119,7 +119,9 @@ CdCompleteFcbOpen (
 \f
 _Requires_lock_held_(_Global_critical_region_)
 NTSTATUS
+#ifdef _MSC_VER
 #pragma prefast(suppress:26165, "Esp:1153")
+#endif
 CdCommonCreate (
     _Inout_ PIRP_CONTEXT IrpContext,
     _Inout_ PIRP Irp
@@ -168,7 +170,7 @@ Return Value:
 
     PFILE_OBJECT FileObject;
 
-    COMPOUND_PATH_ENTRY CompoundPathEntry = {0};
+    COMPOUND_PATH_ENTRY CompoundPathEntry = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
     BOOLEAN CleanupCompoundPathEntry = FALSE;
 
     FILE_ENUM_CONTEXT FileContext = {0};
@@ -229,7 +231,7 @@ Return Value:
     PUNICODE_STRING FileName;
     PUNICODE_STRING RelatedFileName = NULL;
 
-    CD_NAME RemainingName = {0};
+    CD_NAME RemainingName = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
     CD_NAME FinalName;
     PCD_NAME MatchingName = NULL;
 
@@ -382,7 +384,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Verify that the Vcb is not in an unusable condition.  This routine
@@ -926,7 +928,7 @@ Return Value:
                                                         RelatedCcb ));
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Cleanup the PathEntry if initialized.
@@ -951,7 +953,7 @@ Return Value:
         //  condition.
         //
 
-        if (AbnormalTermination()) {
+        if (_SEH2_AbnormalTermination()) {
 
 
             //
@@ -1011,7 +1013,7 @@ Return Value:
         //
 
         CdCompleteRequest( IrpContext, Irp, Status );
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -1348,10 +1350,14 @@ Return Value:
             //
             //  Do a quick check to make sure there are no wildcards.
             //
+#ifdef _MSC_VER
 #pragma prefast(push)
 #pragma prefast(suppress:26000, "RemainingName->FileName.Buffer = FileName.Buffer + (RelatedNameLength + SeparatorLength); FileName.MaximumLength < (RelatedNameLength + SeparatorLength + RemainingNameLength).")
+#endif
             if (FsRtlDoesNameContainWildCards( &RemainingName->FileName )) {
+#ifdef _MSC_VER
 #pragma prefast(pop)
+#endif
 
                 return STATUS_OBJECT_NAME_INVALID;
             }
@@ -1453,10 +1459,14 @@ Return Value:
         }
     }
 
+#ifdef _MSC_VER
 #pragma prefast(push)
 #pragma prefast(suppress:26030, "RemainingName->FileName.Buffer = FileName.Buffer + (RelatedNameLength + SeparatorLength); FileName.MaximumLength < (RelatedNameLength + SeparatorLength + RemainingNameLength).")
+#endif
     return STATUS_SUCCESS;
+#ifdef _MSC_VER
 #pragma prefast(pop)
+#endif
 }
 
 \f
@@ -1528,7 +1538,7 @@ Return Value:
     FILE_ENUM_CONTEXT FileContext;
     BOOLEAN CleanupFileContext = FALSE;
 
-    COMPOUND_PATH_ENTRY CompoundPathEntry = {0};
+    COMPOUND_PATH_ENTRY CompoundPathEntry = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
     BOOLEAN CleanupCompoundPathEntry = FALSE;
 
     FILE_ID FileId;
@@ -1548,7 +1558,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Go ahead and figure out the TypeOfOpen and NodeType.  We can
@@ -1942,7 +1952,7 @@ Return Value:
         }
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         if (UnlockVcb) {
 
@@ -1958,7 +1968,7 @@ Return Value:
 
             CdCleanupCompoundPathEntry( IrpContext, &CompoundPathEntry );
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -2166,7 +2176,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Check the related Ccb to see if this was an OpenByFileId.
@@ -2324,7 +2334,7 @@ Return Value:
                                         IrpSp->Parameters.Create.SecurityContext->DesiredAccess );
         }
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Unlock the Vcb if held.
@@ -2343,7 +2353,7 @@ Return Value:
 
             CdReleaseFcb( IrpContext, ParentFcb );
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -2443,7 +2453,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Check if a version number was used to open this file.
@@ -2614,7 +2624,7 @@ Return Value:
                                     CcbFlags,
                                     IrpSp->Parameters.Create.SecurityContext->DesiredAccess );
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Unlock the Vcb if held.
@@ -2633,7 +2643,7 @@ Return Value:
 
             CdReleaseFcb( IrpContext, ParentFcb );
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -2803,8 +2813,8 @@ Return Value:
                 OplockStatus = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
                                                  IrpContext->Irp,
                                                  IrpContext,
-                                                 CdOplockComplete,
-                                                 CdPrePostIrp );
+                                                 (PVOID)CdOplockComplete,   /* ReactOS Change: GCC "assignment from incompatible pointer type" */
+                                                 (PVOID)CdPrePostIrp );   /* ReactOS Change: GCC "assignment from incompatible pointer type" */
 
                 if (OplockStatus == STATUS_PENDING) {
 
@@ -2835,8 +2845,8 @@ Return Value:
             OplockStatus = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
                                              IrpContext->Irp,
                                              IrpContext,
-                                             CdOplockComplete,
-                                             CdPrePostIrp );
+                                             (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
+                                             (PVOID)CdPrePostIrp );/* ReactOS Change: GCC "assignment from incompatible pointer type" */
 
             if (OplockStatus == STATUS_PENDING) {
 
index ce120f5..4d0a70a 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -30,6 +30,7 @@ Abstract:
 IO_COMPLETION_ROUTINE CdDevCtrlCompletionRoutine;
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdDevCtrlCompletionRoutine (
     _In_ PDEVICE_OBJECT DeviceObject,
     _In_ PIRP Irp,
@@ -172,6 +173,7 @@ Return Value:
 //
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdDevCtrlCompletionRoutine (
     _In_ PDEVICE_OBJECT DeviceObject,
     _In_ PIRP Irp,
index b2f9467..a0bb2b7 100755 (executable)
@@ -13,7 +13,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -407,7 +407,7 @@ Return Value:
     //  Use a try-finally to perform the final cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Loop while there are more bytes to transfer.
@@ -568,7 +568,7 @@ Return Value:
         }
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Perform final cleanup on the IoRuns if necessary.
@@ -578,7 +578,7 @@ Return Value:
 
             CdFinishBuffers( IrpContext, IoRuns, CleanupRunCount, TRUE, FALSE );
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -677,7 +677,7 @@ Return Value:
     //  Use a try-finally to perform the final cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  If the initial offset lies within the RIFF header then copy the
@@ -979,7 +979,7 @@ Return Value:
         KeFlushIoBuffers( IrpContext->Irp->MdlAddress, TRUE, FALSE );
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Perform final cleanup on the IoRuns if necessary.
@@ -989,7 +989,7 @@ Return Value:
 
             CdFinishBuffers( IrpContext, IoRuns, CleanupRunCount, TRUE, FALSE );
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -1282,16 +1282,18 @@ Return Value:
         //  deallocate the Mdl and return the appropriate "expected" status.
         //
 
-        try {
+        _SEH2_TRY {
 
             MmProbeAndLockPages( Mdl, IrpContext->Irp->RequestorMode, IoWriteAccess );
 
             Status = STATUS_SUCCESS;
 
+#ifdef _MSC_VER
 #pragma warning(suppress: 6320)
-        } except(EXCEPTION_EXECUTE_HANDLER) {
+#endif
+        } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
 
-            Status = GetExceptionCode();
+            Status = _SEH2_GetExceptionCode();
 
             IoFreeMdl( Mdl );
             IrpContext->Irp->MdlAddress = NULL;
@@ -1300,7 +1302,7 @@ Return Value:
 
                 Status = STATUS_INVALID_USER_BUFFER;
             }
-        }
+        } _SEH2_END;
     }
 
     //
@@ -1890,7 +1892,9 @@ Return Value:
 
         CurrentRawOffset = (LONGLONG) ((ULONG) CurrentRawOffset / RAW_SECTOR_SIZE);
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: __WARNING_RESULTOFSHIFTCASTTOLARGERSIZE, "This is fine beacuse raw sector size > sector shift" )        
+#endif
         CurrentCookedOffset = (LONGLONG) ((ULONG) CurrentRawOffset << SECTOR_SHIFT );
 
         CurrentRawOffset = (LONGLONG) ((ULONG) CurrentRawOffset * RAW_SECTOR_SIZE);
@@ -2384,6 +2388,7 @@ Return Value:
 IO_COMPLETION_ROUTINE CdSyncCompletionRoutine;
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdSyncCompletionRoutine (
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp,
@@ -2514,7 +2519,7 @@ Return Value:
 
     CdAcquireCacheForRead( IrpContext);
 
-    try {
+    _SEH2_TRY {
         
         //
         //  Check the cache hasn't gone away due to volume verify failure (which
@@ -2656,18 +2661,20 @@ Return Value:
             //  pages and update the MDL with physical page information.
             //
         
-            try {
+            _SEH2_TRY {
             
                 MmProbeAndLockPages( Vcb->SectorCacheIrp->MdlAddress,
                                      KernelMode,
                                      (LOCK_OPERATION) IoWriteAccess );
             } 
+#ifdef _MSC_VER
 #pragma warning(suppress: 6320)
-            except(EXCEPTION_EXECUTE_HANDLER) {
+#endif
+            _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
         
                 IoFreeMdl( Vcb->SectorCacheIrp->MdlAddress );
                 Vcb->SectorCacheIrp->MdlAddress = NULL;
-            }
+            } _SEH2_END;
         
             if (NULL == Vcb->SectorCacheIrp->MdlAddress) {
         
@@ -2738,10 +2745,10 @@ Return Value:
 
         Result = TRUE;
     }
-    finally {
+    _SEH2_FINALLY {
 
         CdReleaseCache( IrpContext);
-    }
+    } _SEH2_END;
 
     return Result;
 }
@@ -3418,6 +3425,7 @@ Return Value:
 //
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdMultiSyncCompletionRoutine (
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp,
@@ -3505,6 +3513,7 @@ Return Value:
 //
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdMultiAsyncCompletionRoutine (
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp,
@@ -3624,6 +3633,7 @@ Return Value:
 //
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdSingleSyncCompletionRoutine (
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp,
@@ -3687,6 +3697,7 @@ Return Value:
 //
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdSingleAsyncCompletionRoutine (
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp,
index 71cfccb..08e8317 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -292,7 +292,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Verify the Fcb is still good.
@@ -504,7 +504,7 @@ Return Value:
             //  such trickery.
             //
             
-            try {
+            _SEH2_TRY {
             
                 //
                 //  Zero and initialize the base part of the current entry.
@@ -579,6 +579,9 @@ Return Value:
                     NamesInfo->FileNameLength = FileNameBytes + SeparatorBytes + VersionStringBytes;
     
                     break;
+
+                /* ReactOS Change: GCC "enumeration value not handled in switch" */
+                default: break;
                 }
 
                 //
@@ -712,8 +715,10 @@ Return Value:
                 LastEntry = NextEntry;
                 NextEntry = QuadAlign( Information );
             
+#ifdef _MSC_VER
 #pragma warning(suppress: 6320)
-            } except (EXCEPTION_EXECUTE_HANDLER) {
+#endif
+            } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
 
                   //
                   //  We had a problem filling in the user's buffer, so stop and
@@ -722,13 +727,13 @@ Return Value:
                   //
                   
                   Information = 0;
-                  try_leave( Status = GetExceptionCode());
-            }
+                  try_leave( Status = _SEH2_GetExceptionCode());
+            } _SEH2_END;
         }
         
         DoCcbUpdate = TRUE;
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Cleanup our search context - *before* aquiring the FCB mutex exclusive,
@@ -767,7 +772,7 @@ Return Value:
         //
 
         CdReleaseFile( IrpContext, Fcb );
-    }
+    } _SEH2_END;
 
     //
     //  Complete the request here.
@@ -836,7 +841,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Verify the Vcb.
@@ -861,14 +866,14 @@ Return Value:
                                         NULL,
                                         NULL );
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Release the Vcb.
         //
 
         CdReleaseVcb( IrpContext, IrpContext->Vcb );
-    }
+    } _SEH2_END;
 
     //
     //  Cleanup the IrpContext.
index b1667d3..364b78e 100755 (executable)
@@ -65,7 +65,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
index 0aecc39..b9d4575 100755 (executable)
@@ -1,4 +1,4 @@
-#include "CdProcs.h"
+#include "cdprocs.h"
 #include <stdio.h>
 
 #define doit(a,b) { printf("%s %04lx %4lx %s\n", #a, FIELD_OFFSET(a,b), sizeof(d.b), #b); }
index cd9f1af..62c929b 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -167,7 +167,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  We only support query on file and directory handles.
@@ -327,7 +327,7 @@ Return Value:
 
         Irp->IoStatus.Information = IrpSp->Parameters.QueryFile.Length - Length;
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Release the file.
@@ -337,7 +337,7 @@ Return Value:
 
             CdReleaseFile( IrpContext, Fcb );
         }
-    }
+    } _SEH2_END;
 
     //
     //  Complete the request if we didn't raise.
@@ -409,7 +409,7 @@ Return Value:
 
     CdAcquireFileShared( IrpContext, Fcb );
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Make sure the Fcb is in a usable condition.  This
@@ -448,10 +448,10 @@ Return Value:
         Status = STATUS_SUCCESS;
 
     try_exit: NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         CdReleaseFile( IrpContext, Fcb );
-    }
+    } _SEH2_END;
 
     //
     //  Complete the request if there was no raise.
@@ -466,6 +466,7 @@ _Function_class_(FAST_IO_QUERY_BASIC_INFO)
 _IRQL_requires_same_\f
 _Success_(return != FALSE)
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFastQueryBasicInfo (
     _In_ PFILE_OBJECT FileObject,
     _In_ BOOLEAN Wait,
@@ -543,7 +544,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Only deal with 'good' Fcb's.
@@ -573,12 +574,12 @@ Return Value:
             Result = TRUE;
         }
 
-    } finally {
+    } _SEH2_FINALLY {
 
         ExReleaseResourceLite( Fcb->Resource );
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
     return Result;
 }
@@ -588,6 +589,7 @@ _Function_class_(FAST_IO_QUERY_STANDARD_INFO)
 _IRQL_requires_same_
 _Success_(return != FALSE)
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFastQueryStdInfo (
     _In_ PFILE_OBJECT FileObject,
     _In_ BOOLEAN Wait,
@@ -665,7 +667,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Only deal with 'good' Fcb's.
@@ -705,12 +707,12 @@ Return Value:
             Result = TRUE;
         }
 
-    } finally {
+    } _SEH2_FINALLY {
 
         ExReleaseResourceLite( Fcb->Resource );
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
     return Result;
 }
@@ -720,6 +722,7 @@ _Function_class_(FAST_IO_QUERY_NETWORK_OPEN_INFO)
 _IRQL_requires_same_
 _Success_(return != FALSE)
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFastQueryNetworkInfo (
     _In_ PFILE_OBJECT FileObject,
     _In_ BOOLEAN Wait,
@@ -797,7 +800,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Only deal with 'good' Fcb's.
@@ -842,12 +845,12 @@ Return Value:
             Result = TRUE;
         }
 
-    } finally {
+    } _SEH2_FINALLY {
 
         ExReleaseResourceLite( Fcb->Resource );
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
     return Result;
 }
@@ -1272,7 +1275,7 @@ Return Value:
     PUNICODE_STRING NameToUse;
     ULONG DirentOffset;
 
-    COMPOUND_PATH_ENTRY CompoundPathEntry = {0};
+    COMPOUND_PATH_ENTRY CompoundPathEntry = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
     FILE_ENUM_CONTEXT FileContext;
 
     PFCB ParentFcb = NULL;
@@ -1307,7 +1310,7 @@ Return Value:
     //  Use a try-finally to cleanup the structures.
     //
 
-    try {
+    _SEH2_TRY {
 
         ParentFcb = Fcb->ParentFcb;
         CdAcquireFileShared( IrpContext, ParentFcb );
@@ -1418,12 +1421,12 @@ Return Value:
         RtlCopyMemory( Buffer->FileName, ShortNameBuffer, Buffer->FileNameLength );
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         if (CleanupFileLookup) {
 
             CdCleanupDirContext( IrpContext, &DirContext );
-            CdCleanupDirent( IrpContext, &Dirent );
+            CdCleanupDirent( IrpContext, &Dirent );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
 
         } else if (CleanupDirectoryLookup) {
 
@@ -1435,7 +1438,7 @@ Return Value:
 
             CdReleaseFile( IrpContext, ParentFcb );
         }
-    }
+    } _SEH2_END;
 
     //
     //  Reduce the available bytes by the amount stored into this buffer.
index 1354bc1..d957a79 100755 (executable)
@@ -13,7 +13,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -109,8 +109,10 @@ Return Value:
     FileObject->FsContext = Fcb;
     FileObject->FsContext2 = Ccb;
 
+#ifdef _MSC_VER
 #pragma warning( suppress: 4213 )
-    SetFlag( ((ULONG_PTR) FileObject->FsContext2), TypeOfOpen );
+#endif
+    SetFlag( (*(PULONG_PTR)&FileObject->FsContext2), TypeOfOpen ); /* ReactOS Change: GCC "invalid lvalue in assignment" */
 
     //
     //  Set the Vpb field in the file object.
@@ -186,8 +188,10 @@ Return Value:
         *Fcb = FileObject->FsContext;
         *Ccb = FileObject->FsContext2;
         
+#ifdef _MSC_VER
 #pragma warning( suppress: 4213 )
-        ClearFlag( (ULONG_PTR) *Ccb, TYPE_OF_OPEN_MASK );
+#endif
+        ClearFlag( (*(PULONG_PTR)Ccb), TYPE_OF_OPEN_MASK ); /* ReactOS Change: GCC "invalid lvalue in assignment" */
     }
 
     //
index 8a113f0..8e039ef 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -532,7 +532,9 @@ CdReMountOldVcb (
 
     IoAcquireVpbSpinLock( &SavedIrql );
 
+#ifdef _MSC_VER
 #pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
+#endif
     NewVcb->Vpb->RealDevice->Vpb = OldVcb->Vpb;
     
     OldVcb->Vpb->RealDevice = NewVcb->Vpb->RealDevice;
@@ -639,6 +641,10 @@ Return Value:
     ULONG TocDiskFlags = 0;
     ULONG MediaChangeCount = 0;
 
+#ifdef __REACTOS__
+    DEVICE_TYPE FilesystemDeviceType;
+#endif
+
 #ifdef CDFS_TELEMETRY_DATA
     GUID VolumeGuid;
     GUID VolumeCorrelationId = { 0 };
@@ -651,7 +657,16 @@ Return Value:
     //  always be waitable.
     //
 
+#ifdef __REACTOS__
+    if (IrpSp->DeviceObject == CdData.HddFileSystemDeviceObject) {
+        FilesystemDeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
+    } else {
+#endif
     NT_ASSERT( Vpb->RealDevice->DeviceType == FILE_DEVICE_CD_ROM );
+#ifdef __REACTOS__
+        FilesystemDeviceType = FILE_DEVICE_CD_ROM_FILE_SYSTEM;
+    }
+#endif
     NT_ASSERT( FlagOn( IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT ));
 
 #ifdef CDFS_TELEMETRY_DATA
@@ -697,7 +712,11 @@ Return Value:
     //
 
     Status = CdPerformDevIoCtrl( IrpContext,
+#ifndef __REACTOS__
                                  IOCTL_CDROM_CHECK_VERIFY,
+#else
+                                 (FilesystemDeviceType == FILE_DEVICE_DISK_FILE_SYSTEM ? IOCTL_DISK_CHECK_VERIFY : IOCTL_CDROM_CHECK_VERIFY),
+#endif
                                  DeviceObjectWeTalkTo,
                                  &MediaChangeCount,
                                  sizeof(ULONG),
@@ -726,7 +745,11 @@ Return Value:
     //
 
     Status = CdPerformDevIoCtrl( IrpContext,
+#ifndef __REACTOS__
                                  IOCTL_CDROM_GET_DRIVE_GEOMETRY,
+#else
+                                 (FilesystemDeviceType == FILE_DEVICE_DISK_FILE_SYSTEM ? IOCTL_DISK_GET_DRIVE_GEOMETRY : IOCTL_CDROM_GET_DRIVE_GEOMETRY),
+#endif
                                  DeviceObjectWeTalkTo,
                                  &DiskGeometry,
                                  sizeof( DISK_GEOMETRY ),
@@ -769,7 +792,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Allocate a buffer to query the TOC.
@@ -794,7 +817,11 @@ Return Value:
         Status = IoCreateDevice( CdData.DriverObject,
                                  sizeof( VOLUME_DEVICE_OBJECT ) - sizeof( DEVICE_OBJECT ),
                                  NULL,
+#ifndef __REACTOS__
                                  FILE_DEVICE_CD_ROM_FILE_SYSTEM,
+#else
+                                 FilesystemDeviceType,
+#endif
                                  0,
                                  FALSE,
                                  (PDEVICE_OBJECT *) &VolDo );
@@ -848,7 +875,21 @@ Return Value:
 
         if (Status != STATUS_SUCCESS)  { 
 
+#ifdef __REACTOS__
+
+            //
+            // Don't bail out if that was a disk based ISO image, it is legit
+            //
+
+            if (FilesystemDeviceType == FILE_DEVICE_DISK_FILE_SYSTEM) {
+                CdFreePool( &CdromToc );
+                Status = STATUS_SUCCESS;
+            } else {
+#endif
             try_leave( Status ); 
+#ifdef __REACTOS__
+            }
+#endif
         }
 
         //
@@ -1164,7 +1205,7 @@ Return Value:
 
         Status = STATUS_SUCCESS;
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Free the TOC buffer if not in the Vcb.
@@ -1188,7 +1229,7 @@ Return Value:
         //  If we are not mounting the device,  then set the verify bit again.
         //
         
-        if ((AbnormalTermination() || (Status != STATUS_SUCCESS)) && 
+        if ((_SEH2_AbnormalTermination() || (Status != STATUS_SUCCESS)) && 
             SetDoVerifyOnFail)  {
 
             CdMarkRealDevForVerify( IrpContext->RealDevice);
@@ -1225,7 +1266,7 @@ Return Value:
         //
 
         CdReleaseCdData( IrpContext );
-    }
+    } _SEH2_END;
 
     //
     //  Now send mount notification.
@@ -1338,7 +1379,7 @@ Return Value:
 
     CdAcquireCdData( IrpContext );
 
-    try {
+    _SEH2_TRY {
 
         CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
         ReleaseVcb = TRUE;
@@ -1682,8 +1723,7 @@ Return Value:
             }
         }
 
-    } 
-    finally {
+    } _SEH2_FINALLY {
 
         //
         //  Free the TOC buffer if allocated.
@@ -1708,7 +1748,7 @@ Return Value:
         }
 
         CdReleaseCdData( IrpContext );
-    }
+    } _SEH2_END;
 
     //
     //  Now send mount notification.
@@ -1838,7 +1878,7 @@ Return Value:
     //  Use a try finally to free the Fcb.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Verify the Fcb.
@@ -1868,14 +1908,14 @@ Return Value:
 
         Irp = NULL;
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Release all of our resources
         //
 
         CdReleaseFcb( IrpContext, Fcb );
-    }
+    } _SEH2_END;
 
     //
     //  Complete the request if there was no exception.
@@ -1951,7 +1991,7 @@ Return Value:
     Vcb = Fcb->Vcb;
     CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Verify the Vcb.
@@ -1961,7 +2001,7 @@ Return Value:
 
         Status = CdLockVolumeInternal( IrpContext, Vcb, IrpSp->FileObject );
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Release the Vcb.
@@ -1969,11 +2009,11 @@ Return Value:
 
         CdReleaseVcb( IrpContext, Vcb );
         
-        if (AbnormalTermination() || !NT_SUCCESS( Status )) {
+        if (_SEH2_AbnormalTermination() || !NT_SUCCESS( Status )) {
 
             FsRtlNotifyVolumeEvent( IrpSp->FileObject, FSRTL_VOLUME_LOCK_FAILED );
         }
-    }
+    } _SEH2_END;
 
     //
     //  Complete the request if there haven't been any exceptions.
@@ -2454,7 +2494,12 @@ Return Value:
     //  We only allow the invalidate call to come in on our file system devices.
     //
     
+#ifndef __REACTOS__
     if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject)  {
+#else
+    if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject &&
+        IrpSp->DeviceObject != CdData.HddFileSystemDeviceObject)  {
+#endif
 
         CdCompleteRequest( IrpContext, Irp, STATUS_INVALID_DEVICE_REQUEST );
 
@@ -2507,7 +2552,7 @@ Return Value:
                                         0,
                                         *IoFileObjectType,
                                         KernelMode,
-                                        &FileToMarkBad,
+                                        (PVOID*)&FileToMarkBad, /* ReactOS Change: GCC "passing argument 5 of 'ObReferenceObjectByHandle' from incompatible pointer type" */
                                         NULL );
 
     if (!NT_SUCCESS(Status)) {
@@ -2578,7 +2623,9 @@ Return Value:
             
             IoAcquireVpbSpinLock( &SavedIrql );
 
+#ifdef _MSC_VER
 #pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
+#endif
             if (DeviceToMarkBad->Vpb == Vcb->Vpb)  {
             
                 PVPB NewVpb = Vcb->SwapVpb;
@@ -2592,11 +2639,15 @@ Return Value:
                 NewVpb->Size = sizeof( VPB );
                 NewVpb->RealDevice = DeviceToMarkBad;
 
+#ifdef _MSC_VER
 #pragma prefast(push)
 #pragma prefast(disable: 28175, "this is a filesystem driver, touching the vpb is allowed")
+#endif
                 NewVpb->Flags = FlagOn( DeviceToMarkBad->Vpb->Flags, VPB_REMOVE_PENDING );
                 DeviceToMarkBad->Vpb = NewVpb;
+#ifdef _MSC_VER
 #pragma prefast(pop)
+#endif
 
                 Vcb->SwapVpb = NULL;
             }
@@ -2871,7 +2922,7 @@ Return Value:
             //  Check for whether this device supports XA and multi-session.
             //
 
-            try {
+            _SEH2_TRY {
 
                 //
                 //  Allocate a buffer for the last session information.
@@ -2949,10 +3000,10 @@ Return Value:
                     ThisPass += 1;
                 }
 
-            } finally {
+            } _SEH2_FINALLY {
 
                 if (CdromToc != NULL) { CdFreePool( &CdromToc ); }
-            }
+            } _SEH2_END;
         }
 
         //
index b38548d..e119b11 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -24,6 +24,7 @@ Abstract:
 
 \f
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFspDispatch (
     _In_ PVOID Context
     )
@@ -95,7 +96,7 @@ Return Value:
 
         while (TRUE) {
 
-            try {
+            _SEH2_TRY {
 
                 //
                 //  Reinitialize for the next try at completing this
@@ -185,10 +186,10 @@ Return Value:
                     CdCompleteRequest( IrpContext, Irp, Status );
                 }
 
-            } except( CdExceptionFilter( IrpContext, GetExceptionInformation() )) {
+            } _SEH2_EXCEPT( CdExceptionFilter( IrpContext, _SEH2_GetExceptionInformation() )) {
 
-                Status = CdProcessException( IrpContext, Irp, GetExceptionCode() );
-            }
+                Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
+            } _SEH2_END;
 
             //
             //  Break out of the loop if we didn't get CANT_WAIT.
index edf0d07..6c0352c 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -89,7 +89,7 @@ Return Value:
     Status = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
                                Irp,
                                IrpContext,
-                               CdOplockComplete,
+                               (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
                                NULL );
 
     //
@@ -138,6 +138,7 @@ Return Value:
 
 \f
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFastLock (
     _In_ PFILE_OBJECT FileObject,
     _In_ PLARGE_INTEGER FileOffset,
@@ -225,7 +226,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  We check whether we can proceed based on the state of the file oplocks.
@@ -249,7 +250,9 @@ Return Value:
         //  Now call the FsRtl routine to perform the lock request.
         //
 
+#ifdef _MSC_VER
 #pragma prefast(suppress: 28159, "prefast thinks this is an obsolete routine, but it is ok for CDFS to use it")
+#endif
         if ((Results = FsRtlFastLock( Fcb->FileLock,
                                       FileObject,
                                       FileOffset,
@@ -277,16 +280,17 @@ Return Value:
         }
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
     return Results;
 }
 
 \f
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFastUnlockSingle (
     _In_ PFILE_OBJECT FileObject,
     _In_ PLARGE_INTEGER FileOffset,
@@ -369,7 +373,7 @@ Return Value:
 
     FsRtlEnterFileSystem();
 
-    try {
+    _SEH2_TRY {
 
         //
         //  We check whether we can proceed based on the state of the file oplocks.
@@ -419,16 +423,17 @@ Return Value:
         }
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
     return Results;
 }
 
 \f
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFastUnlockAll (
     _In_ PFILE_OBJECT FileObject,
     _In_ PEPROCESS ProcessId,
@@ -502,7 +507,7 @@ Return Value:
 
     FsRtlEnterFileSystem();
 
-    try {
+    _SEH2_TRY {
 
         //
         //  We check whether we can proceed based on the state of the file oplocks.
@@ -543,16 +548,17 @@ Return Value:
         CdUnlockFcb( IrpContext, Fcb );
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
     return Results;
 }
 
 \f
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFastUnlockAllByKey (
     _In_ PFILE_OBJECT FileObject,
     _In_ PVOID ProcessId,
@@ -629,7 +635,7 @@ Return Value:
 
     FsRtlEnterFileSystem();
 
-    try {
+    _SEH2_TRY {
 
         //
         //  We check whether we can proceed based on the state of the file oplocks.
@@ -671,10 +677,10 @@ Return Value:
         CdUnlockFcb( IrpContext, Fcb );
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
     return Results;
 }
index dc3ed31..96e3aa3 100755 (executable)
@@ -13,7 +13,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -171,10 +171,14 @@ Return Value:
 
     while (RemainingByteCount != 0) {
 
+#ifdef _MSC_VER
 #pragma prefast(push)
 #pragma prefast(suppress:26014, "RemainingByteCount is even")
+#endif
         *Destination = *Source;
+#ifdef _MSC_VER
 #pragma prefast(pop)
+#endif
 
         Source += 2;
         Destination += 2;
@@ -251,7 +255,9 @@ Return Value:
             //  copy the data.
             //
 
+#ifdef _MSC_VER
 #pragma prefast( suppress:26015, "CD_NAME structures have two UNICODE_STRING structures pointing to the same allocation. there is no way to tell prefast this is the case and that the allocation is always big enough.");
+#endif
             *(UpcaseName->VersionString.Buffer) = L';';
 
             UpcaseName->VersionString.Buffer += 1;
@@ -759,10 +765,14 @@ Return Value:
         // may use 2 bytes as DBCS characters.
         //
 
+#ifdef _MSC_VER
 #pragma prefast(push)
 #pragma prefast(suppress:26014, "OemNameOffset <= BaseNameOffset throughout this loop; OemName buffer previously allocated based on ShortName's length.")
+#endif
         if (FsRtlIsLeadDbcsCharacter(OemName.Buffer[OemNameOffset])) {
+#ifdef _MSC_VER
 #pragma prefast(pop)
+#endif
 
             OemNameOffset += 2;
 
@@ -796,11 +806,15 @@ Return Value:
     //  Now copy the dirent string into the biased name buffer.
     //
 
+#ifdef _MSC_VER
 #pragma prefast(push)
+#endif
     RtlCopyMemory( NextWchar,
                    BiasedShortName.Buffer,
                    BiasedShortName.Length );
+#ifdef _MSC_VER
 #pragma prefast(pop)
+#endif
 
     Length += BiasedShortName.Length;
     NextWchar += (BiasedShortName.Length / sizeof( WCHAR ));
index bd5d1dc..97d3468 100755 (executable)
@@ -73,7 +73,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
index b3237df..02609e7 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -62,6 +62,7 @@ CdPnpCancelRemove (
 IO_COMPLETION_ROUTINE CdPnpCompletionRoutine;
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdPnpCompletionRoutine (
     _In_ PDEVICE_OBJECT DeviceObject,
     _In_ PIRP Irp,
@@ -142,7 +143,9 @@ Return Value:
     //  field that takes us past the end of an ordinary device object.    
     //
 
+#ifdef _MSC_VER
 #pragma prefast(suppress: 28175, "this is a filesystem driver, touching the size member is allowed")
+#endif
     if (OurDeviceObject->DeviceObject.Size != sizeof(VOLUME_DEVICE_OBJECT) ||
         NodeType( &OurDeviceObject->Vcb ) != CDFS_NTC_VCB) {
         
@@ -812,6 +815,7 @@ Return Value:
 //
 
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdPnpCompletionRoutine (
     _In_ PDEVICE_OBJECT DeviceObject,
     _In_ PIRP Irp,
index 6a7b6c5..2acb2bc 100755 (executable)
@@ -13,7 +13,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
index 43e8f9c..4e3046d 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -34,14 +34,24 @@ Abstract:
 //  This macro just puts a nice little try-except around RtlZeroMemory
 //
 
+#ifndef __REACTOS__
 #define SafeZeroMemory(IC,AT,BYTE_COUNT) {                  \
-    try {                                                   \
+    _SEH2_TRY {                                             \
         RtlZeroMemory( (AT), (BYTE_COUNT) );                \
 __pragma(warning(suppress: 6320))                           \
-    } except( EXCEPTION_EXECUTE_HANDLER ) {                 \
+    } _SEH2_EXCEPT( EXCEPTION_EXECUTE_HANDLER ) {           \
          CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER );   \
-    }                                                       \
+    } _SEH2_END;                                            \
 }
+#else
+#define SafeZeroMemory(IC,AT,BYTE_COUNT) {                  \
+    _SEH2_TRY {                                             \
+        RtlZeroMemory( (AT), (BYTE_COUNT) );                \
+    } _SEH2_EXCEPT( EXCEPTION_EXECUTE_HANDLER ) {           \
+         CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER );   \
+    } _SEH2_END;                                            \
+}
+#endif
 
 //
 // Read ahead amount used for normal data files
@@ -186,7 +196,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Verify the Fcb.  Allow reads if this is a DASD handle that is 
@@ -231,8 +241,8 @@ Return Value:
             Status = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
                                        Irp,
                                        IrpContext,
-                                       CdOplockComplete,
-                                       CdPrePostIrp );
+                                       (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
+                                       (PVOID)CdPrePostIrp );/* ReactOS Change: GCC "assignment from incompatible pointer type" */
 
             //
             //  If the result is not STATUS_SUCCESS then the Irp was completed
@@ -530,7 +540,7 @@ Return Value:
         }
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Release the Fcb.
@@ -540,7 +550,7 @@ Return Value:
 
             CdReleaseFile( IrpContext, Fcb );
         }
-    }
+    } _SEH2_END;
 
     //
     //  Post the request if we got CANT_WAIT.
index 86b2b91..c9eaa7b 100755 (executable)
@@ -13,7 +13,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -96,7 +96,9 @@ Return Value:
     switch (Type) {
         case AcquireExclusive:
 
+#ifdef _MSC_VER
 #pragma prefast( suppress:28137, "prefast believes Wait should be a constant, but this is ok for CDFS" )
+#endif
             Acquired = ExAcquireResourceExclusiveLite( Resource, Wait );
             break;
 
@@ -133,6 +135,7 @@ Return Value:
 _Requires_lock_held_(_Global_critical_region_)
 _When_(return!=0, _Acquires_shared_lock_(*Fcb->Resource))
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdAcquireForCache (
     _Inout_ PFCB Fcb,
     _In_ BOOLEAN Wait
@@ -171,6 +174,7 @@ Return Value:
 _Requires_lock_held_(_Global_critical_region_)
 _Releases_lock_(*Fcb->Resource)
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdReleaseFromCache (
     _Inout_ PFCB Fcb
     )
@@ -205,6 +209,7 @@ Return Value:
 
 \f
 BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdNoopAcquire (
     _In_ PVOID Fcb,
     _In_ BOOLEAN Wait
@@ -240,6 +245,7 @@ Return Value:
 
 \f
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdNoopRelease (
     _In_ PVOID Fcb
     )
@@ -267,10 +273,10 @@ Return Value:
     UNREFERENCED_PARAMETER( Fcb );
 }
 
-\f
 
 _Requires_lock_held_(_Global_critical_region_)
 NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFilterCallbackAcquireForCreateSection (
     _In_ PFS_FILTER_CALLBACK_DATA CallbackData,
     _Unreferenced_parameter_ PVOID *CompletionContext
@@ -355,6 +361,7 @@ Return Value:
 _Function_class_(FAST_IO_RELEASE_FILE)
 _Requires_lock_held_(_Global_critical_region_)
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdReleaseForCreateSection (
     _In_ PFILE_OBJECT FileObject
     )
index ca42635..d6c7058 100644 (file)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
index 5f354ac..8082d5f 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -167,6 +167,7 @@ CdDeleteFcbNonpaged (
 RTL_GENERIC_COMPARE_ROUTINE CdFcbTableCompare;
 
 RTL_GENERIC_COMPARE_RESULTS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFcbTableCompare (
     _In_ PRTL_GENERIC_TABLE FcbTable,
     _In_ PVOID Fid1,
@@ -177,6 +178,7 @@ CdFcbTableCompare (
 RTL_GENERIC_ALLOCATE_ROUTINE CdAllocateFcbTable;
 
 PVOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdAllocateFcbTable (
     _In_ PRTL_GENERIC_TABLE FcbTable,
     _In_ CLONG ByteSize
@@ -186,6 +188,7 @@ CdAllocateFcbTable (
 RTL_GENERIC_FREE_ROUTINE CdDeallocateFcbTable;
 
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdDeallocateFcbTable (
     _In_ PRTL_GENERIC_TABLE FcbTable,
     _In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer
@@ -318,19 +321,19 @@ Return Value:
     //  uninitialize the notify structures before returning.
     //
     
-    try  {
+    _SEH2_TRY  {
 
         Vcb->SwapVpb = FsRtlAllocatePoolWithTag( CdNonPagedPool,
                                                  sizeof( VPB ),
                                                  TAG_VPB );
     }
-    finally {
+    _SEH2_FINALLY {
 
-        if (AbnormalTermination())  {
+        if (_SEH2_AbnormalTermination())  {
         
             FsRtlNotifyUninitializeSync( &Vcb->NotifySync );
         }
-    }
+    } _SEH2_END;
 
     //
     //  Nothing beyond this point should raise.
@@ -475,7 +478,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Copy the block size and compute the various block masks.
@@ -862,10 +865,10 @@ Return Value:
             SetFlag( Vcb->VcbState, VCB_STATE_ISO );
         }
         
-    } finally {
+    } _SEH2_FINALLY {
 
         if (UnlockVcb) { CdUnlockVcb( IrpContext, Vcb ); }
-    }
+    } _SEH2_END;
 }
 
 \f
@@ -968,7 +971,9 @@ Return Value:
     //
     //  Now delete the volume device object.
     //
+#ifdef _MSC_VER
 #pragma prefast( suppress: __WARNING_BUFFER_UNDERFLOW, "This is ok, the Vcb is embedded in our volume device object, and that is what we are really deleting." )
+#endif
     IoDeleteDevice( (PDEVICE_OBJECT) CONTAINING_RECORD( Vcb,
                                                         VOLUME_DEVICE_OBJECT,
                                                         Vcb ));
@@ -1069,7 +1074,9 @@ Return Value:
 
         default:
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: __WARNING_USE_OTHER_FUNCTION, "This is a bug." )   
+#endif
             CdBugCheck( 0, 0, 0 );
         }
 
@@ -1262,7 +1269,7 @@ Return Value:
 
     CdLockFcb( IrpContext, Fcb );
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Initialize the common header in the Fcb.  The node type is already
@@ -1385,10 +1392,10 @@ Return Value:
         CdInsertFcbTable( IrpContext, Fcb );
         SetFlag( Fcb->FcbState, FCB_STATE_IN_FCB_TABLE );
 
-    } finally {
+    } _SEH2_FINALLY {
 
         CdUnlockFcb( IrpContext, Fcb );
-    }
+    } _SEH2_END;
 
     return;
 }
@@ -1600,7 +1607,12 @@ Return Value:
     //  occur in the context of fileobjects (i.e., mount).
     //
 
+#ifndef __REACTOS__
     if (IrpSp->DeviceObject == CdData.FileSystemDeviceObject) {
+#else
+    if (IrpSp->DeviceObject == CdData.FileSystemDeviceObject ||
+        IrpSp->DeviceObject == CdData.HddFileSystemDeviceObject) {
+#endif
 
         if (IrpSp->FileObject != NULL &&
             IrpSp->MajorFunction != IRP_MJ_CREATE &&
@@ -1678,7 +1690,12 @@ Return Value:
     //  the Vcb field.
     //
 
+#ifndef __REACTOS__
     if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject) {
+#else
+    if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject &&
+        IrpSp->DeviceObject != CdData.HddFileSystemDeviceObject) {
+#endif
 
         NewIrpContext->Vcb =  &((PVOLUME_DEVICE_OBJECT) IrpSp->DeviceObject)->Vcb;
     
@@ -1959,7 +1976,7 @@ Return Value:
     //  Use a try-finally to safely clear the top-level field.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Loop until we find an Fcb we can't remove.
@@ -2063,7 +2080,7 @@ Return Value:
 
         } while (CurrentFcb != NULL);
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Release the current Fcb if we have acquired it.
@@ -2079,7 +2096,7 @@ Return Value:
         //
 
         ClearFlag( IrpContext->TopLevel->Flags, IRP_CONTEXT_FLAG_IN_TEARDOWN );
-    }
+    } _SEH2_END;
 
     *RemovedStartingFcb = (CurrentFcb != StartingFcb);
     return;
@@ -2493,7 +2510,7 @@ Return Value:
             Vcb->PathTableFcb = NULL;
         }
 
-        CdDeallocateFcbIndex( IrpContext, Fcb );
+        CdDeallocateFcbIndex( IrpContext, *(PVOID*)&Fcb );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
         break;
 
     case CDFS_NTC_FCB_DATA :
@@ -2511,7 +2528,7 @@ Return Value:
             Vcb->VolumeDasdFcb = NULL;
         }
 
-        CdDeallocateFcbData( IrpContext, Fcb );
+        CdDeallocateFcbData( IrpContext, *(PVOID*)&Fcb );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
     }
 
     //
@@ -2615,7 +2632,7 @@ Return Value:
     
     ExDeleteResourceLite( &FcbNonpaged->FcbResource );
 
-    CdDeallocateFcbNonpaged( IrpContext, FcbNonpaged );
+    CdDeallocateFcbNonpaged( IrpContext, *(PVOID*)&FcbNonpaged );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
 
     return;
 }
@@ -2626,6 +2643,7 @@ Return Value:
 //
 
 RTL_GENERIC_COMPARE_RESULTS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdFcbTableCompare (
     _In_ PRTL_GENERIC_TABLE FcbTable,
     _In_ PVOID Fid1,
@@ -2683,6 +2701,7 @@ Return Value:
 //
 
 PVOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdAllocateFcbTable (
     _In_ PRTL_GENERIC_TABLE FcbTable,
     _In_ CLONG ByteSize
@@ -2719,6 +2738,7 @@ Return Value:
 //  Local support routine
 //
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdDeallocateFcbTable (
     _In_ PRTL_GENERIC_TABLE FcbTable,
     _In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer
index 015b367..f53769a 100755 (executable)
@@ -13,7 +13,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -92,7 +92,7 @@ Return Value:
     Vcb = &CONTAINING_RECORD( IrpSp->DeviceObject,
                               VOLUME_DEVICE_OBJECT,
                               DeviceObject )->Vcb;
-    try {
+    _SEH2_TRY {
 
         //
         //  Send down the verify FSCTL.  Note that this is sent to the
@@ -206,7 +206,7 @@ Return Value:
             Status = CdFsdPostRequest( IrpContext, Irp );
         }
 
-    } except(CdExceptionFilter( IrpContext, GetExceptionInformation() )) {
+    } _SEH2_EXCEPT(CdExceptionFilter( IrpContext, _SEH2_GetExceptionInformation() )) {
 
         //
         //  We had some trouble trying to perform the verify or raised
@@ -214,8 +214,8 @@ Return Value:
         //  the error status that we get back from the execption code.
         //
 
-        Status = CdProcessException( IrpContext, Irp, GetExceptionCode() );
-    }
+        Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
+    } _SEH2_END;
 
     return Status;
 }
@@ -384,7 +384,9 @@ Return Value:
 
     IoAcquireVpbSpinLock( &SavedIrql );
 
+#ifdef _MSC_VER
 #pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
+#endif
     if (Vcb->Vpb->RealDevice->Vpb == Vcb->Vpb)  {
 
         CdMarkRealDevForVerify( Vcb->Vpb->RealDevice);
@@ -602,6 +604,9 @@ Return Value:
             CdRaiseStatus( IrpContext, STATUS_FILE_INVALID );
         }
         break;
+        
+    /* ReactOS Change: GCC "enumeration value not handled in switch" */
+    default: break;
     }
 }
 
@@ -881,7 +886,9 @@ Return Value:
     //  mount request.
     //
 
+#ifdef _MSC_VER
 #pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
+#endif
     if (OldVpb->RealDevice->Vpb == OldVpb) {
 
         //
@@ -897,11 +904,15 @@ Return Value:
             Vcb->SwapVpb->Type = IO_TYPE_VPB;
             Vcb->SwapVpb->Size = sizeof( VPB );
 
+#ifdef _MSC_VER
 #pragma prefast(push)
 #pragma prefast(disable: 28175, "this is a filesystem driver, touching the vpb is allowed")
+#endif
             Vcb->SwapVpb->RealDevice = OldVpb->RealDevice;
             Vcb->SwapVpb->RealDevice->Vpb = Vcb->SwapVpb;
+#ifdef _MSC_VER
 #pragma prefast(pop)
+#endif
 
             Vcb->SwapVpb->Flags = FlagOn( OldVpb->Flags, VPB_REMOVE_PENDING );
 
index 6640fd8..7448dd5 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -59,6 +59,10 @@ CdQueryFsAttributeInfo (
     _Inout_ PULONG Length
     );
 
+#ifdef __REACTOS__
+#define PFILE_FS_SECTOR_SIZE_INFORMATION PVOID
+#endif
+
 NTSTATUS
 CdQueryFsSectorSizeInfo (
     _In_ PIRP_CONTEXT IrpContext,
@@ -141,7 +145,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Verify the Vcb.
@@ -184,6 +188,9 @@ Return Value:
             Status = CdQueryFsSectorSizeInfo( IrpContext, Fcb->Vcb, Irp->AssociatedIrp.SystemBuffer, &Length );
             break;
 #endif
+
+        /* ReactOS Change: GCC "enumeration value not handled in switch" */
+        default: break;
         }
 
         //
@@ -192,14 +199,14 @@ Return Value:
 
         Irp->IoStatus.Information = IrpSp->Parameters.QueryVolume.Length - Length;
 
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Release the Vcb.
         //
 
         CdReleaseVcb( IrpContext, Fcb->Vcb );
-    }
+    } _SEH2_END;
 
     //
     //  Complete the request if we didn't raise.
diff --git a/drivers/filesystems/cdfs_new/wdk_wnet_to_ros.diff b/drivers/filesystems/cdfs_new/wdk_wnet_to_ros.diff
deleted file mode 100644 (file)
index f6144dd..0000000
+++ /dev/null
@@ -1,985 +0,0 @@
-Index: drivers/filesystems/cdfs_new/deviosup.c
-===================================================================
---- drivers/filesystems/cdfs_new/deviosup.c    (revision 34615)
-+++ drivers/filesystems/cdfs_new/deviosup.c    (working copy)
-@@ -165,6 +165,7 @@
-     );
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdMultiSyncCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -172,6 +173,7 @@
-     );
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdMultiAsyncCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -179,6 +181,7 @@
-     );
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdSingleSyncCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -186,6 +189,7 @@
-     );
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdSingleAsyncCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -2943,6 +2947,7 @@
- //
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdMultiSyncCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -3029,6 +3034,7 @@
- //
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdMultiAsyncCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -3066,7 +3072,8 @@
- {
-     PCD_IO_CONTEXT IoContext = Context;
--    PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation( Irp );
-+    /* ReactOS Change: GCC Unused Variable */
-+    //PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation( Irp );
-     AssertVerifyDeviceIrp( Irp );
-     
-@@ -3148,6 +3155,7 @@
- //
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdSingleSyncCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -3207,6 +3215,7 @@
- //
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdSingleAsyncCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -3267,7 +3276,7 @@
-     //  and finally, free the context record.
-     //
--    CdFreeIoContext( (PCD_IO_CONTEXT) Context );
-+    CdFreeIoContext(  Context ); /* ReactOS Change: GCC "error: invalid lvalue in unary '&'" */
-     return STATUS_SUCCESS;
-     UNREFERENCED_PARAMETER( DeviceObject );
-Index: drivers/filesystems/cdfs_new/dirctrl.c
-===================================================================
---- drivers/filesystems/cdfs_new/dirctrl.c     (revision 34615)
-+++ drivers/filesystems/cdfs_new/dirctrl.c     (working copy)
-@@ -209,7 +209,7 @@
-     ULONG BaseLength;
--    PFILE_BOTH_DIR_INFORMATION DirInfo;
-+    PFILE_BOTH_DIR_INFORMATION DirInfo = NULL; /* ReactOS Change: GCC Uninit var */
-     PFILE_NAMES_INFORMATION NamesInfo;
-     PFILE_ID_FULL_DIR_INFORMATION IdFullDirInfo;
-     PFILE_ID_BOTH_DIR_INFORMATION IdBothDirInfo;
-@@ -579,6 +579,9 @@
-                     NamesInfo->FileNameLength = FileNameBytes + SeparatorBytes + VersionStringBytes;
-     
-                     break;
-+
-+                /* ReactOS Change: GCC "enumeration value not handled in switch" */
-+                default: break;
-                 }
-                 //
-Index: drivers/filesystems/cdfs_new/create.c
-===================================================================
---- drivers/filesystems/cdfs_new/create.c      (revision 34615)
-+++ drivers/filesystems/cdfs_new/create.c      (working copy)
-@@ -2106,7 +2106,7 @@
-     PFCB NextFcb;
-     PFCB ParentFcb = NULL;
--    NTSTATUS Status;
-+    NTSTATUS Status = STATUS_SUCCESS; /* ReactOS Change: GCC uninitialized variable */
-     PAGED_CODE();
-@@ -2757,8 +2757,8 @@
-                 OplockStatus = FsRtlCheckOplock( &Fcb->Oplock,
-                                                  IrpContext->Irp,
-                                                  IrpContext,
--                                                 CdOplockComplete,
--                                                 CdPrePostIrp );
-+                                                 (PVOID)CdOplockComplete,   /* ReactOS Change: GCC "assignment from incompatible pointer type" */
-+                                                 (PVOID)CdPrePostIrp );   /* ReactOS Change: GCC "assignment from incompatible pointer type" */
-                 if (OplockStatus == STATUS_PENDING) {
-@@ -2789,8 +2789,8 @@
-             OplockStatus = FsRtlCheckOplock( &Fcb->Oplock,
-                                              IrpContext->Irp,
-                                              IrpContext,
--                                             CdOplockComplete,
--                                             CdPrePostIrp );
-+                                             (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-+                                             (PVOID)CdPrePostIrp );/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-             if (OplockStatus == STATUS_PENDING) {
-Index: drivers/filesystems/cdfs_new/devctrl.c
-===================================================================
---- drivers/filesystems/cdfs_new/devctrl.c     (revision 34615)
-+++ drivers/filesystems/cdfs_new/devctrl.c     (working copy)
-@@ -27,6 +27,7 @@
- //
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdDevCtrlCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -64,7 +64,7 @@
-     PIO_STACK_LOCATION IrpSp;
-     PIO_STACK_LOCATION NextIrpSp;
--    PVOID TargetBuffer = NULL;
-+//    PVOID TargetBuffer = NULL; /* ReactOS Change: GCC unused variable */
-     PAGED_CODE();
-@@ -171,6 +172,7 @@
- //
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdDevCtrlCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-Index: drivers/filesystems/cdfs_new/close.c
-===================================================================
---- drivers/filesystems/cdfs_new/close.c       (revision 34615)
-+++ drivers/filesystems/cdfs_new/close.c       (working copy)
-@@ -77,6 +77,7 @@
-     );
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdCloseWorker (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PVOID Context
-@@ -136,9 +137,9 @@
-     //
-     //  Continue processing until there are no more closes to process.
-     //
-+    /* ReactOS Change: "GCC suggest parentheses around assignment used as truth value" */
-+    while ((IrpContext = CdRemoveClose( Vcb ))) {
--    while (IrpContext = CdRemoveClose( Vcb )) {
--
-         //
-         //  If we don't have an IrpContext then use the one on the stack.
-         //  Initialize it for this request.
-@@ -165,7 +166,7 @@
-             //  Free the IrpContextLite.
-             //
--            CdFreeIrpContextLite( (PIRP_CONTEXT_LITE) IrpContext );
-+            CdFreeIrpContextLite( IrpContext ); /* ReactOS Change: GCC "error: invalid lvalue in unary '&'" */
-             //
-             //  Remember we have the IrpContext from the stack.
-@@ -662,6 +663,7 @@
- }
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdCloseWorker (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PVOID Context
-Index: drivers/filesystems/cdfs_new/dirsup.c
-===================================================================
---- drivers/filesystems/cdfs_new/dirsup.c      (revision 34615)
-+++ drivers/filesystems/cdfs_new/dirsup.c      (working copy)
-@@ -465,7 +465,7 @@
-     //  Save a pointer to the time stamps.
-     //
--    Dirent->CdTime = RawDirent->RecordTime;
-+    Dirent->CdTime = (PCHAR)RawDirent->RecordTime; /* ReactOS change: GCC "pointer targets in assignment differ in signedness" */
-     //
-     //  Copy the dirent flags.
-@@ -501,7 +501,7 @@
-     }
-     Dirent->FileNameLen = RawDirent->FileIdLen;
--    Dirent->FileName = RawDirent->FileId;
-+    Dirent->FileName = (PCHAR)RawDirent->FileId; /* ReactOS change: GCC "pointer targets in assignment differ in signedness" */
-     //
-     //  If there are any remaining bytes at the end of the dirent then
-@@ -1457,7 +1457,7 @@
- --*/
- {
--    XA_EXTENT_TYPE ExtentType;
-+    XA_EXTENT_TYPE ExtentType = 0; /* ReactOS Change: GCC Uninit var */
-     PCOMPOUND_DIRENT CurrentCompoundDirent;
-     PDIRENT CurrentDirent;
-Index: drivers/filesystems/cdfs_new/read.c
-===================================================================
---- drivers/filesystems/cdfs_new/read.c        (revision 34615)
-+++ drivers/filesystems/cdfs_new/read.c        (working copy)
-@@ -79,7 +79,7 @@
- --*/
- {
--    NTSTATUS Status;
-+    NTSTATUS Status = STATUS_SUCCESS; /* ReactOS Change: GCC Uninit var */
-     PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation( Irp );
-     TYPE_OF_OPEN TypeOfOpen;
-@@ -225,8 +225,8 @@
-             Status = FsRtlCheckOplock( &Fcb->Oplock,
-                                        Irp,
-                                        IrpContext,
--                                       CdOplockComplete,
--                                       CdPrePostIrp );
-+                                       (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-+                                       (PVOID)CdPrePostIrp );/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-             //
-             //  If the result is not STATUS_SUCCESS then the Irp was completed
-Index: drivers/filesystems/cdfs_new/volinfo.c
-===================================================================
---- drivers/filesystems/cdfs_new/volinfo.c     (revision 34615)
-+++ drivers/filesystems/cdfs_new/volinfo.c     (working copy)
-@@ -166,8 +166,11 @@
-             Status = CdQueryFsAttributeInfo( IrpContext, Fcb->Vcb, Irp->AssociatedIrp.SystemBuffer, &Length );
-             break;
-+                
-+        /* ReactOS Change: GCC "enumeration value not handled in switch" */
-+        default: break;
-         }
--
-+        
-         //
-         //  Set the information field to the number of bytes actually filled in
-         //
-Index: drivers/filesystems/cdfs_new/cddata.c
-===================================================================
---- drivers/filesystems/cdfs_new/cddata.c      (revision 34615)
-+++ drivers/filesystems/cdfs_new/cddata.c      (working copy)
-@@ -417,7 +417,6 @@
-     return Status;
- }
--
- #ifdef CD_SANITY
- VOID
-@@ -481,7 +480,6 @@
- #endif
--
- LONG
- CdExceptionFilter (
-     IN PIRP_CONTEXT IrpContext,
-@@ -1006,6 +1004,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastIoCheckIfPossible (
-     IN PFILE_OBJECT FileObject,
-     IN PLARGE_INTEGER FileOffset,
-Index: drivers/filesystems/cdfs_new/allocsup.c
-===================================================================
---- drivers/filesystems/cdfs_new/allocsup.c    (revision 34615)
-+++ drivers/filesystems/cdfs_new/allocsup.c    (working copy)
-@@ -128,7 +128,7 @@
- {
-     BOOLEAN FirstPass = TRUE;
-     ULONG McbEntryOffset;
--    PFCB ParentFcb;
-+    PFCB ParentFcb = NULL; /* ReactOS Change: GCC uninitialized variable bug */
-     BOOLEAN CleanupParent = FALSE;
-     BOOLEAN UnlockFcb = FALSE;
-Index: drivers/filesystems/cdfs_new/verfysup.c
-===================================================================
---- drivers/filesystems/cdfs_new/verfysup.c    (revision 34615)
-+++ drivers/filesystems/cdfs_new/verfysup.c    (working copy)
-@@ -431,7 +431,7 @@
-     ULONG MediaChangeCount = 0;
-     BOOLEAN ForceVerify = FALSE;
-     BOOLEAN DevMarkedForVerify;
--    KIRQL SavedIrql;
-+    //KIRQL SavedIrql; /* ReactOS Change: GCC Unused variable */
-     PAGED_CODE();
-@@ -581,6 +581,9 @@
-         CdRaiseStatus( IrpContext, STATUS_FILE_INVALID );
-         break;
-+        
-+    /* ReactOS Change: GCC "enumeration value not handled in switch" */
-+    default: break;
-     }
- }
-@@ -613,7 +616,7 @@
- --*/
- {
--    NTSTATUS Status = STATUS_SUCCESS;
-+    //NTSTATUS Status = STATUS_SUCCESS; /* ReactOS Change: GCC Unused variable */
-     PVCB Vcb = Fcb->Vcb;
-     PDEVICE_OBJECT RealDevice = Vcb->Vpb->RealDevice;
-     PIRP Irp;
-Index: drivers/filesystems/cdfs_new/filobsup.c
-===================================================================
---- drivers/filesystems/cdfs_new/filobsup.c    (revision 34615)
-+++ drivers/filesystems/cdfs_new/filobsup.c    (working copy)
-@@ -105,7 +105,7 @@
-     FileObject->FsContext = Fcb;
-     FileObject->FsContext2 = Ccb;
--    SetFlag( ((ULONG_PTR) FileObject->FsContext2), TypeOfOpen );
-+    SetFlag( (*(PULONG_PTR)&FileObject->FsContext2), TypeOfOpen ); /* ReactOS Change: GCC "invalid lvalue in assignment" */
-     //
-     //  Set the Vpb field in the file object.
-@@ -176,7 +176,7 @@
-         *Fcb = FileObject->FsContext;
-         *Ccb = FileObject->FsContext2;
--        ClearFlag( (ULONG_PTR) *Ccb, TYPE_OF_OPEN_MASK );
-+        ClearFlag( (*(PULONG_PTR)Ccb), TYPE_OF_OPEN_MASK ); /* ReactOS Change: GCC "invalid lvalue in assignment" */
-     }
-     //
-Index: drivers/filesystems/cdfs_new/pathsup.c
-===================================================================
---- drivers/filesystems/cdfs_new/pathsup.c     (revision 34615)
-+++ drivers/filesystems/cdfs_new/pathsup.c     (working copy)
-@@ -764,7 +764,7 @@
-     PathEntry->PathEntryLength = WordAlign( PathEntry->PathEntryLength );
--    PathEntry->DirName = RawPathEntry->DirId;
-+    PathEntry->DirName = (PCHAR)RawPathEntry->DirId; /* ReactOS Change: GCC "assignment makes pointer from integer without a cast" */
-     return TRUE;
- }
-Index: drivers/filesystems/cdfs_new/cdprocs.h
-===================================================================
---- drivers/filesystems/cdfs_new/cdprocs.h     (revision 34615)
-+++ drivers/filesystems/cdfs_new/cdprocs.h     (working copy)
-@@ -902,33 +904,39 @@
- }
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdNoopAcquire (
-     IN PVOID Fcb,
-     IN BOOLEAN Wait
-     );
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdNoopRelease (
-     IN PVOID Fcb
-     );
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdAcquireForCache (
-     IN PFCB Fcb,
-     IN BOOLEAN Wait
-     );
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdReleaseFromCache (
-     IN PFCB Fcb
-     );
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdAcquireForCreateSection (
-     IN PFILE_OBJECT FileObject
-     );
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdReleaseForCreateSection (
-     IN PFILE_OBJECT FileObject
-     );
-@@ -1184,8 +1192,8 @@
- //  Verification support routines.  Contained in verfysup.c
- //
--
--INLINE
-+/* ReactOS Change: "LD multiple definition of `_CdOperationIsDasdOpen'" */
-+static inline
- BOOLEAN
- CdOperationIsDasdOpen(
-     IN PIRP_CONTEXT IrpContext
-@@ -1272,12 +1280,14 @@
-     );
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdPrePostIrp (
-     IN PIRP_CONTEXT IrpContext,
-     IN PIRP Irp
-     );
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdOplockComplete (
-     IN PIRP_CONTEXT IrpContext,
-     IN PIRP Irp
-@@ -1293,7 +1303,9 @@
- //  otherwise
- //
--//#ifndef BooleanFlagOn
-+/* ReactOS Change: GCC doesn't understand the comment style */
-+/*
-+ //#ifndef BooleanFlagOn
- //#define BooleanFlagOn(F,SF) (    \
- //    (BOOLEAN)(((F) & (SF)) != 0) \
- //)
-@@ -1310,6 +1322,7 @@
- //    (Flags) &= ~(SingleFlag);         \
- //}
- //#endif
-+*/
- //
- //      CAST
-@@ -1598,6 +1611,7 @@
- //
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastQueryBasicInfo (
-     IN PFILE_OBJECT FileObject,
-     IN BOOLEAN Wait,
-@@ -1607,6 +1621,7 @@
-     );
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastQueryStdInfo (
-     IN PFILE_OBJECT FileObject,
-     IN BOOLEAN Wait,
-@@ -1616,6 +1631,7 @@
-     );
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastLock (
-     IN PFILE_OBJECT FileObject,
-     IN PLARGE_INTEGER FileOffset,
-@@ -1629,6 +1645,7 @@
-     );
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastUnlockSingle (
-     IN PFILE_OBJECT FileObject,
-     IN PLARGE_INTEGER FileOffset,
-@@ -1640,6 +1657,7 @@
-     );
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastUnlockAll (
-     IN PFILE_OBJECT FileObject,
-     PEPROCESS ProcessId,
-@@ -1648,6 +1666,7 @@
-     );
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastUnlockAllByKey (
-     IN PFILE_OBJECT FileObject,
-     PVOID ProcessId,
-@@ -1657,6 +1676,7 @@
-     );
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastIoCheckIfPossible (
-     IN PFILE_OBJECT FileObject,
-     IN PLARGE_INTEGER FileOffset,
-@@ -1669,6 +1689,7 @@
-     );
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastQueryNetworkInfo (
-     IN PFILE_OBJECT FileObject,
-     IN BOOLEAN Wait,
-@@ -1862,17 +1883,26 @@
- //
- //      #define try_return(S)  { S; goto try_exit; }
- //
-+/* ReactOS Change: Remove SEH */
-+#define try
-+#define leave goto exitLabel;
-+#define finally  if (0) goto exitLabel; exitLabel:
-+#define except(x) while (0)
-+#define GetExceptionCode() 0
-+#define AbnormalTermination() 0
- #define try_return(S) { S; goto try_exit; }
- #define try_leave(S) { S; leave; }
-+
- //
- //  Encapsulate safe pool freeing
- //
-+/* ReactOS Change: GCC "passing argument 1 of CdFreePool from incompatible pointer type" */
-+#define CdFreePool(x) _CdFreePool((PVOID*)(x))
--INLINE
--VOID
--CdFreePool(
-+/* ReactOS Change: "LD multiple definition of `_CdOperationIsDasdOpen'" */
-+static inline void _CdFreePool(
-     IN PVOID *Pool
-     )
- {
-Index: drivers/filesystems/cdfs_new/resrcsup.c
-===================================================================
---- drivers/filesystems/cdfs_new/resrcsup.c    (revision 34615)
-+++ drivers/filesystems/cdfs_new/resrcsup.c    (working copy)
-@@ -123,6 +123,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdAcquireForCache (
-     IN PFCB Fcb,
-     IN BOOLEAN Wait
-@@ -159,6 +160,7 @@
\f
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdReleaseFromCache (
-     IN PFCB Fcb
-     )
-@@ -193,6 +195,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdNoopAcquire (
-     IN PVOID Fcb,
-     IN BOOLEAN Wait
-@@ -224,6 +227,7 @@
\f
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdNoopRelease (
-     IN PVOID Fcb
-     )
-@@ -251,6 +255,7 @@
\f
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdAcquireForCreateSection (
-     IN PFILE_OBJECT FileObject
-     )
-@@ -298,6 +303,7 @@
\f
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdReleaseForCreateSection (
-     IN PFILE_OBJECT FileObject
-     )
-Index: drivers/filesystems/cdfs_new/namesup.c
-===================================================================
---- drivers/filesystems/cdfs_new/namesup.c     (revision 34615)
-+++ drivers/filesystems/cdfs_new/namesup.c     (working copy)
-@@ -206,7 +206,7 @@
- {
-     NTSTATUS Status;
--    PVOID NewBuffer;
-+    //PVOID NewBuffer; /* ReactOS Change: GCC Uninitialized variable */
-     PAGED_CODE();
-Index: drivers/filesystems/cdfs_new/cdinit.c
-===================================================================
---- drivers/filesystems/cdfs_new/cdinit.c      (revision 34615)
-+++ drivers/filesystems/cdfs_new/cdinit.c      (working copy)
-@@ -22,12 +22,14 @@
- #define BugCheckFileId                   (CDFS_BUG_CHECK_CDINIT)
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- DriverEntry(
-     IN PDRIVER_OBJECT DriverObject,
-     IN PUNICODE_STRING RegistryPath
-     );
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdUnload(
-     IN PDRIVER_OBJECT DriverObject
-     );
-@@ -39,6 +41,7 @@
-     );
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdShutdown (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp
-@@ -57,6 +60,7 @@
- //
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- DriverEntry(
-     IN PDRIVER_OBJECT DriverObject,
-     IN PUNICODE_STRING RegistryPath
-@@ -169,6 +173,7 @@
- }
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdShutdown (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp
-@@ -200,6 +205,7 @@
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdUnload(
-     IN PDRIVER_OBJECT DriverObject
-     )
-@@ -310,10 +316,10 @@
-     //  Initialize the cache manager callback routines
-     //
--    CdData.CacheManagerCallbacks.AcquireForLazyWrite  = &CdAcquireForCache;
--    CdData.CacheManagerCallbacks.ReleaseFromLazyWrite = &CdReleaseFromCache;
--    CdData.CacheManagerCallbacks.AcquireForReadAhead  = &CdAcquireForCache;
--    CdData.CacheManagerCallbacks.ReleaseFromReadAhead = &CdReleaseFromCache;
-+    CdData.CacheManagerCallbacks.AcquireForLazyWrite  = (PVOID)&CdAcquireForCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-+    CdData.CacheManagerCallbacks.ReleaseFromLazyWrite = (PVOID)&CdReleaseFromCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-+    CdData.CacheManagerCallbacks.AcquireForReadAhead  = (PVOID)&CdAcquireForCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-+    CdData.CacheManagerCallbacks.ReleaseFromReadAhead = (PVOID)&CdReleaseFromCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-     CdData.CacheManagerVolumeCallbacks.AcquireForLazyWrite  = &CdNoopAcquire;
-     CdData.CacheManagerVolumeCallbacks.ReleaseFromLazyWrite = &CdNoopRelease;
-Index: drivers/filesystems/cdfs_new/cdstruc.h
-===================================================================
---- drivers/filesystems/cdfs_new/cdstruc.h     (revision 34615)
-+++ drivers/filesystems/cdfs_new/cdstruc.h     (working copy)
-@@ -504,8 +504,8 @@
-     //
-     ULONG VcbCleanup;
--    ULONG VcbReference;
--    ULONG VcbUserReference;
-+    LONG VcbReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
-+    LONG VcbUserReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
-     //
-     //  Fcb for the Volume Dasd file, root directory and the Path Table.
-@@ -655,7 +655,7 @@
-     //  executed later.
-     //
--    ULONG PostedRequestCount;
-+    LONG PostedRequestCount; /* ReactOS Change: GCC "pointer targets in passing argument 1 of 'InterlockedDecrement' differ in signedness" */
-     //
-     //  The following field indicates the number of IRP's waiting
-@@ -878,7 +878,7 @@
-     //
-     ULONG FcbCleanup;
--    ULONG FcbReference;
-+    LONG FcbReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
-     ULONG FcbUserReference;
-     //
-Index: drivers/filesystems/cdfs_new/lockctrl.c
-===================================================================
---- drivers/filesystems/cdfs_new/lockctrl.c    (revision 34615)
-+++ drivers/filesystems/cdfs_new/lockctrl.c    (working copy)
-@@ -89,7 +89,7 @@
-     Status = FsRtlCheckOplock( &Fcb->Oplock,
-                                Irp,
-                                IrpContext,
--                               CdOplockComplete,
-+                               (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-                                NULL );
-     //
-@@ -138,6 +138,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastLock (
-     IN PFILE_OBJECT FileObject,
-     IN PLARGE_INTEGER FileOffset,
-@@ -246,8 +247,8 @@
-         //
-         //  Now call the FsRtl routine to perform the lock request.
-         //
--
--        if (Results = FsRtlFastLock( Fcb->FileLock,
-+        /* ReactOS Change: GCC "suggest parentheses around assignment used as truth value" */
-+        if ((Results = FsRtlFastLock( Fcb->FileLock,
-                                      FileObject,
-                                      FileOffset,
-                                      Length,
-@@ -257,7 +258,7 @@
-                                      ExclusiveLock,
-                                      IoStatus,
-                                      NULL,
--                                     FALSE )) {
-+                                     FALSE ))) {
-             //
-             //  Set the flag indicating if Fast I/O is questionable.  We
-@@ -284,6 +285,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastUnlockSingle (
-     IN PFILE_OBJECT FileObject,
-     IN PLARGE_INTEGER FileOffset,
-@@ -424,6 +426,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastUnlockAll (
-     IN PFILE_OBJECT FileObject,
-     PEPROCESS ProcessId,
-@@ -546,6 +549,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastUnlockAllByKey (
-     IN PFILE_OBJECT FileObject,
-     PVOID ProcessId,
-Index: drivers/filesystems/cdfs_new/strucsup.c
-===================================================================
---- drivers/filesystems/cdfs_new/strucsup.c    (revision 34615)
-+++ drivers/filesystems/cdfs_new/strucsup.c    (working copy)
-@@ -438,7 +438,7 @@
- --*/
- {
--    ULONG Shift;
-+    //ULONG Shift; /* ReactOS Change: GCC Unused variable */
-     ULONG StartingBlock;
-     ULONG ByteCount;
-Index: drivers/filesystems/cdfs_new/fileinfo.c
-===================================================================
---- drivers/filesystems/cdfs_new/fileinfo.c    (revision 34615)
-+++ drivers/filesystems/cdfs_new/fileinfo.c    (working copy)
-@@ -460,6 +460,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastQueryBasicInfo (
-     IN PFILE_OBJECT FileObject,
-     IN BOOLEAN Wait,
-@@ -577,6 +578,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastQueryStdInfo (
-     IN PFILE_OBJECT FileObject,
-     IN BOOLEAN Wait,
-@@ -704,6 +706,7 @@
\f
- BOOLEAN
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdFastQueryNetworkInfo (
-     IN PFILE_OBJECT FileObject,
-     IN BOOLEAN Wait,
-Index: drivers/filesystems/cdfs_new/fsctrl.c
-===================================================================
---- drivers/filesystems/cdfs_new/fsctrl.c      (revision 34615)
-+++ drivers/filesystems/cdfs_new/fsctrl.c      (working copy)
-@@ -82,7 +82,8 @@
-     IN PIRP_CONTEXT IrpContext,
-     IN PIRP Irp
-     );
--
-+    
-+NTSTATUS /* ReactOS Change: Function did not have a type??? */
- CdIsVolumeDirty (
-     IN PIRP_CONTEXT IrpContext,
-     IN PIRP Irp
-@@ -918,7 +919,7 @@
-         if (CdIsRemount( IrpContext, Vcb, &OldVcb )) {
--            KIRQL SavedIrql;
-+            //KIRQL SavedIrql; /* ReactOS Change: GCC Unused variable */
-             ASSERT( NULL != OldVcb->SwapVpb );
-@@ -1374,7 +1375,7 @@
-                         //  Compute the length of the volume name
-                         //
--                        AnsiLabel.Buffer = CdRvdVolId( RawIsoVd, Vcb->VcbState );
-+                        AnsiLabel.Buffer = (PCHAR)CdRvdVolId( RawIsoVd, Vcb->VcbState ); /* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
-                         AnsiLabel.MaximumLength = AnsiLabel.Length = VOLUME_ID_LENGTH;
-                         UnicodeLabel.MaximumLength = VOLUME_ID_LENGTH * sizeof( WCHAR );
-@@ -1401,7 +1402,7 @@
-                     } else {
-                         CdConvertBigToLittleEndian( IrpContext,
--                                                    CdRvdVolId( RawIsoVd, Vcb->VcbState ),
-+                                                    (PCHAR)CdRvdVolId( RawIsoVd, Vcb->VcbState ),/* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
-                                                     VOLUME_ID_LENGTH,
-                                                     (PCHAR) VolumeLabel );
-@@ -2005,7 +2006,7 @@
- //
- //  Local support routine
- //
--
-+NTSTATUS /* ReactOS Change: Function did not have a type??? */
- CdIsVolumeDirty (
-     IN PIRP_CONTEXT IrpContext,
-     IN PIRP Irp
-@@ -2296,9 +2297,9 @@
-                                         0,
-                                         *IoFileObjectType,
-                                         KernelMode,
--                                        &FileToMarkBad,
-+                                        (PVOID*)&FileToMarkBad, /* ReactOS Change: GCC "passing argument 5 of 'ObReferenceObjectByHandle' from incompatible pointer type" */
-                                         NULL );
-     if (!NT_SUCCESS(Status)) {
-@@ -2642,8 +2643,8 @@
-                     //  The track address is BigEndian, we need to flip the bytes.
-                     //
--                    Source = (PUCHAR) &CdromToc->TrackData[0].Address[3];
--                    Dest = (PUCHAR) &BaseSector;
-+                    Source = (PCHAR) &CdromToc->TrackData[0].Address[3];/* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
-+                    Dest = (PCHAR) &BaseSector; /* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
-                     do {
-@@ -3118,7 +3119,7 @@
-         if (NT_SUCCESS( RtlOemToUnicodeN( &Vcb->Vpb->VolumeLabel[0],
-                                           MAXIMUM_VOLUME_LABEL_LENGTH,
-                                           &Length,
--                                          CdRvdVolId( RawIsoVd, Vcb->VcbState ),
-+                                          (PCHAR)CdRvdVolId( RawIsoVd, Vcb->VcbState ),/* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
-                                           VOLUME_ID_LENGTH ))) {
-             Vcb->Vpb->VolumeLabelLength = (USHORT) Length;
-@@ -3131,7 +3132,7 @@
-     } else {
-         CdConvertBigToLittleEndian( IrpContext,
--                                    CdRvdVolId( RawIsoVd, Vcb->VcbState ),
-+                                    (PCHAR)CdRvdVolId( RawIsoVd, Vcb->VcbState ),/* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
-                                     VOLUME_ID_LENGTH,
-                                     (PCHAR) Vcb->Vpb->VolumeLabel );
-Index: drivers/filesystems/cdfs_new/pnp.c
-===================================================================
---- drivers/filesystems/cdfs_new/pnp.c (revision 34615)
-+++ drivers/filesystems/cdfs_new/pnp.c (working copy)
-@@ -51,6 +51,7 @@
-     );
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdPnpCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-@@ -774,6 +775,7 @@
- //
- NTSTATUS
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdPnpCompletionRoutine (
-     IN PDEVICE_OBJECT DeviceObject,
-     IN PIRP Irp,
-Index: drivers/filesystems/cdfs_new/workque.c
-===================================================================
---- drivers/filesystems/cdfs_new/workque.c     (revision 34615)
-+++ drivers/filesystems/cdfs_new/workque.c     (working copy)
-@@ -97,6 +97,7 @@
\f
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdPrePostIrp (
-     IN PIRP_CONTEXT IrpContext,
-     IN PIRP Irp
-@@ -209,6 +210,7 @@
\f
- VOID
-+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
- CdOplockComplete (
-     IN PIRP_CONTEXT IrpContext,
-     IN PIRP Irp
-@@ -386,7 +388,7 @@
-     //
-     ExInitializeWorkItem( &IrpContext->WorkQueueItem,
--                          CdFspDispatch,
-+                          (PVOID)CdFspDispatch,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
-                           IrpContext );
-     ExQueueWorkItem( &IrpContext->WorkQueueItem, CriticalWorkQueue );
index ee54882..e3975a8 100755 (executable)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -100,6 +100,7 @@ Return Value:
     
 _Requires_lock_held_(_Global_critical_region_)
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdPrePostIrp (
     _Inout_ PIRP_CONTEXT IrpContext,
     _Inout_ PIRP Irp
@@ -224,6 +225,7 @@ Return Value:
 
 _Requires_lock_held_(_Global_critical_region_)
 VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
 CdOplockComplete (
     _Inout_ PIRP_CONTEXT IrpContext,
     _Inout_ PIRP Irp
@@ -401,12 +403,16 @@ Return Value:
     //  Send it off.....
     //
 
+#ifdef _MSC_VER
 #pragma prefast(suppress:28155, "the function prototype is correct")
+#endif
     ExInitializeWorkItem( &IrpContext->WorkQueueItem,
-                          CdFspDispatch,
+                          (PVOID)CdFspDispatch,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
                           IrpContext );
 
+#ifdef _MSC_VER
 #pragma prefast(suppress: 28159, "prefast believes this routine is obsolete, but it is ok for CDFS to continue using it")
+#endif
     ExQueueWorkItem( &IrpContext->WorkQueueItem, CriticalWorkQueue );
 
     return;
index 36a41a7..70c8494 100644 (file)
@@ -14,7 +14,7 @@ Abstract:
 
 --*/
 
-#include "CdProcs.h"
+#include "cdprocs.h"
 
 //
 //  The Bug check file id for this module
@@ -34,15 +34,24 @@ Abstract:
 //  This macro just puts a nice little try-except around RtlZeroMemory
 //
 
+#ifndef __REACTOS__
 #define SafeZeroMemory(IC,AT,BYTE_COUNT) {                  \
-    try {                                                   \
+    _SEH2_TRY {                                             \
         RtlZeroMemory( (AT), (BYTE_COUNT) );                \
 __pragma(warning(suppress: 6320))                           \
-    } except( EXCEPTION_EXECUTE_HANDLER ) {                 \
+    } _SEH2_EXCEPT( EXCEPTION_EXECUTE_HANDLER ) {           \
          CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER );   \
-    }                                                       \
+    } _SEH2_END;                                            \
 }
-
+#else
+#define SafeZeroMemory(IC,AT,BYTE_COUNT) {                  \
+    _SEH2_TRY {                                             \
+        RtlZeroMemory( (AT), (BYTE_COUNT) );                \
+    } _SEH2_EXCEPT( EXCEPTION_EXECUTE_HANDLER ) {           \
+         CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER );   \
+    } _SEH2_END;                                            \
+}
+#endif
 
 #ifdef ALLOC_PRAGMA
 #pragma alloc_text(PAGE, CdCommonWrite)
@@ -153,7 +162,7 @@ Return Value:
     //  Use a try-finally to facilitate cleanup.
     //
 
-    try {
+    _SEH2_TRY {
 
         //
         //  Verify the Fcb.  Allow writes if this is a DASD handle that is 
@@ -346,7 +355,7 @@ Return Value:
         }
 
     try_exit:  NOTHING;
-    } finally {
+    } _SEH2_FINALLY {
 
         //
         //  Release the Fcb.
@@ -356,7 +365,7 @@ Return Value:
 
             CdReleaseFile( IrpContext, Fcb );
         }
-    }
+    } _SEH2_END;
 
     //
     //  Post the request if we got CANT_WAIT.