diff -bruN reiserfs_org/inc/linux/errno.h reiserfs/inc/linux/errno.h
--- reiserfs_org/inc/linux/errno.h	2008-08-31 02:33:48 +0300
+++ reiserfs/inc/linux/errno.h	2016-03-24 12:23:12 +0200
@@ -46,7 +46,9 @@
 #undef ENOTEMPTY
 #define	ENOTEMPTY	39	/* Directory not empty */
 #define	ELOOP		40	/* Too many symbolic links encountered */
+#ifndef __REACTOS__
 #define	EWOULDBLOCK	EAGAIN	/* Operation would block */
+#endif
 #define	ENOMSG		42	/* No message of desired type */
 #define	EIDRM		43	/* Identifier removed */
 #define	ECHRNG		44	/* Channel number out of range */
diff -bruN reiserfs_org/inc/linux/module.h reiserfs/inc/linux/module.h
--- reiserfs_org/inc/linux/module.h	2008-09-10 17:55:06 +0300
+++ reiserfs/inc/linux/module.h	2016-03-24 12:33:58 +0200
@@ -71,7 +71,7 @@
 struct nls_table {
         char *charset;
         int (*uni2char) (wchar_t uni, unsigned char *out, int boundlen);
-        int (*char2uni) ( unsigned char *rawstring, int boundlen,
+        int (*char2uni) (const  unsigned char *rawstring, int boundlen,
                          wchar_t *uni);
         unsigned char *charset2lower;
         unsigned char *charset2upper;
diff -bruN reiserfs_org/inc/linux/types.h reiserfs/inc/linux/types.h
--- reiserfs_org/inc/linux/types.h	2008-09-05 18:11:20 +0300
+++ reiserfs/inc/linux/types.h	2016-03-24 12:21:34 +0200
@@ -1,7 +1,7 @@
 #ifndef _LINUX_TYPES_H
 #define _LINUX_TYPES_H
 
-#ifndef _MSC_VER
+#if !defined(_MSC_VER) && !defined(__REACTOS__)
 #error  _MSC_VER not defined
 #endif
 
diff -bruN reiserfs_org/inc/rfsd.h reiserfs/inc/rfsd.h
--- reiserfs_org/inc/rfsd.h	2015-12-25 16:15:01 +0200
+++ reiserfs/inc/rfsd.h	2016-03-24 17:45:31 +0200
@@ -11,16 +11,22 @@
 #ifndef _RFSD_HEADER_
 #define _RFSD_HEADER_
 
+#ifdef _MSC_VER
 #ifndef _PREFAST_
 #pragma warning(disable:4068)
 #define __drv_mustHoldCriticalRegion
 #endif // !_PREFAST_
+#endif
 
 /* INCLUDES *************************************************************/
 
 #include <linux/module.h>
 //#include <linux/reiserfs_fs.h>	// Full ReiserFS header
 #include "reiserfs.h"				// Simplified ReiserFS header
+#ifdef __REACTOS__
+#include <ndk/rtlfuncs.h>
+#include <pseh/pseh2.h>
+#endif
 
 typedef struct reiserfs_super_block_v1		RFSD_SUPER_BLOCK, *PRFSD_SUPER_BLOCK;
 typedef struct stat_data					RFSD_INODE, *PRFSD_INODE;
@@ -955,34 +961,34 @@
 IO_WORKITEM_ROUTINE RfsdDeQueueCloseRequest;
 #endif // _PREFAST_
 
-VOID
+VOID NTAPI
 RfsdDeQueueCloseRequest (IN PVOID Context);
 
 //
 // Cmcb.c
 //
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdAcquireForLazyWrite (
         IN PVOID    Context,
         IN BOOLEAN  Wait );
-VOID
+VOID NTAPI
 RfsdReleaseFromLazyWrite (IN PVOID Context);
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdAcquireForReadAhead (
         IN PVOID    Context,
         IN BOOLEAN  Wait );
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdNoOpAcquire (
         IN PVOID Fcb,
         IN BOOLEAN Wait );
 
-VOID
+VOID NTAPI
 RfsdNoOpRelease (IN PVOID Fcb    );
 
-VOID
+VOID NTAPI
 RfsdReleaseFromReadAhead (IN PVOID Context);
 
 //
@@ -1060,6 +1066,7 @@
 #else
 
 #define RfsdPrint(arg)
+#define RfsdPrintNoIndent(arg)
 
 #define RfsdCompleteRequest(Irp, bPrint, PriorityBoost) \
         IoCompleteRequest(Irp, PriorityBoost)
@@ -1176,7 +1183,7 @@
 IO_WORKITEM_ROUTINE RfsdDeQueueRequest;
 #endif // _PREFAST_
 
-VOID
+VOID NTAPI
 RfsdDeQueueRequest (IN PVOID Context);
 
 NTSTATUS
@@ -1202,7 +1209,7 @@
 DRIVER_DISPATCH RfsdBuildRequest;
 #endif // _PREFAST_
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdBuildRequest (
         IN PDEVICE_OBJECT   DeviceObject,
         IN PIRP             Irp
@@ -1518,7 +1525,7 @@
 FAST_IO_CHECK_IF_POSSIBLE RfsdFastIoCheckIfPossible;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoCheckIfPossible (
               IN PFILE_OBJECT         FileObject,
               IN PLARGE_INTEGER       FileOffset,
@@ -1533,7 +1540,7 @@
 FAST_IO_READ RfsdFastIoRead;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoRead (IN PFILE_OBJECT FileObject,
         IN PLARGE_INTEGER       FileOffset,
         IN ULONG                Length,
@@ -1547,7 +1554,7 @@
 FAST_IO_WRITE RfsdFastIoWrite;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoWrite (
         IN PFILE_OBJECT         FileObject,
         IN PLARGE_INTEGER       FileOffset,
@@ -1562,7 +1569,7 @@
 FAST_IO_QUERY_BASIC_INFO RfsdFastIoQueryBasicInfo;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoQueryBasicInfo (
               IN PFILE_OBJECT             FileObject,
               IN BOOLEAN                  Wait,
@@ -1574,7 +1581,7 @@
 FAST_IO_QUERY_STANDARD_INFO RfsdFastIoQueryStandardInfo;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoQueryStandardInfo (
                  IN PFILE_OBJECT                 FileObject,
                  IN BOOLEAN                      Wait,
@@ -1586,7 +1593,7 @@
 FAST_IO_LOCK RfsdFastIoLock;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoLock (
            IN PFILE_OBJECT         FileObject,
            IN PLARGE_INTEGER       FileOffset,
@@ -1603,7 +1610,7 @@
 FAST_IO_UNLOCK_SINGLE RfsdFastIoUnlockSingle;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoUnlockSingle (
                IN PFILE_OBJECT         FileObject,
                IN PLARGE_INTEGER       FileOffset,
@@ -1618,7 +1625,7 @@
 FAST_IO_UNLOCK_ALL RfsdFastIoUnlockAll;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoUnlockAll (
             IN PFILE_OBJECT         FileObject,
             IN PEPROCESS            Process,
@@ -1630,10 +1637,14 @@
 FAST_IO_UNLOCK_ALL_BY_KEY RfsdFastIoUnlockAllByKey;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoUnlockAllByKey (
              IN PFILE_OBJECT         FileObject,
+#ifdef __REACTOS__
              IN PVOID                Process,
+#else
+             IN PEPROCESS            Process,
+#endif
              IN ULONG                Key,
              OUT PIO_STATUS_BLOCK    IoStatus,
              IN PDEVICE_OBJECT       DeviceObject
@@ -1643,7 +1654,7 @@
 FAST_IO_QUERY_NETWORK_OPEN_INFO RfsdFastIoQueryNetworkOpenInfo;
 #endif // _PREFAST_
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoQueryNetworkOpenInfo (
      IN PFILE_OBJECT                     FileObject,
      IN BOOLEAN                          Wait,
@@ -1799,7 +1810,7 @@
 DRIVER_UNLOAD DriverUnload;
 #endif // _PREFAST_
 
-VOID
+VOID NTAPI
 DriverUnload (IN PDRIVER_OBJECT DriverObject);
 
 
diff -bruN reiserfs_org/src/blockio.c reiserfs/src/blockio.c
--- reiserfs_org/src/blockio.c	2015-10-05 20:25:52 +0300
+++ reiserfs/src/blockio.c	2016-03-24 15:12:38 +0200
@@ -32,19 +32,19 @@
 IO_COMPLETION_ROUTINE RfsdMediaEjectControlCompletion;
 #endif // _PREFAST_
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdReadWriteBlockSyncCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
     IN PVOID Context    );
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdReadWriteBlockAsyncCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
     IN PVOID Context    );
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdMediaEjectControlCompletion (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -86,12 +86,12 @@
         return STATUS_INSUFFICIENT_RESOURCES;
     }
     
-    __try {
+    _SEH2_TRY {
 
         MmProbeAndLockPages(Irp->MdlAddress, Irp->RequestorMode, Operation);
         
         Status = STATUS_SUCCESS;
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
 
         IoFreeMdl(Irp->MdlAddress);
         
@@ -100,7 +100,7 @@
         DbgBreak();
         
         Status = STATUS_INVALID_USER_BUFFER;
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -125,7 +125,7 @@
     }
 }
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdReadWriteBlockSyncCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -159,7 +159,7 @@
     return STATUS_MORE_PROCESSING_REQUIRED;
 }
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdReadWriteBlockAsyncCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -218,13 +218,13 @@
 
     ASSERT(MasterIrp);
 
-    __try {
+    _SEH2_TRY {
 
         pContext = ExAllocatePoolWithTag(NonPagedPool, sizeof(RFSD_RW_CONTEXT), RFSD_POOL_TAG);
 
         if (!pContext) {
             Status = STATUS_INSUFFICIENT_RESOURCES;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         RtlZeroMemory(pContext, sizeof(RFSD_RW_CONTEXT));
@@ -246,7 +246,7 @@
 
             if (!Irp) {
                 Status = STATUS_INSUFFICIENT_RESOURCES;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             Mdl = IoAllocateMdl( (PCHAR)MasterIrp->UserBuffer +
@@ -258,7 +258,7 @@
 
             if (!Mdl)  {
                 Status = STATUS_INSUFFICIENT_RESOURCES;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             IoBuildPartialMdl( MasterIrp->MdlAddress,
@@ -319,7 +319,7 @@
             KeClearEvent( &(pContext->Event) );
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (IrpContext->IsSynchronous) {
             if (MasterIrp)
@@ -333,7 +333,7 @@
             Status = STATUS_PENDING;
         }
 
-        if (AbnormalTermination()) {
+        if (_SEH2_AbnormalTermination()) {
             if (bBugCheck) {
                 RfsdBugCheck(RFSD_BUGCHK_BLOCK, 0, 0, 0);
             }
@@ -348,7 +348,7 @@
                 }
             }
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -373,12 +373,12 @@
     ASSERT(Vcb->TargetDeviceObject != NULL);
     ASSERT(Buffer != NULL);
 
-    __try {
+    _SEH2_TRY {
     
         Event = ExAllocatePoolWithTag(NonPagedPool, sizeof(KEVENT), RFSD_POOL_TAG);
 
         if (NULL == Event) {
-            __leave;
+            _SEH2_LEAVE;
         }
 
         KeInitializeEvent(Event, NotificationEvent, FALSE);
@@ -395,7 +395,7 @@
 
         if (!Irp) {            
 			Status = STATUS_INSUFFICIENT_RESOURCES;
-			__leave;
+			_SEH2_LEAVE;
         }
 
         if (bVerify) {
@@ -417,12 +417,12 @@
             Status = IoStatus.Status;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (Event) {
             ExFreePool(Event);
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -537,7 +537,7 @@
     return Status;
 }
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdMediaEjectControlCompletion (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
diff -bruN reiserfs_org/src/cleanup.c reiserfs/src/cleanup.c
--- reiserfs_org/src/cleanup.c	2015-10-29 19:23:12 +0200
+++ reiserfs/src/cleanup.c	2016-03-24 13:39:23 +0200
@@ -39,7 +39,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -50,7 +50,7 @@
         
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -62,16 +62,18 @@
 
         if (!IsFlagOn(Vcb->Flags, VCB_INITIALIZED)) {
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
         if (!ExAcquireResourceExclusiveLite(
                  &Vcb->MainResource,
                  IrpContext->IsSynchronous
                  ))  {
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         VcbResourceAcquired = TRUE;
@@ -82,7 +84,7 @@
         
         if (!Fcb) {
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (Fcb->Identifier.Type == RFSDVCB) {
@@ -101,7 +103,7 @@
             }
 
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -112,14 +114,16 @@
              !IsFlagOn(Fcb->Flags, FCB_PAGE_FILE))
 */
         {
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
             if (!ExAcquireResourceExclusiveLite(
                      &Fcb->MainResource,
                      IrpContext->IsSynchronous
                      ))
             {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             FcbResourceAcquired = TRUE;
@@ -129,7 +133,7 @@
 
         if (!Ccb) {
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (IsFlagOn(FileObject->Flags, FO_CLEANUP_COMPLETE)) {
@@ -138,7 +142,7 @@
                  !IsFlagOn(Vcb->Flags, VCB_WRITE_PROTECTED) ) {
                 Status = RfsdFlushFile(Fcb);
             }
-            __leave;
+            _SEH2_LEAVE;
         }
         
         ASSERT((Ccb->Identifier.Type == RFSDCCB) &&
@@ -235,13 +239,15 @@
                 //  Have to delete this file...
                 //
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
                 if (!ExAcquireResourceExclusiveLite(
                          &Fcb->PagingIoResource,
                          IrpContext->IsSynchronous
                          )) {
                     Status = STATUS_PENDING;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 FcbPagingIoAcquired = TRUE;
@@ -301,7 +307,7 @@
             SetFlag(FileObject->Flags, FO_CLEANUP_COMPLETE);
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
        
         if (FcbPagingIoAcquired) {
             ExReleaseResourceForThreadLite(
@@ -329,7 +335,7 @@
                 RfsdCompleteIrpContext(IrpContext, Status);
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
diff -bruN reiserfs_org/src/close.c reiserfs/src/close.c
--- reiserfs_org/src/close.c	2015-10-29 19:23:12 +0200
+++ reiserfs/src/close.c	2016-03-24 15:12:38 +0200
@@ -40,7 +40,7 @@
 
     PAGED_CODE();
 
-    __try
+    _SEH2_TRY
     {
         ASSERT(IrpContext != NULL);
         
@@ -52,7 +52,7 @@
         if (DeviceObject == RfsdGlobal->DeviceObject)
         {
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -64,7 +64,9 @@
 
         ASSERT(IsMounted(Vcb));
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
         if (!ExAcquireResourceExclusiveLite(
             &Vcb->MainResource,
             IrpContext->IsSynchronous )) {
@@ -72,7 +74,7 @@
                                  Vcb->OpenFileHandleCount, Vcb->ReferenceCount));
 
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         VcbResourceAcquired = TRUE;
@@ -88,7 +90,7 @@
             if (!Fcb)
             {
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             ASSERT(Fcb != NULL);
@@ -115,7 +117,7 @@
             
             Status = STATUS_SUCCESS;
             
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (Fcb->Identifier.Type != RFSDFCB || Fcb->Identifier.Size != sizeof(RFSD_FCB)) {
@@ -132,7 +134,7 @@
                 &RfsdGlobal->CountResource,
                 ExGetCurrentResourceThread() );
 #endif
-            __leave;
+            _SEH2_LEAVE;
         }
 
         ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -143,12 +145,14 @@
              (!IsFlagOn(Fcb->Flags, FCB_PAGE_FILE))  )
 */
         {
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
             if (!ExAcquireResourceExclusiveLite(
                 &Fcb->MainResource,
                 IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             FcbResourceAcquired = TRUE;
@@ -156,7 +160,7 @@
         
         if (!Ccb) {
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         ASSERT((Ccb->Identifier.Type == RFSDCCB) &&
@@ -195,7 +199,7 @@
         
         Status = STATUS_SUCCESS;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (FcbResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -252,7 +256,7 @@
                 }
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -287,7 +291,7 @@
     ExQueueWorkItem(&IrpContext->WorkQueueItem, CriticalWorkQueue);
 }
 
-VOID
+VOID NTAPI
 RfsdDeQueueCloseRequest (IN PVOID Context)
 {
     PRFSD_IRP_CONTEXT IrpContext;
@@ -301,20 +305,20 @@
     ASSERT((IrpContext->Identifier.Type == RFSDICX) &&
         (IrpContext->Identifier.Size == sizeof(RFSD_IRP_CONTEXT)));
     
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
             RfsdClose(IrpContext);
 
-        } __except (RfsdExceptionFilter(IrpContext, GetExceptionInformation())) {
+        } _SEH2_EXCEPT (RfsdExceptionFilter(IrpContext, _SEH2_GetExceptionInformation())) {
 
             RfsdExceptionHandler(IrpContext);
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 }
diff -bruN reiserfs_org/src/cmcb.c reiserfs/src/cmcb.c
--- reiserfs_org/src/cmcb.c	2015-10-05 20:41:40 +0300
+++ reiserfs/src/cmcb.c	2016-03-24 15:12:38 +0200
@@ -28,7 +28,7 @@
 #endif
 
 __drv_mustHoldCriticalRegion
-BOOLEAN
+BOOLEAN NTAPI
 RfsdAcquireForLazyWrite (
         IN PVOID    Context,
         IN BOOLEAN  Wait)
@@ -67,7 +67,7 @@
 }
 
 __drv_mustHoldCriticalRegion
-VOID
+VOID NTAPI
 RfsdReleaseFromLazyWrite (IN PVOID Context)
 {
     PRFSD_FCB Fcb;
@@ -100,7 +100,7 @@
 }
 
 __drv_mustHoldCriticalRegion
-BOOLEAN
+BOOLEAN NTAPI
 RfsdAcquireForReadAhead (IN PVOID    Context,
              IN BOOLEAN  Wait)
 {
@@ -130,7 +130,7 @@
 }
 
 __drv_mustHoldCriticalRegion
-VOID
+VOID NTAPI
 RfsdReleaseFromReadAhead (IN PVOID Context)
 {
     PRFSD_FCB Fcb;
@@ -152,7 +152,7 @@
     ExReleaseResourceLite(&Fcb->MainResource);
 }
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdNoOpAcquire (
     IN PVOID Fcb,
     IN BOOLEAN Wait
@@ -177,7 +177,7 @@
     return TRUE;
 }
 
-VOID
+VOID NTAPI
 RfsdNoOpRelease (
     IN PVOID Fcb
     )
diff -bruN reiserfs_org/src/create.c reiserfs/src/create.c
--- reiserfs_org/src/create.c	2015-10-29 19:29:40 +0200
+++ reiserfs/src/create.c	2016-03-24 17:51:03 +0200
@@ -295,7 +295,7 @@
 			}
 		}
 
-    RfsdPrint((DBG_TRACE, __FUNCTION__ " returning %s\n", RfsdNtStatusToString(Status)));
+    RfsdPrint((DBG_TRACE, /*__FUNCTION__*/ " returning %s\n", RfsdNtStatusToString(Status)));
     return Status;
 }
 
@@ -316,7 +316,9 @@
     PRFSD_CCB           Ccb = NULL;
     PRFSD_INODE         Inode = 0;
     BOOLEAN             VcbResourceAcquired = FALSE;
+#if DISABLED
     BOOLEAN             bDir = FALSE;
+#endif
     BOOLEAN             bFcbAllocated = FALSE;
     BOOLEAN             bCreated = FALSE;
     UNICODE_STRING      FileName;
@@ -379,7 +381,7 @@
 
     FileName.Buffer = NULL;
 
-    __try {
+    _SEH2_TRY {
 
         ExAcquireResourceExclusiveLite(
             &Vcb->MainResource, TRUE );
@@ -388,12 +390,12 @@
 
         if (Irp->Overlay.AllocationSize.HighPart) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (!(Inode = ExAllocatePoolWithTag(
               PagedPool, sizeof(RFSD_INODE), RFSD_POOL_TAG) )) {
-            __leave;
+            _SEH2_LEAVE;
         }
 
         RtlZeroMemory(Inode, sizeof(RFSD_INODE));
@@ -404,7 +406,7 @@
         FileName.Buffer = ExAllocatePoolWithTag(PagedPool, FileName.MaximumLength, RFSD_POOL_TAG);
         if (!FileName.Buffer) {   
             Status = STATUS_INSUFFICIENT_RESOURCES;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         RtlZeroMemory(FileName.Buffer, FileName.MaximumLength);
@@ -434,13 +436,13 @@
                                 
                 Status = STATUS_OBJECT_NAME_INVALID;
 
-                __leave;
+                _SEH2_LEAVE;
             }
         }
 
         if (IsFlagOn(Options, FILE_OPEN_BY_FILE_ID)) {
             Status = STATUS_NOT_IMPLEMENTED;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         RfsdPrint((DBG_INFO, "RfsdCreateFile: %S (NameLen=%xh) Paging=%xh Option: %xh.\n",
@@ -462,8 +464,9 @@
             UNICODE_STRING  RealName;
             UNICODE_STRING  RemainName;
 
+#if DISABLED
             LONG            i = 0;
-
+#endif
 
             PathName = FileName;
 
@@ -477,14 +480,14 @@
                     PathName.Buffer[PathName.Length/2] = 0;
                 } else {
                     Status = STATUS_NOT_A_DIRECTORY;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
             }
 
             if (!ParentMcb) {
                 if (PathName.Buffer[0] != L'\\') {
                     Status = STATUS_OBJECT_PATH_NOT_FOUND;
-                    __leave;
+                    _SEH2_LEAVE;
                 } else {
                     ParentMcb = Vcb->McbTree;
                 }
@@ -497,7 +500,7 @@
             if (((RemainName.Length != 0) && (RemainName.Buffer[0] == L'\\')) ||
                 (RealName.Length >= 256*sizeof(WCHAR))) {
                 Status = STATUS_OBJECT_NAME_INVALID;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if (RemainName.Length != 0) {
@@ -513,7 +516,7 @@
 
                 if (!NT_SUCCESS(Status)) {
                     Status = STATUS_OBJECT_PATH_NOT_FOUND;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 ParentMcb = RetMcb;
@@ -524,7 +527,7 @@
 
             if (FsRtlDoesNameContainWildCards(&RealName)) {
                 Status = STATUS_OBJECT_NAME_INVALID;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             ParentFcb = ParentMcb->RfsdFcb;
@@ -535,12 +538,12 @@
                                                         sizeof(RFSD_INODE), RFSD_POOL_TAG);
                 if (!pTmpInode) {
                     Status = STATUS_INSUFFICIENT_RESOURCES;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 				
 				if(!RfsdLoadInode(Vcb, &(ParentMcb->Key), pTmpInode)) {
                     Status = STATUS_OBJECT_PATH_NOT_FOUND;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 ParentFcb = RfsdAllocateFcb(Vcb,  ParentMcb, pTmpInode);
@@ -548,7 +551,7 @@
                 if (!ParentFcb) {
                     ExFreePool(pTmpInode);
                     Status = STATUS_INSUFFICIENT_RESOURCES;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 bParentFcbCreated = TRUE;
@@ -562,7 +565,7 @@
 
                 if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY)) {
                     Status = STATUS_MEDIA_WRITE_PROTECTED;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if (IsFlagOn(Vcb->Flags, VCB_WRITE_PROTECTED)) {
@@ -576,13 +579,13 @@
                 if (DirectoryFile) {
                     if (TemporaryFile) {
                         Status = STATUS_INVALID_PARAMETER;
-                        __leave;
+                        _SEH2_LEAVE;
                     }
                 }
 
                 if (!ParentFcb) {
                     Status = STATUS_OBJECT_PATH_NOT_FOUND;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if (DirectoryFile) {
@@ -656,12 +659,12 @@
             } else if (OpenTargetDirectory) {
                 if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY)) {
                     Status = STATUS_MEDIA_WRITE_PROTECTED;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if (!ParentFcb) {
                     Status = STATUS_OBJECT_PATH_NOT_FOUND;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 RtlZeroMemory( IrpSp->FileObject->FileName.Buffer,
@@ -678,7 +681,7 @@
                 Status = STATUS_SUCCESS;
             } else {
                 Status = STATUS_OBJECT_NAME_NOT_FOUND;
-                __leave;
+                _SEH2_LEAVE;
             }
 
         } else { // File / Dir already exists.
@@ -687,7 +690,7 @@
 
                 if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY)) {
                     Status = STATUS_MEDIA_WRITE_PROTECTED;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 Irp->IoStatus.Information = FILE_EXISTS;
@@ -711,7 +714,7 @@
             if (CreateDisposition == FILE_CREATE) {
                 Irp->IoStatus.Information = FILE_EXISTS;
                 Status = STATUS_OBJECT_NAME_COLLISION;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if(IsFlagOn(RfsdMcb->FileAttr, FILE_ATTRIBUTE_DIRECTORY)) {
@@ -720,24 +723,24 @@
                     (CreateDisposition != FILE_OPEN_IF)) {
 
                     Status = STATUS_OBJECT_NAME_COLLISION;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if (NonDirectoryFile) {
                     Status = STATUS_FILE_IS_A_DIRECTORY;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if (RFSD_IS_ROOT_KEY(RfsdMcb->Key)) {
 
                     if (DeleteOnClose) {
                         Status = STATUS_CANNOT_DELETE;
-                        __leave;
+                        _SEH2_LEAVE;
                     }
 
                     if (OpenTargetDirectory) {
                         Status = STATUS_INVALID_PARAMETER;
-                        __leave;
+                        _SEH2_LEAVE;
                     }
                 }
             }
@@ -761,12 +764,12 @@
 
             if (IsFlagOn(Fcb->Flags, FCB_FILE_DELETED)) {
                 Status = STATUS_FILE_DELETED;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if (FlagOn(Fcb->Flags, FCB_DELETE_PENDING)) {
                 Status = STATUS_DELETE_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if (bCreated) {
@@ -820,7 +823,7 @@
 
                         DbgBreak();
 
-                        __leave;
+                        _SEH2_LEAVE;
                     }
                 }
 #endif
@@ -834,7 +837,7 @@
 
                     if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY)) {
                         Status = STATUS_MEDIA_WRITE_PROTECTED;
-                        __leave;
+                        _SEH2_LEAVE;
                     }
 
                     if (IsFlagOn(Vcb->Flags, VCB_WRITE_PROTECTED)) {
@@ -901,7 +904,7 @@
                                              TRUE );
 
                 if (!NT_SUCCESS(Status)) {
-                    __leave;
+                    _SEH2_LEAVE;
                 }
             } else {
                 IoSetShareAccess( DesiredAccess,
@@ -947,7 +950,7 @@
 
                         Status = DeleteOnClose ? STATUS_CANNOT_DELETE :
                                                  STATUS_SHARING_VIOLATION;
-                        __leave;
+                        _SEH2_LEAVE;
                     }
                 }
 
@@ -957,14 +960,14 @@
 
 #if RFSD_READ_ONLY
 					Status = STATUS_MEDIA_WRITE_PROTECTED;
-                    __leave;
+                    _SEH2_LEAVE;
 #endif
 
 
 #if DISABLED
                     if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY)) {
                         Status = STATUS_MEDIA_WRITE_PROTECTED;
-                        __leave;
+                        _SEH2_LEAVE;
                     }
 
                     if (IsFlagOn(Vcb->Flags, VCB_WRITE_PROTECTED)) {
@@ -982,7 +985,7 @@
                                                   CreateDisposition );
 
                     if (NT_SUCCESS(Status)) {
-                        __leave;
+                        _SEH2_LEAVE;
                     }
 
 DbgBreak();
@@ -995,7 +998,7 @@
 #endif
 
                     if (!(NT_SUCCESS(Status))) {
-                        __leave;
+                        _SEH2_LEAVE;
                     }
 
 DbgBreak();
@@ -1019,7 +1022,7 @@
                 }
             }
         }
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (FileName.Buffer)
             ExFreePool(FileName.Buffer);
@@ -1041,7 +1044,7 @@
             if (!Fcb && Inode)
                 ExFreePool(Inode);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -1181,7 +1184,7 @@
         return Status;
     }
    
-    __try {
+    _SEH2_TRY {
 
         if (IsFlagOn(Vcb->Flags, VCB_VOLUME_LOCKED)) {
             Status = STATUS_ACCESS_DENIED;
@@ -1190,7 +1193,7 @@
                 Status = STATUS_VOLUME_DISMOUNTED;
             }
 
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if ( ((IrpSp->FileObject->FileName.Length == 0) &&
@@ -1201,14 +1204,14 @@
             Status = RfsdCreateFile(IrpContext, Vcb);
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (!IrpContext->ExceptionInProgress)  {
             RfsdUnpinRepinnedBcbs(IrpContext);
      
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -1392,14 +1395,14 @@
 
 	InodeFileName.Buffer = NULL;
 
-	RfsdPrint((DBG_FUNC, __FUNCTION__ " invoked on block %i\n", BlockNumber));
+	RfsdPrint((DBG_FUNC, /*__FUNCTION__*/ " invoked on block %i\n", BlockNumber));
 
 
-	__try {
+	_SEH2_TRY {
 
 	// Load the block
 	pBlockBuffer = RfsdAllocateAndLoadBlock(pCallbackContext->Vcb, BlockNumber);
-    if (!pBlockBuffer) { Status = STATUS_INSUFFICIENT_RESOURCES; __leave; }	
+    if (!pBlockBuffer) { Status = STATUS_INSUFFICIENT_RESOURCES; _SEH2_LEAVE; }	
 
 	// Construct the item key to search for
 	DirectoryKey = *(pCallbackContext->pDirectoryKey);
@@ -1416,7 +1419,7 @@
 	if ( (Status == STATUS_NO_SUCH_MEMBER) || !pDirectoryItemHeader )
 	{ 
 		KdPrint(("Block %i did not contain the appropriate diritem header\n", BlockNumber));
-		Status = STATUS_SUCCESS; __leave; 
+		Status = STATUS_SUCCESS; _SEH2_LEAVE; 
 	}
 
 			// Setup the item buffer
@@ -1426,7 +1429,7 @@
 
 		// Allocate the unicode filename buffer
 	    InodeFileName.Buffer = ExAllocatePoolWithTag(PagedPool, (RFSD_NAME_LEN + 1) * 2, RFSD_POOL_TAG);
-		if (!InodeFileName.Buffer) { Status = STATUS_INSUFFICIENT_RESOURCES; __leave; }
+		if (!InodeFileName.Buffer) { Status = STATUS_INSUFFICIENT_RESOURCES; _SEH2_LEAVE; }
 
 
 		while (!bFound && (idxDentryInSpan < pDirectoryItemHeader->u.ih_entry_count) ) {
@@ -1465,7 +1468,7 @@
 
 				  // Allocate a new larger buffer
 				  InodeFileName.Buffer = ExAllocatePoolWithTag(PagedPool, InodeFileNameLength, RFSD_POOL_TAG);
-				  if (!InodeFileName.Buffer) { Status = STATUS_INSUFFICIENT_RESOURCES; __leave; }
+				  if (!InodeFileName.Buffer) { Status = STATUS_INSUFFICIENT_RESOURCES; _SEH2_LEAVE; }
 				  InodeFileName.MaximumLength = InodeFileNameLength;				  
 			  }
 
@@ -1477,7 +1480,7 @@
                               &InodeFileName,
                               &OemName    );
 
-              if (!NT_SUCCESS(Status)) { __leave; }
+              if (!NT_SUCCESS(Status)) { _SEH2_LEAVE; }
 			}
 
 
@@ -1492,7 +1495,7 @@
 				*(pCallbackContext->pMatchingIndex) = (pCallbackContext->idxCurrentDentry * sizeof(RFSD_DENTRY_HEAD));
                 RtlCopyMemory(pCallbackContext->pMatchingDentry, pCurrentDentry, sizeof(RFSD_DENTRY_HEAD));				
                 
-                RfsdPrint(( DBG_INFO, __FUNCTION__ ": Found: Name=%S Key=%xh,%xh\n",
+                RfsdPrint(( DBG_INFO, /*__FUNCTION__*/ ": Found: Name=%S Key=%xh,%xh\n",
                             InodeFileName.Buffer, pCurrentDentry->deh_dir_id, pCurrentDentry->deh_objectid ));
 
 				Status = STATUS_EVENT_DONE;
@@ -1510,10 +1513,10 @@
 			// Indicate success, so that parsing will continue with subsequent blocks.
             Status = STATUS_SUCCESS;
         }
-	} __finally {
+	} _SEH2_FINALLY {
 		if (pBlockBuffer)			ExFreePool(pBlockBuffer);
 		if (InodeFileName.Buffer)	ExFreePool(InodeFileName.Buffer);
-	}
+	} _SEH2_END;
 
 
 	return Status;
diff -bruN reiserfs_org/src/devctl.c reiserfs/src/devctl.c
--- reiserfs_org/src/devctl.c	2015-10-05 21:06:34 +0300
+++ reiserfs/src/devctl.c	2016-03-24 15:12:38 +0200
@@ -22,7 +22,7 @@
 IO_COMPLETION_ROUTINE RfsdDeviceControlCompletion;
 #endif // _PREFAST_
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdDeviceControlCompletion (IN PDEVICE_OBJECT   DeviceObject,
                 IN PIRP             Irp,
                 IN PVOID            Context);
@@ -36,7 +36,7 @@
 #endif
 #endif
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdDeviceControlCompletion (IN PDEVICE_OBJECT   DeviceObject,
                  IN PIRP             Irp,
                  IN PVOID            Context)
@@ -65,7 +65,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -78,7 +78,7 @@
     
         if (DeviceObject == RfsdGlobal->DeviceObject)  {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Irp = IrpContext->Irp;
@@ -89,7 +89,7 @@
         if (!((Vcb) && (Vcb->Identifier.Type == RFSDVCB) &&
               (Vcb->Identifier.Size == sizeof(RFSD_VCB)))) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         TargetDeviceObject = Vcb->TargetDeviceObject;
@@ -113,7 +113,7 @@
         
         Status = IoCallDriver(TargetDeviceObject, Irp);
 
-    } __finally  {
+    } _SEH2_FINALLY  {
 
         if (!IrpContext->ExceptionInProgress) {
             if (IrpContext) {
@@ -124,7 +124,7 @@
                 RfsdCompleteIrpContext(IrpContext, Status);
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -141,7 +141,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -152,7 +152,7 @@
         
         if (DeviceObject != RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         ExAcquireResourceExclusiveLite(
@@ -166,7 +166,7 @@
             
             Status = STATUS_ACCESS_DENIED;
             
-            __leave;
+            _SEH2_LEAVE;
         }
         
         {
@@ -196,12 +196,14 @@
             
             Status = STATUS_ACCESS_DENIED;
             
-            __leave;
+            _SEH2_LEAVE;
         }
         
         IoUnregisterFileSystem(RfsdGlobal->DeviceObject);
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28175, "allowed to unload" )
+#endif
         RfsdGlobal->DriverObject->DriverUnload = DriverUnload;
         
         SetFlag(RfsdGlobal->Flags ,RFSD_UNLOAD_PENDING);
@@ -210,7 +212,7 @@
         
         Status = STATUS_SUCCESS;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (GlobalDataResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -222,7 +224,7 @@
         if (!IrpContext->ExceptionInProgress) {
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
diff -bruN reiserfs_org/src/dirctl.c reiserfs/src/dirctl.c
--- reiserfs_org/src/dirctl.c	2015-10-29 19:23:12 +0200
+++ reiserfs/src/dirctl.c	2016-03-24 17:51:26 +0200
@@ -276,7 +276,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
         
@@ -290,7 +290,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -317,7 +317,7 @@
         //
         if (Fcb->Identifier.Type == RFSDVCB) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -325,7 +325,7 @@
         
         if (!IsDirectory(Fcb)) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Ccb = (PRFSD_CCB) FileObject->FsContext2;
@@ -393,20 +393,20 @@
         if (Buffer == NULL) {
             DbgBreak();
             Status = STATUS_INVALID_USER_BUFFER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
 		// Check if we have a synchronous or asynchronous request...
         if (!IrpContext->IsSynchronous) {
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (!ExAcquireResourceSharedLite(
                  &Fcb->MainResource,
                  IrpContext->IsSynchronous )) {
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         FcbResourceAcquired = TRUE;
@@ -429,7 +429,7 @@
                 
                 if (Ccb->DirectorySearchPattern.Buffer == NULL) {
                     Status = STATUS_INSUFFICIENT_RESOURCES;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 Status = RtlUpcaseUnicodeString(
@@ -438,7 +438,7 @@
                     FALSE);
 
                 if (!NT_SUCCESS(Status))
-                    __leave;
+                    _SEH2_LEAVE;
             }
         } else if (Ccb->DirectorySearchPattern.Buffer != NULL) {
             FirstQuery = FALSE;
@@ -456,7 +456,7 @@
             
             if (Ccb->DirectorySearchPattern.Buffer == NULL) {
                 Status = STATUS_INSUFFICIENT_RESOURCES;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             RtlCopyMemory(
@@ -480,7 +480,7 @@
 		// Leave if a previous query has already read the entire contents of the directory
         if (Fcb->Inode->i_size <= FileIndex) {
             Status = STATUS_NO_MORE_FILES;
-            __leave;
+            _SEH2_LEAVE;
         }               		
         
 		//////// 
@@ -522,7 +522,7 @@
             Status = STATUS_SUCCESS;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
     
         if (FcbResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -547,7 +547,7 @@
                 RfsdCompleteIrpContext(IrpContext, Status);
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -573,7 +573,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
 
@@ -591,7 +591,7 @@
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             CompleteRequest = TRUE;
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -613,7 +613,7 @@
             DbgBreak();  
             CompleteRequest = TRUE;
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -623,7 +623,7 @@
             //- DbgBreak();  // NOTE: Windows (at least I've noticed it with the image previewer), will send this request oftentimes on a file!
             CompleteRequest = TRUE;
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (ExAcquireResourceExclusiveLite(
@@ -632,7 +632,7 @@
             bFcbAcquired = TRUE;
         } else {
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         Irp = IrpContext->Irp;
@@ -655,7 +655,7 @@
 
         if (FlagOn(Fcb->Flags, FCB_DELETE_PENDING)) {
             Status = STATUS_DELETE_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         FullName = &Fcb->LongName;
@@ -663,7 +663,7 @@
         if (FullName->Buffer == NULL) {
             if (!RfsdGetFullFileName(Fcb->RfsdMcb, FullName)) {
                 Status = STATUS_INSUFFICIENT_RESOURCES;
-                __leave;
+                _SEH2_LEAVE;
             }
         }
 
@@ -720,7 +720,7 @@
         );
 */
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (bFcbAcquired) {
             ExReleaseResourceForThreadLite(
@@ -736,7 +736,7 @@
 
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -831,13 +831,13 @@
         return TRUE;
     }
 
-    __try {
+    _SEH2_TRY {
 
         pTarget = (PRFSD_DIR_ENTRY2) ExAllocatePoolWithTag(PagedPool,
                                      RFSD_DIR_REC_LEN(RFSD_NAME_LEN), RFSD_POOL_TAG);
         if (!pTarget) {
             Status = STATUS_INSUFFICIENT_RESOURCES;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         dwBytes = 0;
@@ -861,7 +861,7 @@
             if (!NT_SUCCESS(Status)) {
                 RfsdPrint((DBG_ERROR, "RfsdRemoveEntry: Reading Directory Content error.\n"));
                 bRet = FALSE;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if (pTarget->inode) {
@@ -879,12 +879,12 @@
             dwBytes += pTarget->rec_len;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (pTarget != NULL) {
             ExFreePool(pTarget);
         }
-    }
+    } _SEH2_END;
 #endif // 0
     return bRet;
 }
@@ -914,7 +914,7 @@
 
 	InodeFileName.Buffer = NULL;
 
-	RfsdPrint((DBG_FUNC, __FUNCTION__ " invoked on block %i\n", BlockNumber));
+	RfsdPrint((DBG_FUNC, /*__FUNCTION__*/ " invoked on block %i\n", BlockNumber));
 
 
 	// Load the block
diff -bruN reiserfs_org/src/dispatch.c reiserfs/src/dispatch.c
--- reiserfs_org/src/dispatch.c	2015-10-05 21:16:30 +0300
+++ reiserfs/src/dispatch.c	2016-03-24 15:12:53 +0200
@@ -52,7 +52,7 @@
     return STATUS_PENDING;
 }
 
-VOID
+VOID NTAPI
 RfsdDeQueueRequest (IN PVOID Context)
 {
     PRFSD_IRP_CONTEXT IrpContext;
@@ -66,9 +66,9 @@
     ASSERT((IrpContext->Identifier.Type == RFSDICX) &&
            (IrpContext->Identifier.Size == sizeof(RFSD_IRP_CONTEXT)));
 
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
 
@@ -79,17 +79,17 @@
 
             RfsdDispatchRequest(IrpContext);
 
-        } __except (RfsdExceptionFilter(IrpContext, GetExceptionInformation())) {
+        } _SEH2_EXCEPT (RfsdExceptionFilter(IrpContext, _SEH2_GetExceptionInformation())) {
 
             RfsdExceptionHandler(IrpContext);
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         IoSetTopLevelIrp(NULL);
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 }
 
 __drv_mustHoldCriticalRegion
@@ -172,7 +172,7 @@
     }
 }
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdBuildRequest (PDEVICE_OBJECT   DeviceObject, PIRP Irp)
 {
     BOOLEAN             AtIrqlPassiveLevel = FALSE;
@@ -182,9 +182,9 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
 #if DBG
             RfsdDbgPrintCall(DeviceObject, Irp);
@@ -222,12 +222,12 @@
 
                 Status = RfsdDispatchRequest(IrpContext);
             }
-        } __except (RfsdExceptionFilter(IrpContext, GetExceptionInformation())) {
+        } _SEH2_EXCEPT (RfsdExceptionFilter(IrpContext, _SEH2_GetExceptionInformation())) {
 
             Status = RfsdExceptionHandler(IrpContext);
-        }
+        } _SEH2_END;
 
-    } __finally  {
+    } _SEH2_FINALLY  {
 
         if (IsTopLevelIrp) {
             IoSetTopLevelIrp(NULL);
@@ -236,7 +236,7 @@
         if (AtIrqlPassiveLevel) {
             FsRtlExitFileSystem();
         }       
-    }
+    } _SEH2_END;
     
     return Status;
 }
diff -bruN reiserfs_org/src/fastio.c reiserfs/src/fastio.c
--- reiserfs_org/src/fastio.c	2015-10-29 19:23:10 +0200
+++ reiserfs/src/fastio.c	2016-03-24 15:14:01 +0200
@@ -35,7 +35,7 @@
 #pragma alloc_text(PAGE, RfsdFastIoUnlockAllByKey)
 #endif
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoCheckIfPossible (
               IN PFILE_OBJECT         FileObject,
               IN PLARGE_INTEGER       FileOffset,
@@ -55,14 +55,14 @@
 
     lLength.QuadPart = Length;
     
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
 
             if (DeviceObject == RfsdGlobal->DeviceObject) {
-                __leave;
+                _SEH2_LEAVE;
             }
             
             Fcb = (PRFSD_FCB) FileObject->FsContext;
@@ -70,14 +70,14 @@
             ASSERT(Fcb != NULL);
             
             if (Fcb->Identifier.Type == RFSDVCB) {
-                __leave;
+                _SEH2_LEAVE;
             }
             
             ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
                 (Fcb->Identifier.Size == sizeof(RFSD_FCB)));
             
             if (IsDirectory(Fcb)) {
-                __leave;
+                _SEH2_LEAVE;
             }
             
             if (CheckForReadOperation) {
@@ -120,21 +120,21 @@
                 (CheckForReadOperation ? "CheckForReadOperation:" :
                                          "CheckForWriteOperation:"),
                 (bPossible ? "Succeeded" : "Failed")));
-        } __except (EXCEPTION_EXECUTE_HANDLER) {
+        } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
             bPossible = FastIoIsNotPossible;
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
     
     return bPossible;
 }
 
 #if DBG
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoRead (IN PFILE_OBJECT         FileObject,
            IN PLARGE_INTEGER       FileOffset,
            IN ULONG                Length,
@@ -175,7 +175,7 @@
 
 #if !RFSD_READ_ONLY
 
-BOOLEAN
+NTAPI BOOLEAN
 RfsdFastIoWrite (
            IN PFILE_OBJECT         FileObject,
            IN PLARGE_INTEGER       FileOffset,
@@ -226,7 +226,7 @@
 
 #endif /* DBG */
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoQueryBasicInfo (IN PFILE_OBJECT             FileObject,
               IN BOOLEAN                  Wait,
               OUT PFILE_BASIC_INFORMATION Buffer,
@@ -239,16 +239,16 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
 
             if (DeviceObject == RfsdGlobal->DeviceObject) {
                 IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             Fcb = (PRFSD_FCB) FileObject->FsContext;
@@ -258,7 +258,7 @@
             if (Fcb->Identifier.Type == RFSDVCB) {
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -275,7 +275,7 @@
                 &Fcb->MainResource,
                 Wait)) {
                 Status = FALSE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             FcbMainResourceAcquired = TRUE;
@@ -305,13 +305,13 @@
             IoStatus->Status = STATUS_SUCCESS;
             
             Status =  TRUE;
-        } __except (EXCEPTION_EXECUTE_HANDLER) {
+        } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
 
-            IoStatus->Status = GetExceptionCode();
+            IoStatus->Status = _SEH2_GetExceptionCode();
             Status = TRUE;
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (FcbMainResourceAcquired)
         {
@@ -322,7 +322,7 @@
         }
         
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
     
     
     if (Status == FALSE) {
@@ -346,7 +346,7 @@
     return Status;
 }
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoQueryStandardInfo (
                 IN PFILE_OBJECT                 FileObject,
                 IN BOOLEAN                      Wait,
@@ -364,9 +364,9 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
 
@@ -374,7 +374,7 @@
 
                 IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             Fcb = (PRFSD_FCB) FileObject->FsContext;
@@ -384,7 +384,7 @@
             if (Fcb->Identifier.Type == RFSDVCB)  {
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -402,7 +402,7 @@
                 &Fcb->MainResource,
                 Wait        )) {
                 Status = FALSE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             FcbMainResourceAcquired = TRUE;
@@ -450,13 +450,13 @@
             
             Status =  TRUE;
 
-        } __except (EXCEPTION_EXECUTE_HANDLER) {
+        } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
 
-            IoStatus->Status = GetExceptionCode();
+            IoStatus->Status = _SEH2_GetExceptionCode();
             Status = TRUE;
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
         if (FcbMainResourceAcquired) {
             ExReleaseResourceForThreadLite(
                 &Fcb->MainResource,
@@ -465,7 +465,7 @@
         }
         
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
 #if DBG
     if (Status == FALSE) {
@@ -486,7 +486,7 @@
     return Status;
 }
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoLock (
            IN PFILE_OBJECT         FileObject,
            IN PLARGE_INTEGER       FileOffset,
@@ -504,16 +504,16 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
 
             if (DeviceObject == RfsdGlobal->DeviceObject) {
                 IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             Fcb = (PRFSD_FCB) FileObject->FsContext;
@@ -524,7 +524,7 @@
 
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -534,7 +534,7 @@
                 DbgBreak();
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             RfsdPrint((DBG_INFO,
@@ -561,7 +561,9 @@
                 Fcb->Header.IsFastIoPossible = FastIoIsQuestionable;
             }
             
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28159, "bug in prefast" )
+#endif
             Status = FsRtlFastLock(
                 &Fcb->FileLockAnchor,
                 FileObject,
@@ -574,14 +576,14 @@
                 IoStatus,
                 NULL,
                 FALSE);
-        } __except (EXCEPTION_EXECUTE_HANDLER) {
-            IoStatus->Status = GetExceptionCode();
+        } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
+            IoStatus->Status = _SEH2_GetExceptionCode();
             Status = TRUE;
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
 #if DBG 
     if (Status == FALSE) {
@@ -604,7 +606,7 @@
     return Status;
 }
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoUnlockSingle (
                IN PFILE_OBJECT         FileObject,
                IN PLARGE_INTEGER       FileOffset,
@@ -620,16 +622,16 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
 
             if (DeviceObject == RfsdGlobal->DeviceObject) {
                 IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             Fcb = (PRFSD_FCB) FileObject->FsContext;
@@ -640,7 +642,7 @@
                 DbgBreak();
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -651,7 +653,7 @@
                 DbgBreak();
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             RfsdPrint((DBG_INFO,
@@ -679,15 +681,15 @@
             IoStatus->Information = 0;
             
             Status =  TRUE;
-        } __except (EXCEPTION_EXECUTE_HANDLER) {
-            IoStatus->Status = GetExceptionCode();
+        } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
+            IoStatus->Status = _SEH2_GetExceptionCode();
             Status = TRUE;
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
 #if DBG 
     if (Status == FALSE) {
@@ -709,7 +711,7 @@
     return Status;
 }
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoUnlockAll (
             IN PFILE_OBJECT         FileObject,
             IN PEPROCESS            Process,
@@ -721,16 +723,16 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
 
             if (DeviceObject == RfsdGlobal->DeviceObject) {
                 IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             Fcb = (PRFSD_FCB) FileObject->FsContext;
@@ -741,7 +743,7 @@
                 DbgBreak();
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -751,7 +753,7 @@
                 DbgBreak();
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             RfsdPrint((DBG_INFO,
@@ -770,15 +772,15 @@
             IoStatus->Information = 0;
             
             Status =  TRUE;
-        } __except (EXCEPTION_EXECUTE_HANDLER) {
-            IoStatus->Status = GetExceptionCode();
+        } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
+            IoStatus->Status = _SEH2_GetExceptionCode();
             Status = TRUE;
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
 #if DBG 
     if (Status == FALSE) {
@@ -802,10 +804,14 @@
     return Status;
 }
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoUnlockAllByKey (
              IN PFILE_OBJECT         FileObject,
+#ifdef __REACTOS__
+             IN PVOID                Process,
+#else
              IN PEPROCESS            Process,
+#endif
              IN ULONG                Key,
              OUT PIO_STATUS_BLOCK    IoStatus,
              IN PDEVICE_OBJECT       DeviceObject
@@ -816,16 +822,16 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             FsRtlEnterFileSystem();
 
             if (DeviceObject == RfsdGlobal->DeviceObject) {
                 IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             Fcb = (PRFSD_FCB) FileObject->FsContext;
@@ -836,7 +842,7 @@
                 DbgBreak();
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -847,7 +853,7 @@
                 DbgBreak();
                 IoStatus->Status = STATUS_INVALID_PARAMETER;
                 Status = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             RfsdPrint((DBG_INFO,
@@ -874,15 +880,15 @@
             
             Status =  TRUE;
 
-        } __except (EXCEPTION_EXECUTE_HANDLER) {
+        } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
 
-            IoStatus->Status = GetExceptionCode();
+            IoStatus->Status = _SEH2_GetExceptionCode();
             Status = TRUE;
-        }
+        } _SEH2_END;
 
-    } __finally {
+    } _SEH2_FINALLY {
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
 #if DBG 
     if (Status == FALSE) {
@@ -907,7 +913,7 @@
     return Status;
 }
 
-BOOLEAN
+BOOLEAN NTAPI
 RfsdFastIoQueryNetworkOpenInfo (
     IN PFILE_OBJECT         FileObject,
     IN BOOLEAN              Wait,
@@ -922,13 +928,13 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         FsRtlEnterFileSystem();
 
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
             
         Fcb = (PRFSD_FCB) FileObject->FsContext;
@@ -938,7 +944,7 @@
         if (Fcb->Identifier.Type == RFSDVCB) {
             DbgBreak();
             IoStatus->Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
             
         ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -952,7 +958,7 @@
                 ));
 
         if (FileObject->FsContext2) {
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (!FlagOn(Fcb->Flags, FCB_PAGE_FILE)) {
@@ -961,7 +967,7 @@
                 &Fcb->MainResource,
                 Wait
                 )) {
-                __leave;
+                _SEH2_LEAVE;
             }
             
             FcbResourceAcquired = TRUE;
@@ -990,14 +996,14 @@
         IoStatus->Status = STATUS_SUCCESS;
         IoStatus->Information = sizeof(FILE_NETWORK_OPEN_INFORMATION);
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (FcbResourceAcquired) {
             ExReleaseResourceLite(&Fcb->MainResource); 
         }
 
         FsRtlExitFileSystem();
-    }
+    } _SEH2_END;
 
     return bResult;
 }
diff -bruN reiserfs_org/src/fileinfo.c reiserfs/src/fileinfo.c
--- reiserfs_org/src/fileinfo.c	2015-10-29 19:23:10 +0200
+++ reiserfs/src/fileinfo.c	2016-03-24 13:38:47 +0200
@@ -51,7 +51,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -65,7 +65,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         FileObject = IrpContext->FileObject;
@@ -79,7 +79,7 @@
         //
         if (Fcb->Identifier.Type == RFSDVCB) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -98,7 +98,7 @@
                 )) {
 
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             FcbResourceAcquired = TRUE;
@@ -136,7 +136,7 @@
                 
                 if (Length < sizeof(FILE_BASIC_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FileBasicInformation = (PFILE_BASIC_INFORMATION) Buffer;
@@ -153,7 +153,7 @@
                 
                 Irp->IoStatus.Information = sizeof(FILE_BASIC_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
 
 #if (_WIN32_WINNT >= 0x0500)
@@ -164,7 +164,7 @@
                 
                 if (Length < sizeof(FILE_ATTRIBUTE_TAG_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FATI = (PFILE_ATTRIBUTE_TAG_INFORMATION) Buffer;
@@ -174,7 +174,7 @@
                 
                 Irp->IoStatus.Information = sizeof(FILE_ATTRIBUTE_TAG_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
 #endif // (_WIN32_WINNT >= 0x0500)
 
@@ -184,7 +184,7 @@
                 
                 if (Length < sizeof(FILE_STANDARD_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FileStandardInformation = (PFILE_STANDARD_INFORMATION) Buffer;
@@ -207,7 +207,7 @@
                 
                 Irp->IoStatus.Information = sizeof(FILE_STANDARD_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
             
         case FileInternalInformation:
@@ -216,7 +216,7 @@
                 
                 if (Length < sizeof(FILE_INTERNAL_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FileInternalInformation = (PFILE_INTERNAL_INFORMATION) Buffer;
@@ -227,7 +227,7 @@
                 
                 Irp->IoStatus.Information = sizeof(FILE_INTERNAL_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
             
         case FileEaInformation:
@@ -236,7 +236,7 @@
                 
                 if (Length < sizeof(FILE_EA_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FileEaInformation = (PFILE_EA_INFORMATION) Buffer;
@@ -246,7 +246,7 @@
                 
                 Irp->IoStatus.Information = sizeof(FILE_EA_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
             
         case FileNameInformation:
@@ -256,7 +256,7 @@
                 if (Length < sizeof(FILE_NAME_INFORMATION) +
                     Fcb->RfsdMcb->ShortName.Length - sizeof(WCHAR)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FileNameInformation = (PFILE_NAME_INFORMATION) Buffer;
@@ -271,7 +271,7 @@
                 Irp->IoStatus.Information = sizeof(FILE_NAME_INFORMATION) +
                     Fcb->RfsdMcb->ShortName.Length - sizeof(WCHAR);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
             
         case FilePositionInformation:
@@ -280,7 +280,7 @@
                 
                 if (Length < sizeof(FILE_POSITION_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FilePositionInformation = (PFILE_POSITION_INFORMATION) Buffer;
@@ -290,7 +290,7 @@
                 
                 Irp->IoStatus.Information = sizeof(FILE_POSITION_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
             
         case FileAllInformation:
@@ -305,7 +305,7 @@
                 
                 if (Length < sizeof(FILE_ALL_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FileAllInformation = (PFILE_ALL_INFORMATION) Buffer;
@@ -369,7 +369,7 @@
                     Fcb->RfsdMcb->ShortName.Length - sizeof(WCHAR)) {
                     Irp->IoStatus.Information = sizeof(FILE_ALL_INFORMATION);
                     Status = STATUS_BUFFER_OVERFLOW;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FileNameInformation->FileNameLength = Fcb->RfsdMcb->ShortName.Length;
@@ -383,7 +383,7 @@
                 Irp->IoStatus.Information = sizeof(FILE_ALL_INFORMATION) +
                     Fcb->RfsdMcb->ShortName.Length - sizeof(WCHAR);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
         
         /*
@@ -402,7 +402,7 @@
             
             if (Length < sizeof(FILE_NETWORK_OPEN_INFORMATION)) {
                 Status = STATUS_INFO_LENGTH_MISMATCH;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             FileNetworkOpenInformation =
@@ -425,14 +425,14 @@
             Irp->IoStatus.Information =
                 sizeof(FILE_NETWORK_OPEN_INFORMATION);
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         default:
         Status = STATUS_INVALID_INFO_CLASS;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (FcbResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -447,7 +447,7 @@
                 RfsdCompleteIrpContext(IrpContext,  Status);
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -477,7 +477,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -491,7 +491,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -516,7 +516,7 @@
             DbgBreak();
 
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -524,7 +524,7 @@
 
         if (IsFlagOn(Fcb->Flags, FCB_FILE_DELETED)) {
             Status = STATUS_FILE_DELETED;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         Ccb = (PRFSD_CCB) FileObject->FsContext2;
@@ -551,13 +551,15 @@
                 FileInformationClass == FileRenameInformation ||
                 FileInformationClass == FileLinkInformation)    {
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
                 if (!ExAcquireResourceExclusiveLite(
                     &Vcb->MainResource,
                     IrpContext->IsSynchronous )) {
 
                     Status = STATUS_PENDING;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
             
                 VcbResourceAcquired = TRUE;
@@ -565,12 +567,14 @@
 
         } else if (!FlagOn(Fcb->Flags, FCB_PAGE_FILE)) {
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
             if (!ExAcquireResourceExclusiveLite(
                 &Fcb->MainResource,
                 IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             FcbMainResourceAcquired = TRUE;
@@ -580,7 +584,7 @@
 
             if (FileInformationClass != FilePositionInformation) {
                 Status = STATUS_MEDIA_WRITE_PROTECTED;
-                __leave;
+                _SEH2_LEAVE;
             }
         }
 
@@ -590,12 +594,14 @@
             FileInformationClass == FileAllocationInformation ||
             FileInformationClass == FileEndOfFileInformation) {
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
             if (!ExAcquireResourceExclusiveLite(
                 &Fcb->PagingIoResource,
                 IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             FcbPagingIoResourceAcquired = TRUE;
@@ -606,7 +612,7 @@
             && FlagOn(Fcb->Flags, FCB_DELETE_PENDING))
         {
             Status = STATUS_DELETE_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
 */
         switch (FileInformationClass) {
@@ -664,7 +670,7 @@
 
                 if (FlagOn(Fcb->RfsdMcb->FileAttr, FILE_ATTRIBUTE_DIRECTORY)) {
                     Status = STATUS_INVALID_DEVICE_REQUEST;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if ( FAI->AllocationSize.QuadPart == 
@@ -716,7 +722,7 @@
                     } else {
 
                         Status = STATUS_USER_MAPPED_FILE;
-                        __leave;
+                        _SEH2_LEAVE;
                     }
                 }
 
@@ -743,18 +749,18 @@
 
                 if (IsDirectory(Fcb)) {
                     Status = STATUS_INVALID_DEVICE_REQUEST;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if (FEOFI->EndOfFile.HighPart != 0) {
                     Status = STATUS_INVALID_PARAMETER;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
 
                 if (IoStackLocation->Parameters.SetFile.AdvanceOnly) {
                     Status = STATUS_SUCCESS;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if ((FileObject->SectionObjectPointer->DataSectionObject != NULL) &&
@@ -848,7 +854,7 @@
                     } else {
 
                         Status = STATUS_USER_MAPPED_FILE;
-                        __leave;
+                        _SEH2_LEAVE;
                     }
                 }
             }
@@ -883,7 +889,7 @@
                 
                 if (Length < sizeof(FILE_POSITION_INFORMATION)) {
                     Status = STATUS_INVALID_PARAMETER;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FilePositionInformation = (PFILE_POSITION_INFORMATION) Buffer;
@@ -892,14 +898,14 @@
                     (FilePositionInformation->CurrentByteOffset.LowPart &
                     DeviceObject->AlignmentRequirement) ) {
                     Status = STATUS_INVALID_PARAMETER;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FileObject->CurrentByteOffset =
                     FilePositionInformation->CurrentByteOffset;
                 
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             break;
@@ -908,7 +914,7 @@
             Status = STATUS_INVALID_INFO_CLASS;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
         
         if (FcbPagingIoResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -945,7 +951,7 @@
                 RfsdCompleteIrpContext(IrpContext,  Status);
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
diff -bruN reiserfs_org/src/flush.c reiserfs/src/flush.c
--- reiserfs_org/src/flush.c	2015-10-29 19:39:50 +0200
+++ reiserfs/src/flush.c	2016-03-24 15:14:01 +0200
@@ -29,7 +29,7 @@
 IO_COMPLETION_ROUTINE RfsdFlushCompletionRoutine;
 #endif // _PREFAST_
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdFlushCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -167,7 +167,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
     
@@ -181,7 +181,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -196,7 +196,7 @@
         if ( IsFlagOn(Vcb->Flags, VCB_READ_ONLY) ||
              IsFlagOn(Vcb->Flags, VCB_WRITE_PROTECTED)) {
             Status =  STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         Irp = IrpContext->Irp;
@@ -209,12 +209,14 @@
         
         ASSERT(FcbOrVcb != NULL);
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
         if (!ExAcquireResourceExclusiveLite(
                 &FcbOrVcb->MainResource,
                 IrpContext->IsSynchronous )) {
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
             
         MainResourceAcquired = TRUE;
@@ -224,7 +226,7 @@
             Status = RfsdFlushFiles((PRFSD_VCB)(FcbOrVcb), FALSE);
 
             if (NT_SUCCESS(Status)) {
-                __leave;
+                _SEH2_LEAVE;
             }
 
             Status = RfsdFlushVolume((PRFSD_VCB)(FcbOrVcb), FALSE);
@@ -242,7 +244,7 @@
             }
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (MainResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -281,7 +283,7 @@
 
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
diff -bruN reiserfs_org/src/fsctl.c reiserfs/src/fsctl.c
--- reiserfs_org/src/fsctl.c	2015-10-29 19:29:40 +0200
+++ reiserfs/src/fsctl.c	2016-03-24 17:23:37 +0200
@@ -108,14 +108,14 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         if (FlagOn(Vcb->Flags, VCB_VOLUME_LOCKED)) {
             RfsdPrint((DBG_INFO, "RfsdLockVolume: Volume is already locked.\n"));
             
             Status = STATUS_ACCESS_DENIED;
             
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (Vcb->OpenFileHandleCount > (ULONG)(FileObject ? 1 : 0)) {
@@ -123,7 +123,7 @@
             
             Status = STATUS_ACCESS_DENIED;
             
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (!RfsdIsHandleCountZero(Vcb)) {
@@ -131,7 +131,7 @@
             
             Status = STATUS_ACCESS_DENIED;
             
-            __leave;
+            _SEH2_LEAVE;
         }
         
         SetFlag(Vcb->Flags, VCB_VOLUME_LOCKED);
@@ -144,9 +144,9 @@
         
         Status = STATUS_SUCCESS;
 
-    } __finally {
+    } _SEH2_FINALLY {
         // Nothing
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -163,7 +163,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -179,7 +179,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -204,7 +204,7 @@
 
         Status = RfsdLockVcb(Vcb, IrpSp->FileObject);        
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (VcbResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -216,7 +216,7 @@
         if (!IrpContext->ExceptionInProgress) {
             RfsdCompleteIrpContext(IrpContext,  Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -229,18 +229,18 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         if (FileObject && FileObject->FsContext != Vcb) {
 
             Status = STATUS_NOT_LOCKED;
-            __leave;
+            _SEH2_LEAVE;
         }
        
         if (!FlagOn(Vcb->Flags, VCB_VOLUME_LOCKED)) {
             RfsdPrint((DBG_ERROR, ": RfsdUnlockVcb: Volume is not locked.\n"));
             Status = STATUS_NOT_LOCKED;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (Vcb->LockFile == FileObject) {
@@ -256,9 +256,9 @@
             Status = STATUS_NOT_LOCKED;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
         // Nothing
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -277,7 +277,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -291,7 +291,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -313,7 +313,7 @@
 
         Status = RfsdUnlockVcb(Vcb, IrpSp->FileObject);
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (VcbResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -325,7 +325,7 @@
         if (!IrpContext->ExceptionInProgress) {
             RfsdCompleteIrpContext(IrpContext,  Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -348,14 +348,14 @@
 
     LUID Privilege = {SE_TCB_PRIVILEGE, 0};
 
-    __try {
+    _SEH2_TRY {
 
         Irp   = IrpContext->Irp;
         IrpSp = IoGetCurrentIrpStackLocation(Irp);
 
         if (!SeSinglePrivilegeCheck(Privilege, Irp->RequestorMode)) {
             Status = STATUS_PRIVILEGE_NOT_HELD;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (
@@ -369,7 +369,7 @@
 
             Status = STATUS_INVALID_PARAMETER;
 
-            __leave;
+            _SEH2_LEAVE;
         }
 
         Handle = *(PHANDLE)Irp->AssociatedIrp.SystemBuffer;
@@ -378,11 +378,11 @@
                                             0,
                                             *IoFileObjectType,
                                             KernelMode,
-                                            &FileObject,
+                                            (void **)&FileObject,
                                             NULL );
 
         if (!NT_SUCCESS(Status)) {
-            __leave;
+            _SEH2_LEAVE;
         } else {
             ObDereferenceObject(FileObject);
             DeviceObject = FileObject->DeviceObject;
@@ -427,7 +427,7 @@
             }
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (GlobalResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -436,7 +436,7 @@
         }
 
         RfsdCompleteIrpContext(IrpContext, Status);
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -605,7 +605,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
 
         ASSERT(IrpContext != NULL);
@@ -626,7 +626,7 @@
         //
         if (MainDeviceObject != RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         ExAcquireResourceExclusiveLite(
@@ -637,7 +637,7 @@
         
         if (FlagOn(RfsdGlobal->Flags, RFSD_UNLOAD_PENDING)) {
             Status = STATUS_UNRECOGNIZED_VOLUME;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Irp = IrpContext->Irp;
@@ -657,7 +657,7 @@
             &dwBytes );
         
         if (!NT_SUCCESS(Status)) {
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Status = IoCreateDevice(
@@ -670,7 +670,7 @@
             &VolumeDeviceObject );
         
         if (!NT_SUCCESS(Status)) {
-            __leave;
+            _SEH2_LEAVE;
         }
 
         VolumeDeviceObject->StackSize = (CCHAR)(TargetDeviceObject->StackSize + 1);
@@ -707,7 +707,7 @@
         }
 
         if (!NT_SUCCESS(Status)) {
-            __leave;
+            _SEH2_LEAVE;
         }
 		
 		Vcb->BlockSize = RfsdSb->s_blocksize;		// NOTE: FFS also does this here, since LoadGroup is not called in the non-ext2 drivers
@@ -731,7 +731,7 @@
             ClearFlag(VolumeDeviceObject->Flags, DO_DEVICE_INITIALIZING);
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (GlobalDataResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -756,7 +756,7 @@
             }
             RfsdCompleteIrpContext(IrpContext,  Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -779,7 +779,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -792,7 +792,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         ExAcquireResourceExclusiveLite(
@@ -816,12 +816,12 @@
         
         if (!FlagOn(Vcb->TargetDeviceObject->Flags, DO_VERIFY_VOLUME)) {
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (!IsMounted(Vcb)) {
             Status = STATUS_WRONG_VOLUME;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         dwReturn = sizeof(ULONG);
@@ -835,7 +835,7 @@
 
         if (ChangeCount != Vcb->ChangeCount) {
             Status = STATUS_WRONG_VOLUME;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Irp = IrpContext->Irp;
@@ -872,7 +872,7 @@
             RfsdPrint((DBG_INFO, "RfsdVerifyVolume: Volume verify failed.\n"));
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (rfsd_sb)
             ExFreePool(rfsd_sb);
@@ -893,7 +893,7 @@
         if (!IrpContext->ExceptionInProgress) {
             RfsdCompleteIrpContext(IrpContext,  Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -923,7 +923,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -937,7 +937,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -957,7 +957,7 @@
 
         if ( IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) {
             Status = STATUS_VOLUME_DISMOUNTED;
-            __leave;
+            _SEH2_LEAVE;
         }
 
 /*        
@@ -966,7 +966,7 @@
             
             Status = STATUS_ACCESS_DENIED;
            
-            __leave;
+            _SEH2_LEAVE;
         }
 */
 #if DISABLED
@@ -988,7 +988,7 @@
 
         Status = STATUS_SUCCESS;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (VcbResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -1000,7 +1000,7 @@
         if (!IrpContext->ExceptionInProgress) {
             RfsdCompleteIrpContext(IrpContext,  Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -1043,7 +1043,9 @@
         ClearFlag( Vpb->Flags, VPB_MOUNTED );
         ClearFlag( Vpb->Flags, VPB_LOCKED );
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28175, "allowed in file system drivers" )
+#endif
         if ((Vcb->RealDevice != Vpb->RealDevice) &&
             (Vcb->RealDevice->Vpb == Vpb)) {
             SetFlag( Vcb->RealDevice->Flags, DO_DEVICE_INITIALIZING );
@@ -1090,7 +1092,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(Vcb != NULL);
         
@@ -1171,9 +1173,9 @@
         
         RfsdPrint((DBG_INFO, "RfsdPurgeVolume: Volume flushed and purged.\n"));
 
-    } __finally {
+    } _SEH2_FINALLY {
         // Nothing
-    }
+    } _SEH2_END;
 
     return STATUS_SUCCESS;
 }
diff -bruN reiserfs_org/src/init.c reiserfs/src/init.c
--- reiserfs_org/src/init.c	2015-10-06 01:53:10 +0300
+++ reiserfs/src/init.c	2016-03-24 15:14:32 +0200
@@ -18,7 +18,7 @@
 
 /* DEFINITIONS ***********************************************************/
 
-NTSTATUS
+NTSTATUS NTAPI
 DriverEntry(
     IN PDRIVER_OBJECT DriverObject,
     IN PUNICODE_STRING RegistryPath   );
@@ -42,7 +42,7 @@
  * RETURNS:  None
  */
 
-VOID
+VOID NTAPI
 DriverUnload (IN PDRIVER_OBJECT DriverObject)
 {
     UNICODE_STRING  DosDeviceName;
@@ -216,11 +216,13 @@
 
 #define NLS_OEM_LEAD_BYTE_INFO            (*NlsOemLeadByteInfo)
 
+#ifndef __REACTOS__
 #define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) (                      \
     (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE :                  \
               (NLS_MB_CODE_PAGE_TAG &&                             \
                (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
 )
+#endif
 
 /*
  * NAME: DriverEntry
@@ -231,7 +233,7 @@
  *           RegistryPath = path to our configuration entries
  * RETURNS: Success or failure
  */
-NTSTATUS
+NTSTATUS NTAPI
 DriverEntry (
          IN PDRIVER_OBJECT   DriverObject,
          IN PUNICODE_STRING  RegistryPath
@@ -354,7 +356,9 @@
     FastIoDispatch->FastIoUnlockAllByKey        = RfsdFastIoUnlockAllByKey;
     FastIoDispatch->FastIoQueryNetworkOpenInfo  = RfsdFastIoQueryNetworkOpenInfo;
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28175, "allowed in file system drivers" )
+#endif
     DriverObject->FastIoDispatch = FastIoDispatch;
 
     switch ( MmQuerySystemSize() ) {
diff -bruN reiserfs_org/src/lockctl.c reiserfs/src/lockctl.c
--- reiserfs_org/src/lockctl.c	2015-10-04 20:36:00 +0300
+++ reiserfs/src/lockctl.c	2016-03-24 13:16:02 +0200
@@ -34,7 +34,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -47,7 +47,7 @@
 
             CompleteRequest = TRUE;
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         FileObject = IrpContext->FileObject;
@@ -60,7 +60,7 @@
 
             CompleteRequest = TRUE;
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         ASSERT((Fcb->Identifier.Type == RFSDFCB) &&
@@ -70,7 +70,7 @@
 
             CompleteRequest = TRUE;
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Irp = IrpContext->Irp;
@@ -113,7 +113,7 @@
                 Status          ));
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (!IrpContext->ExceptionInProgress) {
             if (!CompleteRequest) {
@@ -122,7 +122,7 @@
             
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
diff -bruN reiserfs_org/src/memory.c reiserfs/src/memory.c
--- reiserfs_org/src/memory.c	2015-10-06 16:16:42 +0300
+++ reiserfs/src/memory.c	2016-03-24 15:15:11 +0200
@@ -820,7 +820,9 @@
 VOID
 RfsdFreeMcb (IN PRFSD_MCB Mcb)
 {
+#ifndef __REACTOS__
     PRFSD_MCB   Parent = Mcb->Parent;
+#endif
 
     ASSERT(Mcb != NULL);
     
@@ -1268,12 +1270,12 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         if (!Vpb) {
 
             Status = STATUS_DEVICE_NOT_READY;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         RfsdPrint((DBG_ERROR, "RfsdInitializeVcb: Flink = %xh McbList = %xh\n",
@@ -1351,7 +1353,7 @@
                                        &OemName );
 
             if (!NT_SUCCESS(Status)) {
-                __leave;
+                _SEH2_LEAVE;
             }
 
             Vpb->VolumeLabelLength = LabelName.Length;
@@ -1385,7 +1387,7 @@
 
             SetFlag(Vcb->StreamObj->Flags, FO_NO_INTERMEDIATE_BUFFERING);
         } else {
-            __leave;
+            _SEH2_LEAVE;
         }
 
         InitializeListHead(&Vcb->FcbList);
@@ -1453,7 +1455,7 @@
                 &IoctlSize );
 
         if (!NT_SUCCESS(Status)) {
-            __leave;
+            _SEH2_LEAVE;
         }
 
         Vcb->ChangeCount = ChangeCount;
@@ -1487,7 +1489,7 @@
 #if DISABLED	// IN FFFS TOO
         if (!RfsdLoadGroup(Vcb)) {
             Status = STATUS_UNSUCCESSFUL;
-            __leave;
+            _SEH2_LEAVE;
         }
 #endif
 
@@ -1509,7 +1511,7 @@
                             FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_NORMAL);
 
         if (!Vcb->McbTree) {
-            __leave;
+            _SEH2_LEAVE;
         }
 
 		// Set the root of the filesystem to the root directory's inode / stat data structure
@@ -1545,7 +1547,7 @@
 
         SetFlag(Vcb->Flags, VCB_INITIALIZED);
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (!NT_SUCCESS(Status)) {
 
@@ -1569,7 +1571,7 @@
                 ExDeleteResourceLite(&Vcb->PagingIoResource);
             }
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
diff -bruN reiserfs_org/src/pnp.c reiserfs/src/pnp.c
--- reiserfs_org/src/pnp.c	2015-10-29 19:23:10 +0200
+++ reiserfs/src/pnp.c	2016-03-24 15:13:58 +0200
@@ -24,7 +24,7 @@
 IO_COMPLETION_ROUTINE RfsdPnpCompletionRoutine;
 #endif // _PREFAST_
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdPnpCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP           Irp,
@@ -42,7 +42,7 @@
 
 #if (_WIN32_WINNT >= 0x0500)
 
-NTSTATUS
+NTSTATUS NTAPI
 RfsdPnpCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -71,7 +71,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
         
@@ -86,7 +86,7 @@
 
         if ( !((Vcb->Identifier.Type == RFSDVCB) &&
                (Vcb->Identifier.Size == sizeof(RFSD_VCB)))) {
-            __leave; // Status = STATUS_INVALID_PARAMETER
+            _SEH2_LEAVE; // Status = STATUS_INVALID_PARAMETER
         }
         
         Irp = IrpContext->Irp;
@@ -125,7 +125,7 @@
                 break;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (!IrpContext->ExceptionInProgress) {
             Irp = IrpContext->Irp;
@@ -145,7 +145,7 @@
 
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
         
     return Status;
 }
@@ -165,7 +165,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         RfsdPrint((DBG_PNP, "RfsdPnpQueryRemove by RfsdPnp ...\n"));
 
@@ -191,7 +191,7 @@
         RfsdPurgeVolume(Vcb, TRUE);
 
         if (!NT_SUCCESS(Status)) {
-            __leave;
+            _SEH2_LEAVE;
         }
 
         ExReleaseResourceForThreadLite(
@@ -232,7 +232,7 @@
 
         ASSERT( !(NT_SUCCESS(Status) && !bDeleted));
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (VcbAcquired) {
             ExReleaseResourceForThreadLite(
@@ -245,7 +245,7 @@
             IO_DISK_INCREMENT : IO_NO_INCREMENT) );
 
         IrpContext->Irp = NULL;
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -262,7 +262,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         RfsdPrint((DBG_PNP, "RfsdPnpRemove by RfsdPnp ...\n"));
 #if (_WIN32_WINNT >= 0x0500)
@@ -316,13 +316,13 @@
 
         bDeleted = RfsdCheckDismount(IrpContext, Vcb, TRUE);
 
-    } __finally {
+    } _SEH2_FINALLY {
         RfsdCompleteRequest(
             IrpContext->Irp, FALSE, (CCHAR)(NT_SUCCESS(Status)?
             IO_DISK_INCREMENT : IO_NO_INCREMENT) );
 
         IrpContext->Irp = NULL;
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -339,7 +339,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         RfsdPrint((DBG_PNP, "RfsdPnpSupriseRemove by RfsdPnp ...\n"));
 #if (_WIN32_WINNT >= 0x0500)
@@ -393,14 +393,14 @@
 
         bDeleted = RfsdCheckDismount(IrpContext, Vcb, TRUE);
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         RfsdCompleteRequest(
             IrpContext->Irp, FALSE, (CCHAR)(NT_SUCCESS(Status)?
             IO_DISK_INCREMENT : IO_NO_INCREMENT) );
 
         IrpContext->Irp = NULL;
-    }
+    } _SEH2_END;
 
     return Status;
 }
diff -bruN reiserfs_org/src/read.c reiserfs/src/read.c
--- reiserfs_org/src/read.c	2015-10-29 19:35:26 +0200
+++ reiserfs/src/read.c	2016-03-24 13:58:02 +0200
@@ -119,7 +119,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
         
@@ -144,7 +144,7 @@
         if (!(FcbOrVcb->Identifier.Type == RFSDVCB && (PVOID)FcbOrVcb == (PVOID)Vcb)) {
 
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         Ccb = (PRFSD_CCB) FileObject->FsContext2;
@@ -166,7 +166,7 @@
 
             Irp->IoStatus.Information = 0;
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (Ccb != NULL) {
@@ -183,7 +183,7 @@
                 if ((ByteOffset.LowPart & (SECTOR_SIZE - 1)) ||
                    (Length & (SECTOR_SIZE - 1)) ) {
                     Status = STATUS_INVALID_PARAMETER;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 Status = RfsdLockUserBuffer(
@@ -192,7 +192,7 @@
                     IoReadAccess );
                 
                 if (!NT_SUCCESS(Status)) {
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 BlockArray.Irp = NULL;
@@ -208,7 +208,7 @@
                                     FALSE   );
                 Irp = IrpContext->Irp;
 
-                __leave;
+                _SEH2_LEAVE;
             }
         }
             
@@ -218,13 +218,13 @@
             DbgBreak();
 
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (FlagOn(IrpContext->MinorFunction, IRP_MN_DPC)) {
             ClearFlag(IrpContext->MinorFunction, IRP_MN_DPC);
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (!PagingIo) {
@@ -232,7 +232,7 @@
                 &Vcb->MainResource,
                 IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             MainResourceAcquired = TRUE;
@@ -244,7 +244,7 @@
                 IrpContext->IsSynchronous ))
             {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             PagingIoResourceAcquired = TRUE;
@@ -255,7 +255,7 @@
             Vcb->PartitionInformation.PartitionLength.QuadPart  ) {
             Irp->IoStatus.Information = 0;
             Status = STATUS_END_OF_FILE;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (!Nocache) {
@@ -286,7 +286,7 @@
                 if (Buffer == NULL) {
                     DbgBreak();
                     Status = STATUS_INVALID_USER_BUFFER;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if (!CcCopyRead(
@@ -297,7 +297,7 @@
                     Buffer,
                     &Irp->IoStatus )) {
                     Status = STATUS_PENDING;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 Status = Irp->IoStatus.Status;
@@ -320,7 +320,7 @@
                 IoWriteAccess );
                 
             if (!NT_SUCCESS(Status)) {
-                __leave;
+                _SEH2_LEAVE;
             }
 
 #if DBG
@@ -331,7 +331,7 @@
             if (!rfsd_bdl)
             {
                 Status = STATUS_INSUFFICIENT_RESOURCES;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             rfsd_bdl->Irp = NULL;
@@ -349,10 +349,10 @@
             Irp = IrpContext->Irp;
 
             if (!Irp)
-                __leave;
+                _SEH2_LEAVE;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (PagingIoResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -410,7 +410,7 @@
                 RfsdFreeIrpContext(IrpContext);
             }
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -571,7 +571,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
         
@@ -605,9 +605,11 @@
         Length = IoStackLocation->Parameters.Read.Length;
         ByteOffset = IoStackLocation->Parameters.Read.ByteOffset;
         
+#ifdef _MSC_VER
 		KdPrint(("$$$ " __FUNCTION__ " on key: %x,%xh to read %i bytes at the offset %xh in the file\n", 
 			Fcb->RfsdMcb->Key.k_dir_id, Fcb->RfsdMcb->Key.k_objectid,
 			Length, ByteOffset.QuadPart));
+#endif
 
         PagingIo = (Irp->Flags & IRP_PAGING_IO ? TRUE : FALSE);
         Nocache = (Irp->Flags & IRP_NOCACHE ? TRUE : FALSE);
@@ -616,19 +618,19 @@
 /*
         if (IsFlagOn(Fcb->Flags, FCB_FILE_DELETED)) {
             Status = STATUS_FILE_DELETED;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (IsFlagOn(Fcb->Flags, FCB_DELETE_PENDING)) {
             Status = STATUS_DELETE_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
 */
 
         if (Length == 0) {
             Irp->IoStatus.Information = 0;
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (Nocache &&
@@ -636,14 +638,14 @@
             Length & (SECTOR_SIZE - 1))) {
             Status = STATUS_INVALID_PARAMETER;
             DbgBreak();
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (FlagOn(IrpContext->MinorFunction, IRP_MN_DPC)) {
             ClearFlag(IrpContext->MinorFunction, IRP_MN_DPC);
             Status = STATUS_PENDING;
             DbgBreak();
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (!PagingIo) {
@@ -651,7 +653,7 @@
                 &Fcb->MainResource,
                 IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             MainResourceAcquired = TRUE;
@@ -660,14 +662,14 @@
                 &Fcb->FileLockAnchor,
                 Irp         )) {
                 Status = STATUS_FILE_LOCK_CONFLICT;
-                __leave;
+                _SEH2_LEAVE;
             }
         } else {
             if (!ExAcquireResourceSharedLite(
                 &Fcb->PagingIoResource,
                 IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             PagingIoResourceAcquired = TRUE;
@@ -681,7 +683,7 @@
                 if (ByteOffset.QuadPart >= (Fcb->Header.FileSize.QuadPart)) {
                     Irp->IoStatus.Information = 0;
                     Status = STATUS_END_OF_FILE;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 Length =
@@ -692,7 +694,7 @@
             ReturnedLength = Length;
 
             if (IsDirectory(Fcb)) {
-                __leave;
+                _SEH2_LEAVE;
             }
 
             {
@@ -724,7 +726,7 @@
                 if (Buffer == NULL) {
                     Status = STATUS_INVALID_USER_BUFFER;
                     DbgBreak();
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 if (!CcCopyRead(
@@ -736,7 +738,7 @@
                     &Irp->IoStatus )) {
                     Status = STATUS_PENDING;
                     DbgBreak();
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 Status = Irp->IoStatus.Status;
@@ -751,7 +753,7 @@
                     Irp->IoStatus.Information = 0;
                     Status = STATUS_END_OF_FILE;
                     DbgBreak();
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 Length =
@@ -779,7 +781,7 @@
                 }
 
             } else {
-                __leave;
+                _SEH2_LEAVE;
             }
 
             Irp->IoStatus.Status = STATUS_SUCCESS;
@@ -800,7 +802,7 @@
 
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (PagingIoResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -846,7 +848,7 @@
                 RfsdFreeIrpContext(IrpContext);
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -860,7 +862,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
         
@@ -877,12 +879,12 @@
         
         Status = STATUS_SUCCESS;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (!IrpContext->ExceptionInProgress) {
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -905,7 +907,7 @@
     ASSERT((IrpContext->Identifier.Type == RFSDICX) &&
         (IrpContext->Identifier.Size == sizeof(RFSD_IRP_CONTEXT)));
 
-    __try {
+    _SEH2_TRY {
 
         if (FlagOn(IrpContext->MinorFunction, IRP_MN_COMPLETE)) {
 			// Caller wants to tell the Cache Manager that a previously allocated MDL can be freed.
@@ -919,7 +921,7 @@
             if (DeviceObject == RfsdGlobal->DeviceObject) {
                 Status = STATUS_INVALID_DEVICE_REQUEST;
                 bCompleteRequest = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -929,14 +931,14 @@
                 Status = STATUS_INVALID_DEVICE_REQUEST;
                 bCompleteRequest = TRUE;
 
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) {
 
                 Status = STATUS_TOO_LATE;
                 bCompleteRequest = TRUE;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             FileObject = IrpContext->FileObject;
@@ -958,11 +960,11 @@
             }
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
         if (bCompleteRequest) {
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
diff -bruN reiserfs_org/src/rfsd.c reiserfs/src/rfsd.c
--- reiserfs_org/src/rfsd.c	2015-10-05 16:34:46 +0300
+++ reiserfs/src/rfsd.c	2016-03-24 17:51:56 +0200
@@ -13,7 +13,9 @@
 #include "rfsd.h"
 
 // TODO: turn off (turns off warning about returning without return value, so I could easily disable code sections)
+#ifdef _MSC_VER
 #pragma warning(disable : 4716)
+#endif
 
 /* GLOBALS ***************************************************************/
 
@@ -267,7 +269,7 @@
 	TargetKey.k_offset		= 0x0;
 	TargetKey.k_type		= RFSD_KEY_TYPE_v2_STAT_DATA;	
 
-	RfsdPrint((DBG_FUNC, __FUNCTION__ "on %i, %i\n", TargetKey.k_dir_id, TargetKey.k_objectid));
+	RfsdPrint((DBG_FUNC, /*__FUNCTION__*/ "on %i, %i\n", TargetKey.k_dir_id, TargetKey.k_objectid));
 
 	//Load the stat data
 	Status = RfsdLoadItem(Vcb, &TargetKey,
@@ -407,7 +409,7 @@
         return FALSE;
     }
 
-    __try {
+    _SEH2_TRY {
 
         RtlCopyMemory(Buffer, Buf, Size);
         CcSetDirtyPinnedData(Bcb, NULL );
@@ -419,14 +421,14 @@
 
         bRet = TRUE;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (AbnormalTermination()) {
 
             CcUnpinData(Bcb);
             bRet = FALSE;
         }
-    }
+    } _SEH2_END;
 
     CcUnpinData(Bcb);
 
@@ -1696,7 +1698,7 @@
 
     MainResourceAcquired = ExAcquireResourceExclusiveLite(&Dcb->MainResource, TRUE);
 
-    __try {
+    _SEH2_TRY {
 
         Dcb->ReferenceCount++;
 
@@ -1704,7 +1706,7 @@
                                     RFSD_DIR_REC_LEN(RFSD_NAME_LEN), RFSD_POOL_TAG);
         if (!pDir) {
             Status = STATUS_INSUFFICIENT_RESOURCES;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         pTarget = (PRFSD_DIR_ENTRY2) ExAllocatePoolWithTag(PagedPool,
@@ -1712,7 +1714,7 @@
         if (!pTarget) {
 
             Status = STATUS_INSUFFICIENT_RESOURCES;
-            __leave;
+            _SEH2_LEAVE;
         }
 
 #if DISABLED			// disabled in FFS too
@@ -1734,7 +1736,7 @@
             Status = RfsdUnicodeToOEM(&OemName, FileName);
 
             if (!NT_SUCCESS(Status)) {
-                __leave;
+                _SEH2_LEAVE;
             }
 
             pDir->name_len = (CCHAR) OemName.Length;
@@ -1764,7 +1766,7 @@
 
             if (!NT_SUCCESS(Status)) {
                 RfsdPrint((DBG_ERROR, "RfsdAddDirectory: Reading Directory Content error.\n"));
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if (((pTarget->inode == 0) && pTarget->rec_len >= pDir->rec_len) || 
@@ -1787,7 +1789,7 @@
 
                     if (!NT_SUCCESS(Status)) {
                         RfsdPrint((DBG_ERROR, "RfsdAddDirectory: Reading Directory Content error.\n"));
-                        __leave;
+                        _SEH2_LEAVE;
                     }
 
                     Length = RFSD_DIR_REC_LEN(pTarget->name_len);
@@ -1862,14 +1864,14 @@
                     goto Repeat;
                 }
 
-                __leave;
+                _SEH2_LEAVE;
 
             } else { // Something must be error!
-                __leave;
+                _SEH2_LEAVE;
             }
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         Dcb->ReferenceCount--;
 
@@ -1886,7 +1888,7 @@
         if (pDir)   {
             ExFreePool(pDir);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 #endif
@@ -1923,7 +1925,7 @@
     MainResourceAcquired = 
             ExAcquireResourceExclusiveLite(&Dcb->MainResource, TRUE);
 
-    __try {
+    _SEH2_TRY {
 
         Dcb->ReferenceCount++;
 
@@ -1932,14 +1934,14 @@
         if (!pTarget) {
 
             Status = STATUS_INSUFFICIENT_RESOURCES;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         pPrevDir = (PRFSD_DIR_ENTRY2) ExAllocatePoolWithTag(PagedPool,
                                      RFSD_DIR_REC_LEN(RFSD_NAME_LEN), RFSD_POOL_TAG);
         if (!pPrevDir) {
             Status = STATUS_INSUFFICIENT_RESOURCES;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         dwBytes = 0;
@@ -1961,7 +1963,7 @@
             if (!NT_SUCCESS(Status)) {
 
                 RfsdPrint((DBG_ERROR, "RfsdRemoveEntry: Reading Directory Content error.\n"));
-                __leave;
+                _SEH2_LEAVE;
             }
 
             //
@@ -2104,7 +2106,7 @@
             dwBytes += pTarget->rec_len;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         Dcb->ReferenceCount--;
 
@@ -2120,7 +2122,7 @@
         if (pPrevDir != NULL) {
             ExFreePool(pPrevDir);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 #endif
@@ -2154,7 +2156,7 @@
     MainResourceAcquired = 
         ExAcquireResourceExclusiveLite(&Dcb->MainResource, TRUE);
 
-    __try {
+    _SEH2_TRY {
 
         Dcb->ReferenceCount++;
 
@@ -2162,7 +2164,7 @@
                                    RFSD_DIR_REC_LEN(1) + RFSD_DIR_REC_LEN(2), RFSD_POOL_TAG);
         if (!pSelf) {
             Status = STATUS_INSUFFICIENT_RESOURCES;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         dwBytes = 0;
@@ -2183,7 +2185,7 @@
 
         if (!NT_SUCCESS(Status)) {
             RfsdPrint((DBG_ERROR, "RfsdSetParentEntry: Reading Directory Content error.\n"));
-            __leave;
+            _SEH2_LEAVE;
         }
 
         ASSERT(dwBytes == RFSD_DIR_REC_LEN(1) + RFSD_DIR_REC_LEN(2));
@@ -2207,7 +2209,7 @@
                         FALSE,
                         &dwBytes );
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         Dcb->ReferenceCount--;
 
@@ -2220,7 +2222,7 @@
         if (pSelf) {
             ExFreePool(pSelf);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 #endif
@@ -2484,18 +2486,18 @@
     }
 #endif
 
-    __try {
+    _SEH2_TRY {
 
         bRet = FsRtlAddLargeMcbEntry(
                          &(Vcb->DirtyMcbs),
                          Offset, Offset,
                          Length );
 
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
 
         DbgBreak();
         bRet = FALSE;
-    }
+    } _SEH2_END;
 
 #if DBG
     if (bRet) {
@@ -2579,14 +2581,14 @@
         &(Vcb->McbResource),
         TRUE );
 
-    __try {
+    _SEH2_TRY {
         FsRtlRemoveLargeMcbEntry(
             &(Vcb->DirtyMcbs),
             Offset, Length      );
 
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
         DbgBreak();
-    }
+    } _SEH2_END;
 
 #if DBG
     {
@@ -2698,7 +2700,9 @@
 #define  MAGIC_KEY_LENGTH							9
 	
 	UCHAR				sz_MagicKey[]	= REISER2FS_SUPER_MAGIC_STRING;
+#ifndef __REACTOS__
 	BOOLEAN			b_KeyMatches	= TRUE;
+#endif
 	UCHAR				currentChar;
 	int				i;
 
diff -bruN reiserfs_org/src/shutdown.c reiserfs/src/shutdown.c
--- reiserfs_org/src/shutdown.c	2015-10-06 02:40:36 +0300
+++ reiserfs/src/shutdown.c	2016-03-24 13:57:11 +0200
@@ -36,7 +36,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
     
@@ -49,12 +49,14 @@
     
         IrpSp = IoGetCurrentIrpStackLocation(Irp);
 
+#ifdef _MSC_VER
 #pragma prefast( suppress: 28137, "by design" )
+#endif
         if (!ExAcquireResourceExclusiveLite(
                 &RfsdGlobal->Resource,
                 IrpContext->IsSynchronous )) {
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
             
         GlobalResourceAcquired = TRUE;
@@ -94,7 +96,7 @@
 /*
         IoUnregisterFileSystem(RfsdGlobal->DeviceObject);
 */
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (GlobalResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -109,7 +111,7 @@
                 RfsdCompleteIrpContext(IrpContext, Status);
             }
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
diff -bruN reiserfs_org/src/volinfo.c reiserfs/src/volinfo.c
--- reiserfs_org/src/volinfo.c	2015-10-29 19:23:10 +0200
+++ reiserfs/src/volinfo.c	2016-03-24 13:19:00 +0200
@@ -41,7 +41,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -55,7 +55,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -73,7 +73,7 @@
             )) {
 
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         VcbResourceAcquired = TRUE;
@@ -101,7 +101,7 @@
                 
                 if (Length < sizeof(FILE_FS_VOLUME_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FsVolInfo = (PFILE_FS_VOLUME_INFORMATION) Buffer;
@@ -124,14 +124,14 @@
                     Irp->IoStatus.Information =
                         sizeof(FILE_FS_VOLUME_INFORMATION);
                     Status = STATUS_BUFFER_OVERFLOW;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 RtlCopyMemory(FsVolInfo->VolumeLabel, Vcb->Vpb->VolumeLabel, Vcb->Vpb->VolumeLabelLength);
 
                 Irp->IoStatus.Information = RequiredLength;
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
             
         case FileFsSizeInformation:
@@ -140,7 +140,7 @@
                 
                 if (Length < sizeof(FILE_FS_SIZE_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FsSizeInfo = (PFILE_FS_SIZE_INFORMATION) Buffer;
@@ -159,7 +159,7 @@
                 
                 Irp->IoStatus.Information = sizeof(FILE_FS_SIZE_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
             
         case FileFsDeviceInformation:
@@ -168,7 +168,7 @@
                 
                 if (Length < sizeof(FILE_FS_DEVICE_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FsDevInfo = (PFILE_FS_DEVICE_INFORMATION) Buffer;
@@ -191,7 +191,7 @@
                 
                 Irp->IoStatus.Information = sizeof(FILE_FS_DEVICE_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
             
         case FileFsAttributeInformation:
@@ -201,7 +201,7 @@
                 
                 if (Length < sizeof(FILE_FS_ATTRIBUTE_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 FsAttrInfo =
@@ -221,7 +221,7 @@
                     Irp->IoStatus.Information =
                         sizeof(FILE_FS_ATTRIBUTE_INFORMATION);
                     Status = STATUS_BUFFER_OVERFLOW;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 RtlCopyMemory(
@@ -230,7 +230,7 @@
                 
                 Irp->IoStatus.Information = RequiredLength;
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
 
 #if (_WIN32_WINNT >= 0x0500)
@@ -241,7 +241,7 @@
 
                 if (Length < sizeof(FILE_FS_FULL_SIZE_INFORMATION)) {
                     Status = STATUS_INFO_LENGTH_MISMATCH;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 PFFFSI = (PFILE_FS_FULL_SIZE_INFORMATION) Buffer;
@@ -276,7 +276,7 @@
 
                 Irp->IoStatus.Information = sizeof(FILE_FS_FULL_SIZE_INFORMATION);
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
 
 #endif // (_WIN32_WINNT >= 0x0500)
@@ -285,7 +285,7 @@
             Status = STATUS_INVALID_INFO_CLASS;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (VcbResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -300,7 +300,7 @@
                 RfsdCompleteIrpContext(IrpContext, Status);
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -320,7 +320,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext != NULL);
         
@@ -334,7 +334,7 @@
         //
         if (DeviceObject == RfsdGlobal->DeviceObject) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -348,7 +348,7 @@
 
         if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY)) {
             Status = STATUS_MEDIA_WRITE_PROTECTED;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         Irp = IrpContext->Irp;
@@ -376,7 +376,7 @@
 
                 if(VolLabelLen > (16 * sizeof(WCHAR))) {
                     Status = STATUS_INVALID_VOLUME_LABEL;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                
                 RtlCopyMemory( Vcb->Vpb->VolumeLabel,
@@ -412,7 +412,7 @@
             Status = STATUS_INVALID_INFO_CLASS;
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
        
         if (!IrpContext->ExceptionInProgress) {
             if (Status == STATUS_PENDING) {
@@ -421,7 +421,7 @@
                 RfsdCompleteIrpContext(IrpContext, Status);
             }
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
diff -bruN reiserfs_org/src/write.c reiserfs/src/write.c
--- reiserfs_org/src/write.c	2015-10-06 16:47:28 +0300
+++ reiserfs/src/write.c	2016-03-24 13:19:41 +0200
@@ -252,7 +252,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
         
@@ -276,7 +276,7 @@
         
         if (!(FcbOrVcb->Identifier.Type == RFSDVCB && (PVOID)FcbOrVcb == (PVOID)Vcb)) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         Ccb = (PRFSD_CCB) FileObject->FsContext2;
@@ -298,7 +298,7 @@
         if (Length == 0) {
             Irp->IoStatus.Information = 0;
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
       
         // For the case of "Direct Access Storage Device", we
@@ -326,7 +326,7 @@
                 if ((ByteOffset.LowPart & (SECTOR_SIZE - 1)) ||
                    (Length & (SECTOR_SIZE - 1)) ) {
                     Status = STATUS_INVALID_PARAMETER;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 Status = RfsdLockUserBuffer(
@@ -335,7 +335,7 @@
                     IoReadAccess );
                 
                 if (!NT_SUCCESS(Status)) {
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 BlockArray.Irp = NULL;
@@ -351,7 +351,7 @@
                                     FALSE   );
                 Irp = IrpContext->Irp;
 
-                __leave;
+                _SEH2_LEAVE;
             }
         }                    
 
@@ -359,20 +359,20 @@
            (ByteOffset.LowPart & (SECTOR_SIZE - 1) ||
             Length & (SECTOR_SIZE - 1))) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (FlagOn(IrpContext->MinorFunction, IRP_MN_DPC)) {
             ClearFlag(IrpContext->MinorFunction, IRP_MN_DPC);
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
         
         if (ByteOffset.QuadPart >=
             Vcb->PartitionInformation.PartitionLength.QuadPart  ) {
             Irp->IoStatus.Information = 0;
             Status = STATUS_END_OF_FILE;
-            __leave;
+            _SEH2_LEAVE;
         }
 
 #if FALSE
@@ -404,7 +404,7 @@
 
                 Status = STATUS_PENDING;
 
-                __leave;
+                _SEH2_LEAVE;
             }
         }
 
@@ -425,7 +425,7 @@
 
             if (!NT_SUCCESS(Irp->IoStatus.Status))  {
                 Status = Irp->IoStatus.Status;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             ExAcquireSharedStarveExclusive(&Vcb->PagingIoResource, TRUE);
@@ -447,7 +447,7 @@
                 &Vcb->MainResource,
                 IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             MainResourceAcquired = TRUE;
@@ -468,7 +468,7 @@
                     &Vcb->PagingIoResource,
                     IrpContext->IsSynchronous )) {
                     Status = STATUS_PENDING;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
             
                 PagingIoResourceAcquired = TRUE;
@@ -505,7 +505,7 @@
                     DbgBreak();
 
                     Status = STATUS_INVALID_USER_BUFFER;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 if (!CcCopyWrite( Vcb->StreamObj,
@@ -514,7 +514,7 @@
                                   TRUE,
                                   Buffer )) {
                     Status = STATUS_PENDING;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
 
                 Status = Irp->IoStatus.Status;
@@ -550,7 +550,7 @@
                 IoReadAccess );
                 
             if (!NT_SUCCESS(Status)) {
-                __leave;
+                _SEH2_LEAVE;
             }
 
             rfsd_bdl = ExAllocatePoolWithTag(PagedPool, 
@@ -559,7 +559,7 @@
 
             if (!rfsd_bdl) {
                 Status = STATUS_INSUFFICIENT_RESOURCES;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             DirtyLba = ByteOffset.QuadPart;
@@ -626,7 +626,7 @@
                         else
                             Status = STATUS_UNSUCCESSFUL;
 
-                        __leave;
+                        _SEH2_LEAVE;
 
                     } else {
                         break;
@@ -658,7 +658,7 @@
                     ExFreePool(rfsd_bdl);
 
                 if (!Irp)
-                    __leave;
+                    _SEH2_LEAVE;
 
             } else {
 
@@ -668,10 +668,10 @@
                 Irp->IoStatus.Information = Length;
     
                 Status = STATUS_SUCCESS;
-                __leave;
+                _SEH2_LEAVE;
             }
         }
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (PagingIoResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -720,7 +720,7 @@
                 RfsdFreeIrpContext(IrpContext);
             }
         }
-    }
+    } _SEH2_END;
 
     return Status;
 }
@@ -893,7 +893,7 @@
 
     PAGED_CODE();
 #if 0
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
         
@@ -938,32 +938,32 @@
         if (IsFlagOn(Fcb->Flags, FCB_FILE_DELETED))
         {
             Status = STATUS_FILE_DELETED;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (IsFlagOn(Fcb->Flags, FCB_DELETE_PENDING))
         {
             Status = STATUS_DELETE_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
 */
         if (Length == 0) {
             Irp->IoStatus.Information = 0;
             Status = STATUS_SUCCESS;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (Nocache &&
            (ByteOffset.LowPart & (SECTOR_SIZE - 1) ||
             Length & (SECTOR_SIZE - 1))) {
             Status = STATUS_INVALID_PARAMETER;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         if (FlagOn(IrpContext->MinorFunction, IRP_MN_DPC)) {
             ClearFlag(IrpContext->MinorFunction, IRP_MN_DPC);
             Status = STATUS_PENDING;
-            __leave;
+            _SEH2_LEAVE;
         }
 
 #if FALSE
@@ -992,7 +992,7 @@
                 DbgBreak();
 
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
         }
 
@@ -1005,7 +1005,7 @@
 
         if ( FlagOn(Fcb->RfsdMcb->FileAttr, FILE_ATTRIBUTE_DIRECTORY) && !PagingIo) {
             Status = STATUS_INVALID_DEVICE_REQUEST;
-            __leave;
+            _SEH2_LEAVE;
         }
 
         //
@@ -1030,7 +1030,7 @@
             if (!NT_SUCCESS(Irp->IoStatus.Status)) 
             {
                 Status = Irp->IoStatus.Status;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             ExAcquireSharedStarveExclusive( &Fcb->PagingIoResource, TRUE);
@@ -1051,7 +1051,7 @@
                 &Fcb->MainResource,
                 IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
             
             MainResourceAcquired = TRUE;
@@ -1070,7 +1070,7 @@
                  &Fcb->PagingIoResource,
                  IrpContext->IsSynchronous )) {
                 Status = STATUS_PENDING;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             PagingIoResourceAcquired = TRUE;
@@ -1081,7 +1081,7 @@
                 &Fcb->FileLockAnchor,
                 Irp         )) {
                 Status = STATUS_FILE_LOCK_CONFLICT;
-                __leave;
+                _SEH2_LEAVE;
             }
         }
 
@@ -1095,7 +1095,7 @@
 
                     Status = STATUS_SUCCESS;
                     Irp->IoStatus.Information = 0;
-                    __leave;
+                    _SEH2_LEAVE;
 
                 } else {
 
@@ -1111,7 +1111,7 @@
         if (!Nocache) {
 
             if (FlagOn(Fcb->RfsdMcb->FileAttr, FILE_ATTRIBUTE_DIRECTORY)) {
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if (FileObject->PrivateCacheMap == NULL) {
@@ -1150,7 +1150,7 @@
                 if (ExtendSize.QuadPart > Fcb->Header.AllocationSize.QuadPart) {
                     Status = RfsdExpandFile(IrpContext, Vcb, Fcb, &ExtendSize);
                     if (!NT_SUCCESS(Status)) {
-                        __leave;
+                        _SEH2_LEAVE;
                     }
                 }
 
@@ -1204,7 +1204,7 @@
                 if (Buffer == NULL) {
                     DbgBreak();
                     Status = STATUS_INVALID_USER_BUFFER;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 if (!CcCopyWrite(
@@ -1214,7 +1214,7 @@
                         IrpContext->IsSynchronous,
                         Buffer  )) {
                     Status = STATUS_PENDING;
-                    __leave;
+                    _SEH2_LEAVE;
                 }
                 
                 Status = Irp->IoStatus.Status;
@@ -1240,7 +1240,7 @@
                 IoReadAccess );
                 
             if (!NT_SUCCESS(Status)) {
-                __leave;
+                _SEH2_LEAVE;
             }
 
             Irp->IoStatus.Status = STATUS_SUCCESS;
@@ -1262,7 +1262,7 @@
 
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (PagingIoResourceAcquired) {
             ExReleaseResourceForThreadLite(
@@ -1311,7 +1311,7 @@
                 RfsdFreeIrpContext(IrpContext);
             }
         }
-    }
+    } _SEH2_END;
 #endif // 0
     return Status;
 }
@@ -1326,7 +1326,7 @@
 
     PAGED_CODE();
 
-    __try {
+    _SEH2_TRY {
 
         ASSERT(IrpContext);
         
@@ -1344,12 +1344,12 @@
         
         Status = STATUS_SUCCESS;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (!IrpContext->ExceptionInProgress) {
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
@@ -1371,7 +1371,7 @@
     ASSERT((IrpContext->Identifier.Type == RFSDICX) &&
         (IrpContext->Identifier.Size == sizeof(RFSD_IRP_CONTEXT)));
 
-    __try {
+    _SEH2_TRY {
 
         if (FlagOn(IrpContext->MinorFunction, IRP_MN_COMPLETE)) {
 
@@ -1384,7 +1384,7 @@
 
             if (DeviceObject == RfsdGlobal->DeviceObject) {
                 Status = STATUS_INVALID_DEVICE_REQUEST;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             Vcb = (PRFSD_VCB) DeviceObject->DeviceExtension;
@@ -1392,19 +1392,19 @@
             if (Vcb->Identifier.Type != RFSDVCB ||
                 Vcb->Identifier.Size != sizeof(RFSD_VCB) ) {
                  Status = STATUS_INVALID_PARAMETER;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             ASSERT(IsMounted(Vcb));
 
             if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) {
                 Status = STATUS_TOO_LATE;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY)) {
                 Status = STATUS_MEDIA_WRITE_PROTECTED;
-                __leave;
+                _SEH2_LEAVE;
             }
 
             FileObject = IrpContext->FileObject;
@@ -1433,12 +1433,12 @@
             }
         }
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if (bCompleteRequest) {
             RfsdCompleteIrpContext(IrpContext, Status);
         }
-    }
+    } _SEH2_END;
     
     return Status;
 }
