diff -uNrEZbwB /tmp/udffs/CDRW/cdrw_hw.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/CDRW/cdrw_hw.h
--- /tmp/udffs/CDRW/cdrw_hw.h	2013-07-24 19:32:03.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/CDRW/cdrw_hw.h	2015-06-18 00:16:15.006692722 +0200
@@ -3539,36 +3540,6 @@
 
 // DVD structure blocks
 
-typedef struct _DVD_DESCRIPTOR_HEADER {
-    UCHAR Length[2];
-    UCHAR Reserved[2];
-} DVD_DESCRIPTOR_HEADER, *PDVD_DESCRIPTOR_HEADER;
-
-typedef struct _DVD_LAYER_DESCRIPTOR {
-    DVD_DESCRIPTOR_HEADER Header;
-//    UCHAR Length[2];
-    UCHAR BookVersion : 4;     // Part Version
-    UCHAR BookType : 4;        // Disk Category
-
-    UCHAR MinimumRate : 4;
-    UCHAR DiskSize : 4;
-
-    UCHAR LayerType : 4;
-    UCHAR TrackPath : 1;
-    UCHAR NumberOfLayers : 2;
-    UCHAR Reserved1 : 1;
-
-    UCHAR TrackDensity : 4;
-    UCHAR LinearDensity : 4;
-
-    UCHAR StartingDataSector[4];
-    UCHAR EndDataSector[4];
-    UCHAR EndLayerZeroSector[4];
-    UCHAR Reserved5 : 7;
-    UCHAR BCAFlag : 1;
-    UCHAR Reserved6;
-} DVD_LAYER_DESCRIPTOR, *PDVD_LAYER_DESCRIPTOR;
-
 #define DvdBookType_ROM    0
 #define DvdBookType_RAM    1
 #define DvdBookType_R      2
@@ -3648,21 +3619,6 @@
     CDVD_KEY_DATA TitleKey;
 } CDVD_TITLE_KEY_HEADER, *PCDVD_TITLE_KEY_HEADER;
 
-typedef struct _DVD_COPYRIGHT_DESCRIPTOR {
-    UCHAR CopyrightProtectionType;
-    UCHAR RegionManagementInformation;
-    UCHAR Reserved[2];
-} DVD_COPYRIGHT_DESCRIPTOR, *PDVD_COPYRIGHT_DESCRIPTOR;
-
-typedef struct _DVD_RPC_KEY {
-    UCHAR UserResetsAvailable:3;
-    UCHAR ManufacturerResetsAvailable:3;
-    UCHAR TypeCode:2;
-    UCHAR RegionMask;
-    UCHAR RpcScheme;
-    UCHAR Reserved2[1];
-} DVD_RPC_KEY, * PDVD_RPC_KEY;
-
 #pragma pack(pop)
 
 #endif //__CDRW_DEVICE_H__
diff -uNrEZbwB /tmp/udffs/CDRW/cdrw_usr.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/CDRW/cdrw_usr.h
--- /tmp/udffs/CDRW/cdrw_usr.h	2013-07-24 19:32:03.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/CDRW/cdrw_usr.h	2015-06-18 00:16:15.002692704 +0200
@@ -28,6 +29,9 @@
 #include "cdrw_hw.h"
 //#include "ntdddisk.h"
 
+#include <ntddcdrm.h>
+#include <ntddcdvd.h>
+
 #ifndef CTL_CODE
 #pragma pack(push, 8)
 #include "winioctl.h"
@@ -52,62 +56,9 @@
 #define FILE_DEVICE_CDRW        0x00000999
 #endif
 
-#ifndef FILE_DEVICE_CD_ROM
-#define FILE_DEVICE_CD_ROM      0x00000002
-#endif  //FILE_DEVICE_CD_ROM
-
-#ifndef IOCTL_CDROM_BASE
-#define IOCTL_CDROM_BASE        FILE_DEVICE_CD_ROM
-#endif  //IOCTL_CDROM_BASE
-
-#ifndef FILE_DEVICE_DVD
-#define FILE_DEVICE_DVD         0x00000033
-#endif  //FILE_DEVICE_DVD
-
-#ifndef IOCTL_DVD_BASE
-#define IOCTL_DVD_BASE          FILE_DEVICE_DVD
-#endif  //IOCTL_DVD_BASE
-
-#ifndef FILE_DEVICE_DISK
-#define FILE_DEVICE_DISK        0x00000007
-#endif  //FILE_DEVICE_DISK
-
-#ifndef IOCTL_DISK_BASE
-#define IOCTL_DISK_BASE         FILE_DEVICE_DISK
-#endif  //IOCTL_DISK_BASE
-
-#ifndef IOCTL_CDROM_UNLOAD_DRIVER
-#define IOCTL_CDROM_UNLOAD_DRIVER    CTL_CODE(IOCTL_CDROM_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_READ_TOC         CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_GET_CONTROL      CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_PLAY_AUDIO_MSF   CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_SEEK_AUDIO_MSF   CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_STOP_AUDIO       CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_PAUSE_AUDIO      CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_RESUME_AUDIO     CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_GET_VOLUME       CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_SET_VOLUME       CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_READ_Q_CHANNEL   CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_GET_LAST_SESSION CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_RAW_READ         CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT,  FILE_READ_ACCESS)
-#define IOCTL_CDROM_DISK_TYPE        CTL_CODE(IOCTL_CDROM_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
-
-#define IOCTL_CDROM_CHECK_VERIFY     CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
 #define IOCTL_CDROM_MEDIA_REMOVAL    CTL_CODE(IOCTL_CDROM_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
 #define IOCTL_CDROM_EJECT_MEDIA      CTL_CODE(IOCTL_CDROM_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
 #define IOCTL_CDROM_LOAD_MEDIA       CTL_CODE(IOCTL_CDROM_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_RESERVE          CTL_CODE(IOCTL_CDROM_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_RELEASE          CTL_CODE(IOCTL_CDROM_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_FIND_NEW_DEVICES CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_GET_DRIVE_GEOMETRY    CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_CDROM_BASE, 0x0014, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_READ_TOC_EX           CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_CDROM_GET_CONFIGURATION     CTL_CODE(IOCTL_CDROM_BASE, 0x0016, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#endif  //IOCTL_CDROM_UNLOAD_DRIVER
 
 #ifdef CDRW_RESTRICT_ACCESS
 
@@ -1377,12 +1328,6 @@
 
 //**********************************************************************************************
 
-typedef enum _TRACK_MODE_TYPE {
-    YellowMode2,
-    XAForm2,
-    CDDA
-} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE;
-
 typedef struct _RAW_READ_USER_IN {
     LARGE_INTEGER DiskOffset;
     ULONG    SectorCount;
@@ -1405,49 +1350,6 @@
 #define AudioStatus_PlayError       0x14
 #define AudioStatus_NoStatus        0x15
 
-typedef struct _SUB_Q_HEADER {
-    UCHAR Reserved;
-    UCHAR AudioStatus;
-    UCHAR DataLength[2];
-} SUB_Q_HEADER, *PSUB_Q_HEADER;
-
-typedef struct _SUB_Q_CURRENT_POSITION {
-    SUB_Q_HEADER Header;
-    UCHAR FormatCode;
-    UCHAR Control : 4;
-    UCHAR ADR : 4;
-    UCHAR TrackNumber;
-    UCHAR IndexNumber;
-    UCHAR AbsoluteAddress[4];
-    UCHAR TrackRelativeAddress[4];
-} SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION;
-
-typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER {
-    SUB_Q_HEADER Header;
-    UCHAR FormatCode;
-    UCHAR Reserved[3];
-    UCHAR Reserved1 : 7;
-    UCHAR Mcval : 1;
-    UCHAR MediaCatalog[15];
-} SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER;
-
-typedef struct _SUB_Q_TRACK_ISRC {
-    SUB_Q_HEADER Header;
-    UCHAR FormatCode;
-    UCHAR Reserved0;
-    UCHAR Track;
-    UCHAR Reserved1;
-    UCHAR Reserved2 : 7;
-    UCHAR Tcval : 1;
-    UCHAR TrackIsrc[15];
-} SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC;
-
-typedef union _SUB_Q_CHANNEL_DATA_USER_OUT {
-    SUB_Q_CURRENT_POSITION CurrentPosition;
-    SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog;
-    SUB_Q_TRACK_ISRC TrackIsrc;
-} SUB_Q_CHANNEL_DATA_USER_OUT, *PSUB_Q_CHANNEL_DATA_USER_OUT;
-
 #define IOCTL_CDROM_SUB_Q_CHANNEL    0x00
 #define IOCTL_CDROM_CURRENT_POSITION 0x01
 #define IOCTL_CDROM_MEDIA_CATALOG    0x02
@@ -1493,18 +1395,6 @@
 
 //**********************************************************************************************
 
-typedef struct _VOLUME_CONTROL {
-    UCHAR PortVolume[4];
-} VOLUME_CONTROL, *PVOLUME_CONTROL;
-
-typedef VOLUME_CONTROL  VOLUME_CONTROL_USER_IN;
-typedef PVOLUME_CONTROL PVOLUME_CONTROL_USER_IN;
-
-typedef VOLUME_CONTROL  VOLUME_CONTROL_USER_OUT;
-typedef PVOLUME_CONTROL PVOLUME_CONTROL_USER_OUT;
-
-//**********************************************************************************************
-
 typedef struct _INIT_DEINIT_USER_IN {
     BOOLEAN PassThrough;
     BOOLEAN Reserved;                   // For separate device (de)initialization
@@ -1651,18 +1541,6 @@
 
 //**********************************************************************************************
 
-
-//**********************************************************************************************
-
-typedef enum DVD_STRUCTURE_FORMAT {
-    DvdPhysicalDescriptor,
-    DvdCopyrightDescriptor,
-    DvdDiskKeyDescriptor,
-    DvdBCADescriptor,
-    DvdManufacturerDescriptor,
-    DvdMaxDescriptor
-} DVD_STRUCTURE_FORMAT, *PDVD_STRUCTURE_FORMAT;
-
 typedef ULONG DVD_SESSION_ID, *PDVD_SESSION_ID;
 
 typedef struct _DVD_READ_STRUCTURE_USER_IN {
@@ -1686,18 +1564,6 @@
 
 //**********************************************************************************************
 
-typedef enum {
-    DvdChallengeKey = 0x01,
-    DvdBusKey1,
-    DvdBusKey2,
-    DvdTitleKey,
-    DvdAsf,
-    DvdSetRpcKey = 0x6,
-    DvdGetRpcKey = 0x8,
-    DvdDiskKey = 0x80,
-    DvdInvalidateAGID = 0x3f
-} DVD_KEY_TYPE;
-
 typedef struct _DVD_READ_KEY_USER_IN {
     ULONG KeyLength;
     DVD_SESSION_ID SessionId;
@@ -1710,9 +1576,6 @@
 //    UCHAR KeyData[0];
 } DVD_READ_KEY_USER_IN, *PDVD_READ_KEY_USER_IN;
 
-typedef DVD_READ_KEY_USER_IN  DVD_COPY_PROTECT_KEY;
-typedef PDVD_READ_KEY_USER_IN PDVD_COPY_PROTECT_KEY;
-
 typedef DVD_READ_KEY_USER_IN  DVD_READ_KEY_USER_OUT;
 typedef PDVD_READ_KEY_USER_IN PDVD_READ_KEY_USER_OUT;
 
@@ -1723,16 +1586,6 @@
 
 //**********************************************************************************************
 
-typedef DVD_READ_KEY_USER_IN  DVD_SEND_KEY_USER_IN;
-typedef PDVD_READ_KEY_USER_IN PDVD_SEND_KEY_USER_IN;
-
-typedef struct _DVD_SET_RPC_KEY {
-    UCHAR PreferredDriveRegionCode;
-    UCHAR Reserved[3];
-} DVD_SET_RPC_KEY, * PDVD_SET_RPC_KEY;
-
-//**********************************************************************************************
-
 // Predefined (Mt. Fuji) key sizes
 // Add sizeof(DVD_COPY_PROTECT_KEY) to get allocation size for
 // the full key structure
@@ -1760,9 +1613,6 @@
 
 } CDROM_DISK_DATA_USER_OUT, *PCDROM_DISK_DATA_USER_OUT;
 
-#define CDROM_DISK_AUDIO_TRACK      (0x00000001)
-#define CDROM_DISK_DATA_TRACK       (0x00000002)
-
 //**********************************************************************************************
 
 typedef struct _CDRW_RESET_DRIVER_USER_IN {
diff -uNrEZbwB /tmp/udffs/cleanup.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/cleanup.cpp
--- /tmp/udffs/cleanup.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/cleanup.cpp	2015-06-10 13:33:51.170094802 +0200
@@ -38,6 +39,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFCleanup(
     PDEVICE_OBJECT  DeviceObject,  // the logical volume device object
     PIRP            Irp            // I/O Request Packet
@@ -139,8 +141,8 @@
     BOOLEAN                 AcquiredFCB = FALSE;
     BOOLEAN                 AcquiredParentFCB = FALSE;
 
-    BOOLEAN                 CompleteIrp = TRUE;
-    BOOLEAN                 PostRequest = FALSE;
+//    BOOLEAN                 CompleteIrp = TRUE;
+//    BOOLEAN                 PostRequest = FALSE;
     BOOLEAN                 ChangeTime = FALSE;
 #ifdef UDF_DBG
     BOOLEAN                 CanWait = FALSE;
@@ -153,15 +155,12 @@
     PDIR_INDEX_HDR          DirNdx;
 #endif // UDF_DBG
 //    PUDF_DATALOC_INFO       Dloc;
-#ifdef EVALUATION_TIME_LIMIT
-    ULONG t;
-#endif //EVALUATION_TIME_LIMIT
 
     TmPrint(("UDFCommonCleanup\n"));
 
 //    BrutePoint();
 
-    __try {
+    _SEH2_TRY {
         // First, get a pointer to the current I/O stack location
         IrpSp = IoGetCurrentIrpStackLocation(Irp);
         if(!IrpSp) try_return(RC = STATUS_INVALID_PARAMETER);
@@ -550,7 +549,7 @@
         if(!(Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY) &&
            !(Fcb->FCBFlags & (UDF_FCB_DELETE_ON_CLOSE |
                               UDF_FCB_DELETED /*|
-                              UDF_FCB_DIRECTORY /*|
+                              UDF_FCB_DIRECTORY |
                               UDF_FCB_READ_ONLY*/)) &&
            !UDFIsAStreamDir(NextFileInfo)) {
             LONGLONG NtTime;
@@ -578,17 +577,6 @@
                     ChangeTime = TRUE;
                 }
             }
-#ifdef EVALUATION_TIME_LIMIT
-            KeQuerySystemTime(&UDFGlobalData.UDFCurrentTime);
-            t = (ULONG)(UDFGlobalData.UDFCurrentTime.QuadPart / (10*1000*1000));
-            t /= (60*60*24);
-            if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-                if(t-TIME_JAN_1_2003 > UDF_MAX_DATE ||
-                   t-TIME_JAN_1_2003 < UDF_MIN_DATE) {
-                    Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-                }
-            }
-#endif //EVALUATION_TIME_LIMIT
             if(!(Fcb->FCBFlags & UDF_FCB_DIRECTORY)) {
                 // Update sizes in DirIndex
                 if(!Fcb->OpenHandleCount) {
@@ -731,7 +719,7 @@
         ValidateFileInfo(fi);
 
         // acquire parent
-        if(ParentFI = fi->ParentFile) {
+        if((ParentFI = fi->ParentFile)) {
             ParentFcb = fi->Fcb->ParentFcb;
             ASSERT(ParentFcb);
             ASSERT(ParentFcb->NTRequiredFCB);
@@ -746,7 +734,7 @@
         }
         // acquire current file/dir
         // we must assure that no more threads try to reuse this object
-        if(Fcb = fi->Fcb) {
+        if((Fcb = fi->Fcb)) {
             UDF_CHECK_PAGING_IO_RESOURCE(Fcb->NTRequiredFCB);
             UDFAcquireResourceExclusive(&(Fcb->NTRequiredFCB->MainResource),TRUE);
             ASSERT_REF(Fcb->ReferenceCount >= fi->RefCount);
diff -uNrEZbwB /tmp/udffs/close.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/close.cpp
--- /tmp/udffs/close.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/close.cpp	2015-06-10 13:33:51.174094812 +0200
@@ -57,6 +58,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFClose(
     PDEVICE_OBJECT  DeviceObject,  // the logical volume device object
     PIRP            Irp            // I/O Request Packet
@@ -143,14 +145,14 @@
     PtrUDFFCB               Fcb = NULL;
     PtrUDFCCB               Ccb = NULL;
     PVCB                    Vcb = NULL;
-    PERESOURCE              PtrResourceAcquired = NULL;
+//    PERESOURCE              PtrResourceAcquired = NULL;
     BOOLEAN                 AcquiredVcb = FALSE;
     BOOLEAN                 AcquiredGD = FALSE;
     PUDF_FILE_INFO          fi;
     ULONG                   i = 0;
-    ULONG                   clean_stat = 0;
+//    ULONG                   clean_stat = 0;
 
-    BOOLEAN                 CompleteIrp = TRUE;
+//    BOOLEAN                 CompleteIrp = TRUE;
     BOOLEAN                 PostRequest = FALSE;
 
 #ifdef UDF_DBG
@@ -335,11 +337,11 @@
         AdPrint(("UDF: ReferenceCount:  %x\n",Fcb->ReferenceCount));
 #endif // UDF_DBG
         // try to clean up as long chain as it is possible
-        clean_stat = UDFCleanUpFcbChain(Vcb, fi, i, TRUE);
+        UDFCleanUpFcbChain(Vcb, fi, i, TRUE);
 
 try_exit: NOTHING;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if(AcquiredVcb) {
             UDFReleaseResource(&(Vcb->VCBResource));
@@ -424,7 +426,7 @@
     while(fi) {
 
         // acquire parent
-        if(ParentFI = fi->ParentFile) {
+        if((ParentFI = fi->ParentFile)) {
             ASSERT(fi->Fcb);
             ParentFcb = fi->Fcb->ParentFcb;
             ASSERT(ParentFcb);
@@ -543,7 +545,7 @@
                 fi->Dloc->CommonFcb = NULL;
             }
 
-            if(CleanCode = UDFCleanUpFile__(Vcb, fi)) {
+            if((CleanCode = UDFCleanUpFile__(Vcb, fi))) {
                 // Check, if we can uninitialize & deallocate CommonFcb part
                 // kill some cross links
                 Fcb->FileInfo = NULL;
@@ -863,12 +865,12 @@
     }
 
     // walk through SDir (if any)
-    if(SDirInfo = FileInfo->Dloc->SDirInfo)
+    if((SDirInfo = FileInfo->Dloc->SDirInfo))
         UDFBuildTreeItemsList(Vcb, SDirInfo, CheckItemProc,
                  PassedList, PassedListSize, FoundList, FoundListSize);
 
     // walk through subsequent objects (if any)
-    if(hDirNdx = FileInfo->Dloc->DirIndex) {
+    if((hDirNdx = FileInfo->Dloc->DirIndex)) {
 
         // scan DirIndex
         UDF_DIR_SCAN_CONTEXT ScanContext;
@@ -876,7 +878,7 @@
         PUDF_FILE_INFO CurFileInfo;
 
         if(UDFDirIndexInitScan(FileInfo, &ScanContext, 2)) {
-            while(DirNdx = UDFDirIndexScan(&ScanContext, &CurFileInfo)) {
+            while((DirNdx = UDFDirIndexScan(&ScanContext, &CurFileInfo))) {
                 if(!CurFileInfo)
                     continue;
                 UDFBuildTreeItemsList(Vcb, CurFileInfo, CheckItemProc,
diff -uNrEZbwB /tmp/udffs/create.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/create.cpp
--- /tmp/udffs/create.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/create.cpp	2015-06-10 13:33:51.162094783 +0200
@@ -15,6 +16,8 @@
 
 #include            "udffs.h"
 
+#define IsFileObjectReadOnly(FO) (!((FO)->WriteAccess | (FO)->DeleteAccess))
+
 // define the file specific bug-check id
 #define         UDF_BUG_CHECK_ID                UDF_FILE_CREATE
 
@@ -41,6 +44,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFCreate(
     PDEVICE_OBJECT          DeviceObject,       // the logical volume device object
     PIRP                    Irp)                // I/O Request Packet
@@ -246,7 +250,7 @@
     PUDF_FILE_INFO              LastGoodFileInfo = NULL;
     PWCHAR                      TmpBuffer;
     ULONG                       TreeLength = 0;
-    ULONG                       i = 0;
+//    ULONG                       i = 0;
 
     BOOLEAN                     StreamOpen = FALSE;
     BOOLEAN                     StreamExists = FALSE;
@@ -939,7 +943,9 @@
                 try_return(RC);
             }
 
+#if 0
             CollectStatistics(Vcb, MetaDataReads);
+#endif
 
             if (DeleteOnCloseSpecified) {
                 // delete RootDir.... rather strange idea... I dislike it
@@ -1224,7 +1230,9 @@
                     AdPrint(("    File deleted (2)\n"));
                     RC = STATUS_ACCESS_DENIED;*/
                 }
+#if 0
                 CollectStatistics(Vcb, MetaDataReads);
+#endif
 
 Skip_open_attempt:
 
@@ -1577,7 +1585,9 @@
                (PtrRelatedFCB->FileInfo == NewFileInfo->ParentFile)) {
                 PtrRelatedFileObject->Flags |= (FO_FILE_MODIFIED | FO_FILE_SIZE_CHANGED);
             }
+#if 0
             CollectStatistics(Vcb, MetaDataWrites);
+#endif
 
             if(DirectoryOnlyRequested) {
                 // user wants the directory to be created
@@ -1595,7 +1605,9 @@
                     BrutePoint();
                     goto Creation_Err_1;
                 }
+#if 0
                 CollectStatistics(Vcb, MetaDataWrites);
+#endif
             } else if(AllocationSize) {
                 // set initial file size
 /*                if(!NT_SUCCESS(RC = UDFResizeFile__(Vcb, NewFileInfo, AllocationSize))) {
@@ -1658,7 +1670,9 @@
                     BrutePoint();
                     goto Creation_Err_1;
                 }
+#if 0
                 CollectStatistics(Vcb, MetaDataWrites);
+#endif
 
                 // normalize stream name
                 StreamName.Buffer++;
@@ -1709,7 +1723,9 @@
                     BrutePoint();
                     goto Creation_Err_1;
                 }
+#if 0
                 CollectStatistics(Vcb, MetaDataWrites);
+#endif
 
                 // Update unwind information
                 LastGoodTail = StreamName;
@@ -1986,7 +2002,9 @@
             ASSERT(Res1 != NULL);
             ASSERT(Res2 != NULL);
 
+#if 0
             CollectStatistics(Vcb, MetaDataWrites);
+#endif
             // Synchronize with PagingIo
             UDFAcquireResourceExclusive(PagingIoRes = &(NtReqFcb->PagingIoResource),TRUE);
             // Set file sizes
@@ -2071,11 +2089,13 @@
             //  implement the corresponding close (do *not* however close
             //  the target we have opened on behalf of the caller ...).
 
+#if 0
             if(NT_SUCCESS(RC)) {
                 CollectStatistics2(Vcb, SuccessfulCreates);
             } else {
                 CollectStatistics2(Vcb, FailedCreates);
             }
+#endif
 
             if (NT_SUCCESS(RC) && PtrNewFcb) {
                 // Update the file object such that:
@@ -2415,9 +2435,11 @@
     ASSERT((PtrNewFcb->NodeIdentifier.NodeType == UDF_NODE_TYPE_FCB)
          ||(PtrNewFcb->NodeIdentifier.NodeType == UDF_NODE_TYPE_VCB));
 
-    __try {     
+    _SEH2_TRY {
 
+#if 0
         CollectStatistics2(Vcb, CreateHits);
+#endif
         // create a new CCB structure
         if (!(Ccb = UDFAllocateCCB())) {
             AdPrint(("Can't allocate CCB\n"));
diff -uNrEZbwB /tmp/udffs/devcntrl.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/devcntrl.cpp
--- /tmp/udffs/devcntrl.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/devcntrl.cpp	2015-06-10 13:33:50.194092479 +0200
@@ -15,11 +16,9 @@
 
 #include "udffs.h"
 
-#include "..\CDRW\scsi_port.h"
+#include "CDRW/scsi_port.h"
 
-#ifdef EVALUATION_TIME_LIMIT
-#include "..\Include\protect.h"
-#endif //EVALUATION_TIME_LIMIT
+#define UDF_CURRENT_BUILD 123456789
 
 // define the file specific bug-check id
 #ifdef UDF_BUG_CHECK_ID
@@ -78,6 +77,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFDeviceControl(
     PDEVICE_OBJECT          DeviceObject,       // the logical volume device object
     PIRP                    Irp)                // I/O Request Packet
@@ -145,6 +145,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFCommonDeviceControl(
     PtrUDFIrpContext PtrIrpContext,
     PIRP             Irp
@@ -152,14 +153,14 @@
 {
     NTSTATUS                RC = STATUS_SUCCESS;
     PIO_STACK_LOCATION      IrpSp = NULL;
-    PIO_STACK_LOCATION      PtrNextIoStackLocation = NULL;
+//    PIO_STACK_LOCATION      PtrNextIoStackLocation = NULL;
     PFILE_OBJECT            FileObject = NULL;
     PtrUDFFCB               Fcb = NULL;
     PtrUDFCCB               Ccb = NULL;
     PVCB                    Vcb = NULL;
     BOOLEAN                 CompleteIrp = FALSE;
     ULONG                   IoControlCode = 0;
-    PVOID                   BufferPointer = NULL;
+//    PVOID                   BufferPointer = NULL;
     BOOLEAN                 AcquiredVcb = FALSE;
     BOOLEAN                 FSDevObj;
     ULONG                   TrackNumber;
@@ -214,18 +215,8 @@
             if (Fcb->NodeIdentifier.NodeType == UDF_NODE_TYPE_VCB) {
                 // Everything is acceptable for Volume
                 Vcb = (PVCB)(Fcb);
-#ifdef EVALUATION_TIME_LIMIT
-                if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-                    Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-                }
-#endif //EVALUATION_TIME_LIMIT
             } else {
                 Vcb = Fcb->Vcb;
-#ifdef EVALUATION_TIME_LIMIT
-                if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-                    Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-                }
-#endif //EVALUATION_TIME_LIMIT
                 CompleteIrp = TRUE;
                 // For files/disrs only the following are acceptable
                 switch (IoControlCode) {
@@ -322,23 +313,6 @@
 
                 UnsafeIoctl = FALSE;
                 break;
-#ifdef EVALUATION_TIME_LIMIT
-            case IOCTL_CDRW_RESERVE_TRACK:
-            case IOCTL_CDRW_SET_STREAMING:
-            case IOCTL_CDRW_SYNC_CACHE:
-            case IOCTL_CDRW_BLANK:
-            case IOCTL_CDRW_LL_WRITE:
-            case IOCTL_CDRW_FORMAT_UNIT:
-            case IOCTL_CDRW_SET_WRITE_MODE:
-            case IOCTL_CDRW_CLOSE_TRK_SES:
-                if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-                    KdPrint(("Unregistered version. IOCTL blocked\n"));
-                    Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-                    CompleteIrp = TRUE;
-                    try_return(RC = STATUS_INVALID_PARAMETER);
-                }
-                break;
-#endif //EVALUATION_TIME_LIMIT
             }
 
             if(IoControlCode != IOCTL_CDROM_DISK_TYPE) {
@@ -394,7 +368,7 @@
 
             switch(ScsiCommand) {
             case SCSIOP_MODE_SELECT: {
-                PMODE_PARAMETER_HEADER ParamHdr = (PMODE_PARAMETER_HEADER)CdbData;
+//                PMODE_PARAMETER_HEADER ParamHdr = (PMODE_PARAMETER_HEADER)CdbData;
                 ModeSelectData = CdbData+4;
                 switch(ModeSelectData[0]) {
                 case MODE_PAGE_MRW2:
@@ -406,7 +380,7 @@
                 break; }
 
             case SCSIOP_MODE_SELECT10: {
-                PMODE_PARAMETER_HEADER10 ParamHdr = (PMODE_PARAMETER_HEADER10)CdbData;
+//                PMODE_PARAMETER_HEADER10 ParamHdr = (PMODE_PARAMETER_HEADER10)CdbData;
                 ModeSelectData = CdbData+8;
                 switch(ModeSelectData[0]) {
                 case MODE_PAGE_MRW2:
@@ -665,14 +639,10 @@
             break;
 #ifndef UDF_READ_ONLY_BUILD
         case IOCTL_UDF_SEND_LICENSE_KEY:
-#ifdef EVALUATION_TIME_LIMIT
-            RC = UDFProcessLicenseKey( PtrIrpContext, Irp );
-#else //EVALUATION_TIME_LIMIT
             RC = STATUS_SUCCESS;
 
             Irp->IoStatus.Information = 0;
             Irp->IoStatus.Status = STATUS_SUCCESS;
-#endif //EVALUATION_TIME_LIMIT
             CompleteIrp = TRUE;
             break;
 #endif //UDF_READ_ONLY_BUILD
@@ -838,16 +808,6 @@
             Vcb->VCBFlags &= ~UDF_VCB_FLAGS_MEDIA_LOCKED;
             goto ioctl_do_default;
 
-#ifdef EVALUATION_TIME_LIMIT
-        case IOCTL_CDRW_GET_SIGNATURE:
-            if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-                Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-//                CompleteIrp = TRUE;
-//                try_return(RC = STATUS_INVALID_PARAMETER);
-            }
-            goto ioctl_do_default;
-#endif //EVALUATION_TIME_LIMIT
-
         case FSCTL_ALLOW_EXTENDED_DASD_IO:
 
             KdPrint(("UDFUserFsCtrlRequest: FSCTL_ALLOW_EXTENDED_DASD_IO\n"));
@@ -924,7 +884,7 @@
             //  Copy the data from the Vcb.
             ((PCDROM_DISK_DATA_USER_OUT)(Irp->AssociatedIrp.SystemBuffer))->DiskData = CDROM_DISK_DATA_TRACK;
             for(TrackNumber=Vcb->FirstTrackNum; TrackNumber<Vcb->LastTrackNum; TrackNumber++) {
-                if(Vcb->TrackMap[TrackNumber].TrackParam & Trk_QSubChan_Type_Mask ==
+                if((Vcb->TrackMap[TrackNumber].TrackParam & Trk_QSubChan_Type_Mask) ==
                     Trk_QSubChan_Type_Audio) {
                     ((PCDROM_DISK_DATA_USER_OUT)(Irp->AssociatedIrp.SystemBuffer))->DiskData |= CDROM_DISK_AUDIO_TRACK;
                     break;
@@ -1095,6 +1055,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFDevIoctlCompletion(
    PDEVICE_OBJECT          PtrDeviceObject,
    PIRP                    Irp,
@@ -1176,7 +1137,7 @@
     PEXTENDED_IO_STACK_LOCATION IrpSp =
         (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation( Irp );
 
-    PVCB Vcb;
+//    PVCB Vcb;
     PtrUDFFCB Fcb;
     PtrUDFCCB Ccb;
     PUDF_GET_FILE_ALLOCATION_MODE_OUT OutputBuffer;
@@ -1187,7 +1148,7 @@
     // user volume opens.
     Ccb = (PtrUDFCCB)(IrpSp->FileObject->FsContext2);
     Fcb = Ccb->Fcb;
-    Vcb = Fcb->Vcb;
+//    Vcb = Fcb->Vcb;
 
     Irp->IoStatus.Information = 0;
     if(IrpSp->Parameters.FileSystemControl.OutputBufferLength < sizeof(UDF_GET_FILE_ALLOCATION_MODE_OUT))
@@ -1256,326 +1217,3 @@
     return STATUS_SUCCESS;
 } // end UDFSetFileAllocModeFromICB()
 #endif //UDF_READ_ONLY_BUILD
-
-#ifdef EVALUATION_TIME_LIMIT
-
-#define UDF_MD5Init      UDF_MD5Init3
-#define UDF_MD5Update    UDF_MD5Update3
-#define UDF_MD5Pad       UDF_MD5Pad3
-#define UDF_MD5Final     UDF_MD5Final3
-#define UDF_MD5End       UDF_MD5End3
-#define UDF_MD5Transform UDF_MD5Transform3
-#define UDF_Encode       UDF_Encode3
-#define UDF_Decode       UDF_Decode3
-#define PADDING          PADDING3
-
-#define ROTATE_LEFT      ROTATE_LEFT3
-#define FF               FF3
-#define GG               GG3
-#define HH               HH3
-#define II               II3
-
-#define UDF_MD5Transform_dwords   UDF_MD5Transform_dwords3
-#define UDF_MD5Transform_idx      UDF_MD5Transform_idx3
-#define UDF_MD5Transform_Sxx      UDF_MD5Transform_Sxx3
-#define UDF_MD5Rotate             UDF_MD5Rotate3
-
-#include "..\Include\md5.h"
-#include "..\Include\md5c.c"
-
-#define UDF_FibonachiNum UDF_FibonachiNum3
-#define XPEHb            XPEHb3
-#define UDF_build_long_key    UDF_build_long_key3
-#define UDF_build_hash_by_key UDF_build_hash_by_key3
-
-#include "..\Include\key_lib.h"
-#include "..\Include\key_lib.cpp"
-
-extern ULONG UDFNumberOfKeys;
-extern PCHAR pUDFLongKey;
-extern PUDF_KEY_LIST pUDFKeyList;
-extern PUCHAR pRegKeyName0;
-
-NTSTATUS
-UDFProcessLicenseKey(
-    PtrUDFIrpContext IrpContext,
-    PIRP             Irp
-    )
-{
-    WCHAR           RegPath[128];
-    WCHAR           RegKeyName[64];
-    CHAR            LicenseKey[16+1];
-    WCHAR           LicenseKeyW[16+1];
-    HKEY            hUdfRootKey;
-    NTSTATUS        RC = STATUS_INVALID_USER_BUFFER;
-
-    ULONG i, j;
-    int checksum[4] = {0,0,0,0};
-
-    PEXTENDED_IO_STACK_LOCATION IrpSp =
-        (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation( Irp );
-/*
-    PVCB Vcb;
-    PtrUDFFCB Fcb;
-    PtrUDFCCB Ccb;
-*/
-    PUDF_KEY_LIST OutputBuffer;
-
-    // Decode the file object, the only type of opens we accept are
-    // user volume opens.
-/*
-    Ccb = (PtrUDFCCB)(IrpSp->FileObject->FsContext2);
-    Fcb = Ccb->Fcb;
-    Vcb = Fcb->Vcb;
-*/
-    Irp->IoStatus.Information = 0;
-    if(IrpSp->Parameters.FileSystemControl.InputBufferLength < 16)
-        return STATUS_BUFFER_TOO_SMALL;
-    if(IrpSp->Parameters.FileSystemControl.OutputBufferLength < 16)
-        return STATUS_BUFFER_TOO_SMALL;
-
-    OutputBuffer = (PUDF_KEY_LIST)UDFGetCallersBuffer(Irp->AssociatedIrp.SystemBuffer);
-    if(!OutputBuffer)
-        return STATUS_INVALID_USER_BUFFER;
-
-    // Build Registry Value name for License Key 
-    for(i=0; i<UDFNumberOfKeys; i++) {
-        for(j=0; j<4; j++) {
-            checksum[j] += pUDFKeyList[i].d[j];
-        }
-    }
-
-    // Read Key
-    for(i=0; i<sizeof(UDF_LICENSE_KEY_USER)-1; i++) {
-        RegKeyName[i] = pRegKeyName0[(i*sizeof(UDF_LICENSE_KEY_USER))] ^ (UCHAR)(checksum[i%4] ^ (checksum[i%4] >> 16));
-    }
-    RegKeyName[i] = 0;
-
-    RegTGetKeyHandle(NULL, UDFGlobalData.SavedRegPath.Buffer, &hUdfRootKey);
-    if(hUdfRootKey) {
-        if(!RegTGetStringValue(hUdfRootKey, NULL,
-                                          RegKeyName, LicenseKeyW, (16+1)*sizeof(WCHAR)) ) {
-            UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-        }
-        RegTCloseKeyHandle(hUdfRootKey);
-    }
-    LicenseKeyW[16] = 0;
-    // convert WCHAR Key to CHAR key
-    for(i=0; i<16; i++) {
-        LicenseKey[i] = (UCHAR)(LicenseKeyW[i]);
-    }
-
-    // build hash
-    UDF_build_hash_by_key(pUDFLongKey, UDF_LONG_KEY_SIZE, (PCHAR)&(UDFGlobalData.CurrentKeyHash), LicenseKey);
-    // check if it is correct
-    for(i=0; i<UDFNumberOfKeys; i++) {
-        for(j=0; j<4; j++) {
-            if(pUDFKeyList[i].d[j] ^ UDFGlobalData.CurrentKeyHash.d[j]) {
-                break;
-            }
-        }
-        if(j==4)
-            break;
-    }
-    if(j == 4) {
-        RC = STATUS_SUCCESS;
-    } else {
-        RC = STATUS_ACCESS_DENIED;
-    }
-
-    KeQuerySystemTime((PLARGE_INTEGER)&UDFGlobalData.UDFCurrentTime);
-    {
-        uint32 t2;
-
-        t2 = (uint32)(((UDFGlobalData.UDFCurrentTime.QuadPart / 100I64) / 60I64) / (200I64*120I64*24I64));
-        t2 /= 250;
-        KdPrint(("t2 = %x (%x, %x)\n", t2, UDF_MIN_DATE+TIME_JAN_1_2003, UDF_MAX_DATE+TIME_JAN_1_2003));
-        if(t2 > (UDF_MAX_DATE+TIME_JAN_1_2003) ||
-           t2 < (UDF_MIN_DATE+TIME_JAN_1_2003)) {
-            KdPrint(("Eval time expired: %x <= %x <= %x\n",
-                     UDF_MIN_DATE+TIME_JAN_1_2003, t2, UDF_MAX_DATE+TIME_JAN_1_2003));
-        } else {
-            ULONG iTime;
-            ULONG iVer;
-            if(!UDFGetInstallVersion((PULONG)&iVer) ||
-               !UDFGetInstallTime(&iTime)) {
-                KdPrint(("UDFGetInstallTime() or UDFGetInstallVersion() failed\n"));
-            } else
-            if(iVer > UDF_CURRENT_BUILD) {
-                KdPrint(("Init: Detected newer build\n"));
-            } else
-            if(UDFGetTrialEnd((PULONG)&iVer)) {
-                KdPrint(("UDFGetTrialEnd() read TRUE from Registry !!!\n"));
-            } else {
-                iTime += TIME_JAN_1_2003;
-                KdPrint(("cTime = %x, iTime = %x\n", t2, iTime));
-                if((ULONG)t2 < (ULONG)iTime) {
-                    KdPrint(("Eval time expired: System (%x) < Install (%x)\n",
-                              t2, iTime));
-                } else
-                if((ULONG)t2 > (ULONG)iTime + EVALUATION_TERM) {
-                    KdPrint(("Eval time expired above EVALUATION_TERM: System (%x) > Install+Eval (%x)\n",
-                              t2, iTime+EVALUATION_TERM));
-                } else
-                if((iTime >> 2) & (0x80000000 >> 2)) {
-                    KdPrint(("Eval time expired (negative install time)\n"));
-                } else {
-                    j = 4;
-                }
-            }
-            KdPrint(("Eval time %s\n", j == 4 ? "ok" : "failed"));
-            //RC = STATUS_SUCCESS;
-        }
-    }
-
-    UDFGlobalData.Saved_j = j;
-
-    {
-        PIO_STACK_LOCATION  IrpSp = NULL;
-        PVCB Vcb;
-        PLIST_ENTRY Link;
-        PPREVENT_MEDIA_REMOVAL_USER_IN Buf = NULL;
-
-        // Acquire GlobalDataResource
-        UDFAcquireResourceExclusive(&(UDFGlobalData.GlobalDataResource), TRUE);
-        // Walk through all of the Vcb's attached to the global data.
-        Link = UDFGlobalData.VCBQueue.Flink;
-
-        while (Link != &(UDFGlobalData.VCBQueue)) {
-            // Get 'next' Vcb
-            Vcb = CONTAINING_RECORD( Link, VCB, NextVCB );
-            // Move to the next link now
-            Link = Link->Flink;
-            ASSERT(Link != Link->Flink);
-
-            if(!(Vcb->VCBFlags & UDF_VCB_FLAGS_SHUTDOWN)) {
-
-                UDFAcquireResourceExclusive(&(Vcb->VCBResource), TRUE);
-                if(j!=4) {
-                    KdPrint(("DevCtl: unregistered\n"));
-                    if(!(Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY)) {
-                        Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-                    }
-                    UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-                } else {
-                    KdPrint(("DevCtl: registered :)\n"));
-                    if(!(Vcb->VCBFlags & UDF_VCB_FLAGS_MEDIA_READ_ONLY)) {
-                        Vcb->VCBFlags &= ~UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-                    }
-                    UDFGlobalData.UDFFlags &= ~UDF_DATA_FLAGS_UNREGISTERED;
-                }
-                UDFReleaseResource(&(Vcb->VCBResource));
-            }
-        }
-        if(j == 4) {
-            KdPrint(("DevCtl: registered (2)\n"));
-            UDFGlobalData.UDFFlags &= ~UDF_DATA_FLAGS_UNREGISTERED;
-        } else {
-            KdPrint(("DevCtl: unregistered (2)\n"));
-            UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-        }
-        // Once we have processed all the mounted logical volumes, we can release
-        // all acquired global resources and leave (in peace :-)
-        UDFReleaseResource( &(UDFGlobalData.GlobalDataResource) );
-    }
-
-    if(j == 4) {
-        KdPrint(("DevCtl: registered (3)\n"));
-        RtlCopyMemory(UDFGlobalData.LicenseKeyW, LicenseKeyW, 16*sizeof(WCHAR));
-        UDFGlobalData.UDFFlags &= ~UDF_DATA_FLAGS_UNREGISTERED;
-    } else {
-        WCHAR s[16];
-        ULONG type, sz;
-        ULONG d;
-        PVOID pdata;
-        NTSTATUS RC;
-
-        KdPrint(("DevCtl: unregistered (3): Write BIAKAs to Registry\n"));
-        UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-
-        // End of trial
-        d = 1 ^ XOR_VAR(TrialEnd, 0);
-        swprintf(s, L"0x%8.8x\0", d);
-        GET_TRIAL_REG_KEY_NAME(RegPath, 0);
-        GET_TRIAL_REG_VAL_NAME(RegKeyName, 0);
-        type = GET_XXX_REG_VAL_TYPE(TRIAL, 0) ? REG_SZ : REG_DWORD;
-        pdata = GET_XXX_REG_VAL_TYPE(TRIAL, 0) ? (PVOID)s : (PVOID)&d;
-        sz = GET_XXX_REG_VAL_TYPE(TRIAL, 0) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-        KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-        RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                              RegPath, RegKeyName,
-                              type, pdata, sz );
-        KdPrint(("status %#x\n", RC));
-        d = 1 ^ XOR_VAR(TrialEnd, 1);
-        swprintf(s, L"0x%8.8x\0", d);
-        GET_TRIAL_REG_KEY_NAME(RegPath, 1);
-        GET_TRIAL_REG_VAL_NAME(RegKeyName, 1);
-        type = GET_XXX_REG_VAL_TYPE(TRIAL, 1) ? REG_SZ : REG_DWORD;
-        pdata = GET_XXX_REG_VAL_TYPE(TRIAL, 1) ? (PVOID)s : (PVOID)&d;
-        sz = GET_XXX_REG_VAL_TYPE(TRIAL, 1) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-        KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-        RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                              RegPath, RegKeyName,
-                              type, pdata, sz );
-        KdPrint(("status %#x\n", RC));
-        // Install Date
-        if(!TrialEndOnStart) {
-            d = UDFGlobalData.iTime ^ XOR_VAR(Date, 0);
-            swprintf(s, L"0x%8.8x\0", d);
-            GET_DATE_REG_KEY_NAME(RegPath, 0);
-            GET_DATE_REG_VAL_NAME(RegKeyName, 0);
-            type = GET_XXX_REG_VAL_TYPE(DATE, 0) ? REG_SZ : REG_DWORD;
-            pdata = GET_XXX_REG_VAL_TYPE(DATE, 0) ? (PVOID)s : (PVOID)&d;
-            sz = GET_XXX_REG_VAL_TYPE(DATE, 0) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-            if(PresentDateMask & (1 << 0)) {
-                KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-                RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                                      RegPath, RegKeyName,
-                                      type, pdata, sz );
-                KdPrint(("status %#x\n", RC));
-            }
-            d = UDFGlobalData.iTime ^ XOR_VAR(Date, 1);
-            swprintf(s, L"0x%8.8x\0", d);
-            GET_DATE_REG_KEY_NAME(RegPath, 1);
-            GET_DATE_REG_VAL_NAME(RegKeyName, 1);
-            type = GET_XXX_REG_VAL_TYPE(DATE, 1) ? REG_SZ : REG_DWORD;
-            pdata = GET_XXX_REG_VAL_TYPE(DATE, 1) ? (PVOID)s : (PVOID)&d;
-            sz = GET_XXX_REG_VAL_TYPE(DATE, 1) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-            if(PresentDateMask & (1 << 1)) {
-                KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-                RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                                      RegPath, RegKeyName,
-                                      type, pdata, sz );
-                KdPrint(("status %#x\n", RC));
-            }
-        }
-        // Highest version
-        d = UDFGlobalData.iVer ^ XOR_VAR(Version, 0);
-        swprintf(s, L"0x%8.8x\0", d);
-        GET_VERSION_REG_KEY_NAME(RegPath, 0);
-        GET_VERSION_REG_VAL_NAME(RegKeyName, 0);
-        type = GET_XXX_REG_VAL_TYPE(VERSION, 0) ? REG_SZ : REG_DWORD;
-        pdata = GET_XXX_REG_VAL_TYPE(VERSION, 0) ? (PVOID)s : (PVOID)&d;
-        sz = GET_XXX_REG_VAL_TYPE(VERSION, 0) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-        KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-        RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                              RegPath, RegKeyName,
-                              type, pdata, sz );
-        KdPrint(("status %#x\n", RC));
-        d = UDFGlobalData.iVer ^ XOR_VAR(Version, 1);
-        swprintf(s, L"0x%8.8x\0", d);
-        GET_VERSION_REG_KEY_NAME(RegPath, 1);
-        GET_VERSION_REG_VAL_NAME(RegKeyName, 1);
-        type = GET_XXX_REG_VAL_TYPE(VERSION, 1) ? REG_SZ : REG_DWORD;
-        pdata = GET_XXX_REG_VAL_TYPE(VERSION, 1) ? (PVOID)s : (PVOID)&d;
-        sz = GET_XXX_REG_VAL_TYPE(VERSION, 1) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-        KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-        RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                              RegPath, RegKeyName,
-                              type, pdata, sz );
-        KdPrint(("status %#x\n", RC));
-    }
-    return RC;
-} // end UDFProcessLicenseKey()
-
-#endif //EVALUATION_TIME_LIMIT
diff -uNrEZbwB /tmp/udffs/dircntrl.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/dircntrl.cpp
--- /tmp/udffs/dircntrl.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/dircntrl.cpp	2015-06-10 13:33:50.194092479 +0200
@@ -52,6 +53,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFDirControl(
     PDEVICE_OBJECT      DeviceObject,       // the logical volume device object
     PIRP                Irp                 // I/O Request Packet
@@ -121,6 +123,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFCommonDirControl(
    PtrUDFIrpContext  PtrIrpContext,
    PIRP              Irp
@@ -209,6 +212,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFQueryDirectory(
     PtrUDFIrpContext            PtrIrpContext,
     PIRP                        Irp,
@@ -541,6 +545,9 @@
                 NamesInfo->FileIndex = NextMatch;
                 NamesInfo->FileNameLength = FileNameBytes;
                 break;
+
+            default:
+                break;
             }
             if (FileNameBytes) {
                 //  This is a Unicode name, we can copy the bytes directly.
@@ -630,7 +637,7 @@
 #define IgnoreCase    (FNM_Flags & UDF_FNM_FLAG_IGNORE_CASE)
 #define ContainsWC    (FNM_Flags & UDF_FNM_FLAG_CONTAINS_WC)
 
-    for(;DirNdx = UDFDirIndex(hDirIndex, EntryNumber);EntryNumber++) {
+    for(;(DirNdx = UDFDirIndex(hDirIndex, EntryNumber));EntryNumber++) {
         if(!DirNdx->FName.Buffer ||
            UDFIsDeleted(DirNdx))
             continue;
@@ -672,6 +679,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFNotifyChangeDirectory(
     PtrUDFIrpContext            PtrIrpContext,
     PIRP                        Irp,
diff -uNrEZbwB /tmp/udffs/dldetect.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/dldetect.cpp
--- /tmp/udffs/dldetect.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/dldetect.cpp	2015-09-29 21:36:43.733012458 +0200
@@ -49,7 +50,7 @@
 /// Initialize deadlock detector
 VOID DLDInit(ULONG MaxThrdCount /// Maximum supported number of threads
 ) {
-    if (*KeNumberProcessors>1) {
+    if (KeNumberProcessors>1) {
         KdPrint(("Deadlock Detector is designed for uniprocessor machines only!\n"));
         BrutePoint();
     }
diff -uNrEZbwB /tmp/udffs/dldetect.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/dldetect.h
--- /tmp/udffs/dldetect.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/dldetect.h	2015-06-10 13:33:51.174094812 +0200
@@ -27,8 +28,9 @@
 #define DLDGetCurrentResourceThread() \
     ((ERESOURCE_THREAD)PsGetCurrentThread())
 
-
+#ifndef ResourceOwnedExclusive
 #define ResourceOwnedExclusive 0x80
+#endif
 #define ResourceDisableBoost   0x08
 
 
diff -uNrEZbwB /tmp/udffs/env_spec.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/env_spec.cpp
--- /tmp/udffs/env_spec.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/env_spec.cpp	2016-06-01 22:01:05.859635322 +0200
@@ -35,6 +36,7 @@
 
  */
 NTSTATUS
+NTAPI
 UDFAsyncCompletionRoutine(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -76,6 +78,7 @@
 } // end UDFAsyncCompletionRoutine()
 
 NTSTATUS
+NTAPI
 UDFSyncCompletionRoutine(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -123,6 +126,7 @@
 
 */
 NTSTATUS
+NTAPI
 UDFPhReadSynchronous(
     PDEVICE_OBJECT      DeviceObject,   // the physical device object
     PVOID               Buffer,
@@ -268,6 +272,7 @@
 
 */
 NTSTATUS
+NTAPI
 UDFPhWriteSynchronous(
     PDEVICE_OBJECT  DeviceObject,   // the physical device object
     PVOID           Buffer,
@@ -311,10 +316,14 @@
 
 #ifdef DBG
     if(UDF_SIMULATE_WRITES) {
+/* FIXME ReactOS
+   If this function is to force a read from the bufffer to simulate any segfaults, then it makes sense.
+   Else, this forloop is useless.
         UCHAR a;
         for(ULONG i=0; i<Length; i++) {
             a = ((PUCHAR)Buffer)[i];
         }
+*/
         *WrittenBytes = Length;
         return STATUS_SUCCESS;
     }
@@ -449,6 +458,7 @@
 #endif //0
 
 NTSTATUS
+NTAPI
 UDFTSendIOCTL(
     IN ULONG IoControlCode,
     IN PVCB Vcb,
@@ -497,6 +507,7 @@
 
 */
 NTSTATUS
+NTAPI
 UDFPhSendIOCTL(
     IN ULONG IoControlCode,
     IN PDEVICE_OBJECT DeviceObject,
@@ -614,7 +625,8 @@
     IN ULONG EventCode
     )
 {
-    if(!FsRtlNotifyVolumeEvent)
+/* ReactOS FIXME This is always true, and we return anyway. */
+//    if(!FsRtlNotifyVolumeEvent)
         return;
     //FsRtlNotifyVolumeEvent(FileObject, EventCode);
 } // end UDFNotifyVolumeEvent()
diff -uNrEZbwB /tmp/udffs/env_spec.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/env_spec.h
--- /tmp/udffs/env_spec.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/env_spec.h	2015-06-10 13:33:51.174094812 +0200
@@ -18,7 +19,7 @@
 #ifndef _UDF_ENV_SPEC_H_
 #define _UDF_ENV_SPEC_H_
 
-extern NTSTATUS UDFPhReadSynchronous(
+extern NTSTATUS NTAPI UDFPhReadSynchronous(
                    PDEVICE_OBJECT      DeviceObject,
                    PVOID           Buffer,
                    ULONG           Length,
@@ -26,7 +27,7 @@
                    PULONG          ReadBytes,
                    ULONG           Flags);
 
-extern NTSTATUS UDFPhWriteSynchronous(
+extern NTSTATUS NTAPI UDFPhWriteSynchronous(
                    PDEVICE_OBJECT  DeviceObject,   // the physical device object
                    PVOID           Buffer,
                    ULONG           Length,
@@ -44,7 +45,7 @@
 */
 #define UDFPhWriteVerifySynchronous UDFPhWriteSynchronous
 
-extern NTSTATUS
+extern NTSTATUS NTAPI
 UDFTSendIOCTL(
     IN ULONG IoControlCode,
     IN PVCB Vcb,
@@ -56,7 +57,7 @@
     OUT PIO_STATUS_BLOCK Iosb OPTIONAL
     );
 
-extern NTSTATUS UDFPhSendIOCTL(
+extern NTSTATUS NTAPI UDFPhSendIOCTL(
     IN ULONG IoControlCode,
     IN PDEVICE_OBJECT DeviceObject,
     IN PVOID InputBuffer ,
@@ -132,15 +133,15 @@
     ((VCB)->Statistics[KeGetCurrentProcessorNumber()].Fat.##Field) += a;     \
 }
 
-NTSTATUS UDFAsyncCompletionRoutine(IN PDEVICE_OBJECT DeviceObject,
+NTSTATUS NTAPI UDFAsyncCompletionRoutine(IN PDEVICE_OBJECT DeviceObject,
                                    IN PIRP Irp,
                                    IN PVOID Contxt);
 
-NTSTATUS UDFSyncCompletionRoutine(IN PDEVICE_OBJECT DeviceObject,
+NTSTATUS NTAPI UDFSyncCompletionRoutine(IN PDEVICE_OBJECT DeviceObject,
                                   IN PIRP Irp,
                                   IN PVOID Contxt);
 
-NTSTATUS UDFSyncCompletionRoutine2(IN PDEVICE_OBJECT DeviceObject,
+NTSTATUS NTAPI UDFSyncCompletionRoutine2(IN PDEVICE_OBJECT DeviceObject,
                                    IN PIRP Irp,
                                    IN PVOID Contxt);
 
diff -uNrEZbwB /tmp/udffs/fastio.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/fastio.cpp
--- /tmp/udffs/fastio.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/fastio.cpp	2015-06-10 13:33:51.166094792 +0200
@@ -37,6 +38,7 @@
 *
 *************************************************************************/
 BOOLEAN
+NTAPI
 UDFFastIoCheckIfPossible(
     IN PFILE_OBJECT             FileObject,
     IN PLARGE_INTEGER           FileOffset,
@@ -112,6 +114,7 @@
 /*
  */
 FAST_IO_POSSIBLE
+NTAPI
 UDFIsFastIoPossible(
     IN PtrUDFFCB Fcb
     )
@@ -152,6 +155,7 @@
 *
 *************************************************************************/
 BOOLEAN
+NTAPI
 UDFFastIoQueryBasicInfo(
     IN PFILE_OBJECT             FileObject,
     IN BOOLEAN                  Wait,
@@ -242,6 +246,7 @@
 *
 *************************************************************************/
 BOOLEAN
+NTAPI
 UDFFastIoQueryStdInfo(
     IN PFILE_OBJECT                 FileObject,
     IN BOOLEAN                      Wait,
@@ -255,24 +260,24 @@
     LONG             Length = sizeof(FILE_STANDARD_INFORMATION);
     PtrUDFFCB        Fcb;
     PtrUDFCCB        Ccb;
-    PtrUDFNTRequiredFCB NtReqFcb = NULL;
-    BOOLEAN          MainResourceAcquired = FALSE;
+//    PtrUDFNTRequiredFCB NtReqFcb = NULL;
+//    BOOLEAN          MainResourceAcquired = FALSE;
 
     FsRtlEnterFileSystem();
 
     KdPrint(("UDFFastIo  \n"));
     // if the file is already opended we can satisfy this request
     // immediately 'cause all the data we need must be cached
-    __try {
+    _SEH2_TRY {
 
-        __try {
+        _SEH2_TRY {
 
             // Get the FCB and CCB pointers.
             Ccb = (PtrUDFCCB)(FileObject->FsContext2);
             ASSERT(Ccb);
             Fcb = Ccb->Fcb;
             ASSERT(Fcb);
-            NtReqFcb = Fcb->NTRequiredFCB;
+//            NtReqFcb = Fcb->NTRequiredFCB;
             //Fcb->Vcb->VCBFlags |= UDF_VCB_SKIP_EJECT_CHECK;
 
 /*                
@@ -333,6 +338,7 @@
 *
 *************************************************************************/
 VOID
+NTAPI
 UDFFastIoAcqCreateSec(
     IN PFILE_OBJECT FileObject
     )
@@ -377,6 +383,7 @@
 *
 *************************************************************************/
 VOID
+NTAPI
 UDFFastIoRelCreateSec(
     IN PFILE_OBJECT FileObject)
 {
@@ -413,7 +420,7 @@
 * Return Value: TRUE/FALSE (Cache Manager does not tolerate FALSE well)
 *
 *************************************************************************/
-BOOLEAN UDFAcqLazyWrite(
+BOOLEAN NTAPI UDFAcqLazyWrite(
     IN PVOID   Context,
     IN BOOLEAN Wait)
 {
@@ -461,6 +468,7 @@
 *
 *************************************************************************/
 VOID
+NTAPI
 UDFRelLazyWrite(
     IN PVOID   Context)
 {
@@ -502,6 +510,7 @@
 *
 *************************************************************************/
 BOOLEAN
+NTAPI
 UDFAcqReadAhead(
     IN PVOID   Context,
     IN BOOLEAN Wait
@@ -545,6 +554,7 @@
 *
 *************************************************************************/
 VOID
+NTAPI
 UDFRelReadAhead(
     IN PVOID  Context)
 {
@@ -587,6 +597,7 @@
 *
 *************************************************************************/
 BOOLEAN
+NTAPI
 UDFFastIoQueryNetInfo(
     IN PFILE_OBJECT                                 FileObject,
     IN BOOLEAN                                      Wait,
@@ -905,6 +916,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFFastIoAcqModWrite(
     IN PFILE_OBJECT   FileObject,
     IN PLARGE_INTEGER EndingOffset,
@@ -976,6 +988,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFFastIoRelModWrite(
     IN PFILE_OBJECT   FileObject,
     IN PERESOURCE     ResourceToRelease,
@@ -1022,6 +1035,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFFastIoAcqCcFlush(
     IN PFILE_OBJECT         FileObject,
     IN PDEVICE_OBJECT       DeviceObject)
@@ -1067,6 +1081,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFFastIoRelCcFlush(
     IN PFILE_OBJECT         FileObject,
     IN PDEVICE_OBJECT       DeviceObject
@@ -1141,6 +1156,7 @@
 #endif  //_WIN32_WINNT >= 0x0400
 
 BOOLEAN
+NTAPI
 UDFFastIoCopyWrite (
     IN PFILE_OBJECT FileObject,
     IN PLARGE_INTEGER FileOffset,
diff -uNrEZbwB /tmp/udffs/fileinfo.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/fileinfo.cpp
--- /tmp/udffs/fileinfo.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/fileinfo.cpp	2015-06-10 13:33:50.202092498 +0200
@@ -41,6 +42,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFFileInfo(
     PDEVICE_OBJECT DeviceObject,       // the logical volume device object
     PIRP           Irp                 // I/O Request Packet
@@ -198,12 +200,6 @@
         ASSERT(Fcb->NodeIdentifier.NodeType == UDF_NODE_TYPE_FCB);
         //Vcb->VCBFlags |= UDF_VCB_SKIP_EJECT_CHECK;
 
-#ifdef EVALUATION_TIME_LIMIT
-        if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-            Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-        }
-#endif //EVALUATION_TIME_LIMIT
-
         // The NT I/O Manager always allocates and supplies a system
         // buffer for query and set file information calls.
         // Copying information to/from the user buffer and the system
@@ -546,9 +542,9 @@
 
     AdPrint(("UDFGetBasicInformation: \n"));
 
-    __try {
+    _SEH2_TRY {
 
-        if(*PtrReturnedLength < sizeof(FILE_BASIC_INFORMATION)) {
+        if(*PtrReturnedLength < (LONG)sizeof(FILE_BASIC_INFORMATION)) {
             try_return(RC = STATUS_BUFFER_OVERFLOW);
         }
 
@@ -623,13 +619,13 @@
 {
     NTSTATUS            RC = STATUS_SUCCESS;
     PUDF_FILE_INFO      FileInfo;
-    PVCB Vcb;
+//    PVCB Vcb;
 
     AdPrint(("UDFGetStandardInformation: \n"));
 
-    __try {
+    _SEH2_TRY {
 
-        if(*PtrReturnedLength < sizeof(FILE_STANDARD_INFORMATION)) {
+        if(*PtrReturnedLength < (LONG)sizeof(FILE_STANDARD_INFORMATION)) {
             try_return(RC = STATUS_BUFFER_OVERFLOW);
         }
 
@@ -643,14 +639,10 @@
             AdPrint(("!!!! GetStandardInfo to unopened file !!!!\n"));
             try_return(RC = STATUS_INVALID_PARAMETER);
         }
-        Vcb = Fcb->Vcb;
+//        Vcb = Fcb->Vcb;
         PtrBuffer->NumberOfLinks = UDFGetFileLinkCount(FileInfo);
         PtrBuffer->DeletePending = (Fcb->FCBFlags & UDF_FCB_DELETE_ON_CLOSE) ? TRUE : FALSE;
-#ifdef EVALUATION_TIME_LIMIT
-        if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-            Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-        }
-#endif //EVALUATION_TIME_LIMIT
+
         //  Case on whether this is a file or a directory, and extract
         //  the information and fill in the fcb/dcb specific parts
         //  of the output buffer
@@ -692,9 +684,9 @@
 
     AdPrint(("UDFGetNetworkInformation: \n"));
 
-    __try {
+    _SEH2_TRY {
 
-        if(*PtrReturnedLength < sizeof(FILE_NETWORK_OPEN_INFORMATION)) {
+        if(*PtrReturnedLength < (LONG)sizeof(FILE_NETWORK_OPEN_INFORMATION)) {
             try_return(RC = STATUS_BUFFER_OVERFLOW);
         }
 
@@ -758,9 +750,9 @@
 
     AdPrint(("UDFGetInternalInformation\n"));
 
-    __try {
+    _SEH2_TRY {
 
-        if(*PtrReturnedLength < sizeof(FILE_INTERNAL_INFORMATION)) {
+        if(*PtrReturnedLength < (LONG)sizeof(FILE_INTERNAL_INFORMATION)) {
             try_return(RC = STATUS_BUFFER_OVERFLOW);
         }
 
@@ -809,9 +801,9 @@
 
     AdPrint(("UDFGetEaInformation\n"));
 
-    __try {
+    _SEH2_TRY {
 
-        if(*PtrReturnedLength < sizeof(FILE_EA_INFORMATION)) {
+        if(*PtrReturnedLength < (LONG)sizeof(FILE_EA_INFORMATION)) {
             try_return(RC = STATUS_BUFFER_OVERFLOW);
         }
 
@@ -911,7 +903,7 @@
  IN OUT PLONG                     PtrReturnedLength
     )
 {
-    if(*PtrReturnedLength < sizeof(FILE_POSITION_INFORMATION)) {
+    if(*PtrReturnedLength < (LONG)sizeof(FILE_POSITION_INFORMATION)) {
         return(STATUS_BUFFER_OVERFLOW);
     }
     PtrBuffer->CurrentByteOffset = FileObject->CurrentByteOffset;
@@ -968,7 +960,7 @@
         NTFileInfo = (PFILE_BOTH_DIR_INFORMATION)MyAllocatePool__(NonPagedPool, sizeof(FILE_BOTH_DIR_INFORMATION)+UDF_NAME_LEN*sizeof(WCHAR));
         if(!NTFileInfo) try_return(RC = STATUS_INSUFFICIENT_RESOURCES);
 
-        for(i=2; SDirIndex = UDFDirIndex(hSDirIndex,i); i++) {
+        for(i=2; (SDirIndex = UDFDirIndex(hSDirIndex,i)); i++) {
             if((SDirIndex->FI_Flags & UDF_FI_FLAG_FI_INTERNAL) ||
                 UDFIsDeleted(SDirIndex) ||
                 !SDirIndex->FName.Buffer )
@@ -1184,7 +1176,7 @@
                 UDFDirIndexInitScan(SDirInfo, &ScanContext, 2)) {
 
                 // Check if we can delete Streams 
-                while(DirNdx = UDFDirIndexScan(&ScanContext, &FileInfo)) {
+                while((DirNdx = UDFDirIndexScan(&ScanContext, &FileInfo))) {
                     if(!FileInfo)
                         continue;
                     if(FileInfo->Fcb) {
@@ -1344,13 +1336,13 @@
     )
 {
     NTSTATUS        RC = STATUS_SUCCESS;
-    PUDF_FILE_INFO  SDirInfo = NULL;
-    PUDF_FILE_INFO  FileInfo = NULL;
+//    PUDF_FILE_INFO  SDirInfo = NULL;
+//    PUDF_FILE_INFO  FileInfo = NULL;
     ULONG lc;
 
     AdPrint(("UDFSetDispositionInformation\n"));
 
-    __try {
+    _SEH2_TRY {
 
         if(!Delete) {
             AdPrint(("    CLEAR DeleteOnClose\n"));
@@ -1639,13 +1631,13 @@
     PDIR_INDEX_ITEM DirNdx;
     PtrUDFNTRequiredFCB NtReqFcb = NULL;
     LONGLONG        OldFileSize;
-    BOOLEAN         ZeroBlock;
+//    BOOLEAN         ZeroBlock;
     BOOLEAN         CacheMapInitialized = FALSE;
     BOOLEAN         AcquiredPagingIo = FALSE;
 
     AdPrint(("UDFSetEOF\n"));
 
-    __try {
+    _SEH2_TRY {
         // Increasing the allocation size associated with a file stream
         // is relatively easy. All we have to do is execute some FSD
         // specific code to check whether we have enough space available
@@ -1720,8 +1712,10 @@
 
             // Yes. Do the FSD specific stuff i.e. increase reserved
             // space on disk.
+/*
             if (FileObject->PrivateCacheMap)
                 ZeroBlock = TRUE;
+*/
 
             // reference file to pretend that it is opened
             UDFReferenceFile__(Fcb->FileInfo);
@@ -1836,7 +1830,7 @@
                 UDFZeroDataEx(NtReqFcb,
                               OldFileSize,
                               PtrBuffer->EndOfFile.QuadPart - OldFileSize,
-                              TRUE/*CanWait, Vcb, FileObject);
+                              TRUE // CanWait, Vcb, FileObject);
             }*/
             Fcb->NTRequiredFCB->NtReqFCBFlags |= UDF_NTREQ_FCB_MODIFIED;
 
@@ -2516,13 +2510,13 @@
 
     UNICODE_STRING NewName;
     UNICODE_STRING LocalPath;
-    PtrUDFCCB CurCcb = NULL;
+//    PtrUDFCCB CurCcb = NULL;
 
     AdPrint(("UDFHardLink\n"));
 
     LocalPath.Buffer = NULL;
 
-    __try {
+    _SEH2_TRY {
 
         // do we try to link Volume ?
         if(!(File1 = Fcb1->FileInfo))
diff -uNrEZbwB /tmp/udffs/filter.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/filter.cpp
--- /tmp/udffs/filter.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/filter.cpp	2015-06-10 13:33:50.194092479 +0200
@@ -104,7 +105,9 @@
     ObDereferenceObject( fileObject );
 }
 
+#if 0
 VOID
+NTAPI
 UDFFsNotification(
     IN PDEVICE_OBJECT DeviceObject,
     IN BOOLEAN FsActive
@@ -152,3 +155,4 @@
         UDFCheckOtherFS(DeviceObject);
     }
 }
\ Pas de fin de ligne à la fin du fichier
+#endif
diff -uNrEZbwB /tmp/udffs/flush.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/flush.cpp
--- /tmp/udffs/flush.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/flush.cpp	2015-06-10 13:33:50.194092479 +0200
@@ -37,6 +38,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFFlush(
     PDEVICE_OBJECT      DeviceObject,       // the logical volume device object
     PIRP                Irp)                // I/O Request Packet
@@ -291,40 +293,40 @@
     )
 {
     BOOLEAN SetArchive = FALSE;
-    BOOLEAN PurgeCache = FALSE;
+//    BOOLEAN PurgeCache = FALSE;
     ULONG ret_val = 0;
 
     KdPrint(("UDFFlushAFile: \n"));
     if(!Fcb)
         return 0;
 
-    __try {
+    _SEH2_TRY {
         if(Fcb->Vcb->VCBFlags & UDF_VCB_FLAGS_RAW_DISK)
             return 0;
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
         BrutePoint();
-    }
+    } _SEH2_END;
 #ifndef UDF_READ_ONLY_BUILD
     // Flush Security if required
-    __try {
+    _SEH2_TRY {
         UDFWriteSecurity(Fcb->Vcb, Fcb, &(Fcb->NTRequiredFCB->SecurityDesc));
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
         BrutePoint();
-    }
+    } _SEH2_END;
 #endif //UDF_READ_ONLY_BUILD
     // Flush SDir if any
-    __try {
+    _SEH2_TRY {
         if(UDFHasAStreamDir(Fcb->FileInfo) &&
            Fcb->FileInfo->Dloc->SDirInfo &&
            !UDFIsSDirDeleted(Fcb->FileInfo->Dloc->SDirInfo) ) {
             ret_val |=
                 UDFFlushADirectory(Fcb->Vcb, Fcb->FileInfo->Dloc->SDirInfo, PtrIoStatus, FlushFlags);
         }
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
         BrutePoint();
-    }
+    } _SEH2_END;
     // Flush File
-    __try {
+    _SEH2_TRY {
         if((Fcb->CachedOpenHandleCount || !Fcb->OpenHandleCount) &&
             Fcb->NTRequiredFCB->SectionObject.DataSectionObject) {
             if(!(Fcb->NTRequiredFCB->NtReqFCBFlags & UDF_NTREQ_FCB_DELETED)
@@ -337,7 +339,7 @@
             // notice, that we should purge cache
             // we can't do it now, because it may cause last Close
             // request & thus, structure deallocation
-            PurgeCache = TRUE;
+//            PurgeCache = TRUE;
 
 #ifndef UDF_READ_ONLY_BUILD
             if(Ccb) {
@@ -418,69 +420,69 @@
     )
 {
     KdPrint(("UDFFlushADirectory: \n"));
-    PDIR_INDEX_HDR hDI;
+//    PDIR_INDEX_HDR hDI;
     PDIR_INDEX_ITEM DI;
-    BOOLEAN Referenced = FALSE;
+//    BOOLEAN Referenced = FALSE;
     ULONG ret_val = 0;
 
     if(Vcb->VCBFlags & UDF_VCB_FLAGS_RAW_DISK)
         return 0;
 
     if(!FI || !FI->Dloc || !FI->Dloc->DirIndex) goto SkipFlushDir;
-    hDI = FI->Dloc->DirIndex;
+//    hDI = FI->Dloc->DirIndex;
 
     // Flush Security if required
-    __try {
+    _SEH2_TRY {
         UDFWriteSecurity(Vcb, FI->Fcb, &(FI->Fcb->NTRequiredFCB->SecurityDesc));
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
         BrutePoint();
-    }
+    } _SEH2_END;
     // Flush SDir if any
-    __try {
+    _SEH2_TRY {
         if(UDFHasAStreamDir(FI) &&
            FI->Dloc->SDirInfo &&
            !UDFIsSDirDeleted(FI->Dloc->SDirInfo) ) {
             ret_val |=
                 UDFFlushADirectory(Vcb, FI->Dloc->SDirInfo, PtrIoStatus, FlushFlags);
         }
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
         BrutePoint();
-    }
+    } _SEH2_END;
 
     // Flush Dir Tree
-    __try {
+    _SEH2_TRY {
         UDF_DIR_SCAN_CONTEXT ScanContext;
         PUDF_FILE_INFO      tempFI;
 
         if(UDFDirIndexInitScan(FI, &ScanContext, 2)) {
-            while(DI = UDFDirIndexScan(&ScanContext, &tempFI)) {
+            while((DI = UDFDirIndexScan(&ScanContext, &tempFI))) {
                 // Flush Dir entry
-                __try {
+                _SEH2_TRY {
                     if(!tempFI) continue;
                     if(UDFIsADirectory(tempFI)) {
                         UDFFlushADirectory(Vcb, tempFI, PtrIoStatus, FlushFlags);
                     } else {
                         UDFFlushAFile(tempFI->Fcb, NULL, PtrIoStatus, FlushFlags);
                     }
-                } __except (EXCEPTION_EXECUTE_HANDLER) {
+                } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
                     BrutePoint();
-                }
+                } _SEH2_END;
                 if(UDFFlushIsBreaking(Vcb, FlushFlags)) {
                     ret_val |= UDF_FLUSH_FLAGS_INTERRUPTED;
                     break;
                 }
             }
         }
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
         BrutePoint();
-    }
+    } _SEH2_END;
 SkipFlushDir:
     // Flush Dir
-    __try {
+    _SEH2_TRY {
         UDFFlushFile__( Vcb, FI, FlushFlags );
-    } __except (EXCEPTION_EXECUTE_HANDLER) {
+    } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
         BrutePoint();
-    }
+    } _SEH2_END;
 
     return ret_val;
 } // end UDFFlushADirectory()
@@ -514,12 +516,11 @@
 
     KdPrint(("UDFFlushLogicalVolume: \n"));
 
-    __try {
+    _SEH2_TRY {
         if(Vcb->VCBFlags & (UDF_VCB_FLAGS_RAW_DISK/* |
                             UDF_VCB_FLAGS_MEDIA_READ_ONLY*/))
             return 0;
-        if((Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY) &&
-           !(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED))
+        if(Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY)
             return 0;
         if(!(Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_MOUNTED))
             return 0;
@@ -573,13 +574,14 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFFlushCompletion(
     PDEVICE_OBJECT  PtrDeviceObject,
     PIRP            Irp,
     PVOID           Context
     )
 {
-    NTSTATUS        RC = STATUS_SUCCESS;
+//    NTSTATUS        RC = STATUS_SUCCESS;
 
     KdPrint(("UDFFlushCompletion: \n"));
 
diff -uNrEZbwB /tmp/udffs/fscntrl.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/fscntrl.cpp
--- /tmp/udffs/fscntrl.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/fscntrl.cpp	2015-06-10 13:33:51.162094783 +0200
@@ -34,6 +35,7 @@
 
 */
 NTSTATUS
+NTAPI
 UDFFSControl(
     PDEVICE_OBJECT      DeviceObject,      // the logical volume device object
     PIRP                Irp                // I/O Request Packet
@@ -97,6 +99,7 @@
 */              
 
 NTSTATUS
+NTAPI
 UDFCommonFSControl(
     PtrUDFIrpContext    PtrIrpContext,
     PIRP                Irp                // I/O Request Packet
@@ -104,12 +107,12 @@
 {
     NTSTATUS                RC = STATUS_UNRECOGNIZED_VOLUME;
     PIO_STACK_LOCATION      IrpSp = NULL;
-    PDEVICE_OBJECT          PtrTargetDeviceObject = NULL;
+//    PDEVICE_OBJECT          PtrTargetDeviceObject = NULL;
 
     KdPrint(("\nUDFCommonFSControl\n\n"));
 //    BrutePoint();
 
-    __try {
+    _SEH2_TRY {
 
         IrpSp = IoGetCurrentIrpStackLocation(Irp);
         ASSERT(IrpSp);
@@ -171,6 +174,7 @@
 
 */
 NTSTATUS
+NTAPI
 UDFUserFsCtrlRequest(
     PtrUDFIrpContext IrpContext,
     PIRP             Irp
@@ -307,6 +311,7 @@
 
 */
 NTSTATUS
+NTAPI
 UDFMountVolume(
     IN PtrUDFIrpContext PtrIrpContext,
     IN PIRP Irp
@@ -319,7 +324,7 @@
     PDEVICE_OBJECT          fsDeviceObject;
     PVPB                    Vpb = IrpSp->Parameters.MountVolume.Vpb;
     PVCB                    Vcb = NULL;
-    PVCB                    OldVcb = NULL;
+//    PVCB                    OldVcb = NULL;
     PDEVICE_OBJECT          VolDo = NULL;
     IO_STATUS_BLOCK         Iosb;
     ULONG                   MediaChangeCount = 0;
@@ -340,7 +345,7 @@
 
     ASSERT(IrpSp);
     KdPrint(("\n !!! UDFMountVolume\n"));
-    KdPrint(("Build " VER_STR_PRODUCT "\n\n"));
+//    KdPrint(("Build " VER_STR_PRODUCT "\n\n"));
 
     fsDeviceObject = PtrIrpContext->TargetDeviceObject;
     KdPrint(("Mount on device object %x\n"));
@@ -417,7 +422,7 @@
             // Send TEST_UNIT_READY comment
             // This can spin-up or wake-up the device
             if(UDFGetRegParameter(NULL, UDF_WAIT_CD_SPINUP, TRUE)) {
-                delay.QuadPart = -15000000I64; // 1.5 sec
+                delay.QuadPart = -15000000LL; // 1.5 sec
                 for(i=0; i<UDF_READY_MAX_RETRY; i++) {
                     // Use device default ready timeout
                     Mode = 0;
@@ -434,14 +439,14 @@
                        TestUnitReadyBuffer.AdditionalSenseCodeQualifier == SCSI_SENSEQ_BECOMING_READY) {
                         KdPrint(("UDFMountVolume: retry\n"));
                         KeDelayExecutionThread(KernelMode, FALSE, &delay);
-                        //delay.QuadPart -= 10000000I64; // 1.0 sec
+                        //delay.QuadPart -= 10000000LL; // 1.0 sec
                     } else {
                         break;
                     }
                 }
                 if(i) {
                     KdPrint(("UDFMountVolume: additional delay 3 sec\n"));
-                    delay.QuadPart = -30000000I64; // 3.0 sec
+                    delay.QuadPart = -30000000LL; // 3.0 sec
                     KeDelayExecutionThread(KernelMode, FALSE, &delay);
                 }
             }
@@ -545,12 +550,6 @@
             try_return(RC);
         }
 
-#ifdef EVALUATION_TIME_LIMIT
-        if(UDFGlobalData.Saved_j != 4) {
-            UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-        }
-#endif //EVALUATION_TIME_LIMIT
-
         VolDo = NULL;
         Vpb = NULL;
 
@@ -621,11 +620,6 @@
         Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
         Vcb->VCBFlags |= UDF_VCB_FLAGS_MEDIA_READ_ONLY;
 #endif //UDF_READ_ONLY_BUILD
-#ifdef EVALUATION_TIME_LIMIT
-        if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-            Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-        }
-#endif //EVALUATION_TIME_LIMIT
 
         if(!NT_SUCCESS(RC)) {
             KdPrint(("UDFMountVolume: try raw mount\n"));
@@ -857,16 +851,10 @@
     IN PVCB    Vcb
     )
 {
-    NTSTATUS RC;
+//    NTSTATUS RC;
     PREVENT_MEDIA_REMOVAL_USER_IN Buff;
     KdPrint(("UDFStartEjectWaiter:\n"));
 
-#ifdef EVALUATION_TIME_LIMIT
-    if(UDFGlobalData.Saved_j != 4) {
-        UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-    }
-#endif //EVALUATION_TIME_LIMIT
-
     if(Vcb->VCBFlags & UDF_VCB_FLAGS_MEDIA_READ_ONLY) {
         KdPrint(("  UDF_VCB_FLAGS_MEDIA_READ_ONLY\n"));
     }
@@ -891,7 +879,7 @@
             // prevent media removal
             KdPrint(("UDFStartEjectWaiter: lock media\n"));
             Buff.PreventMediaRemoval = TRUE;
-            RC = UDFTSendIOCTL( IOCTL_STORAGE_MEDIA_REMOVAL,
+            UDFTSendIOCTL( IOCTL_STORAGE_MEDIA_REMOVAL,
                                  Vcb,
                                  &Buff,sizeof(PREVENT_MEDIA_REMOVAL_USER_IN),
                                  NULL,0,
@@ -912,16 +900,9 @@
         // terminates automatically
         ASSERT(!(Vcb->VCBFlags & UDF_VCB_FLAGS_STOP_WAITER_EVENT));
         Vcb->VCBFlags |= UDF_VCB_FLAGS_STOP_WAITER_EVENT;
-        ExInitializeWorkItem(&(Vcb->EjectWaiter->EjectReqWorkQueueItem), UDFEjectReqWaiter, Vcb->EjectWaiter);
+        ExInitializeWorkItem(&(Vcb->EjectWaiter->EjectReqWorkQueueItem), (PWORKER_THREAD_ROUTINE)UDFEjectReqWaiter, Vcb->EjectWaiter);
         KdPrint(("UDFStartEjectWaiter: create thread\n"));
         ExQueueWorkItem(&(Vcb->EjectWaiter->EjectReqWorkQueueItem), DelayedWorkQueue);
-
-#ifdef EVALUATION_TIME_LIMIT
-        if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-            Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-        }
-#endif //EVALUATION_TIME_LIMIT
-
     } else {
         KdPrint(("  ignore\n"));
     }
@@ -1286,9 +1267,7 @@
     DirNdx->FileCharacteristics = FILE_DIRECTORY;
     DirNdx->FI_Flags = UDF_FI_FLAG_SYS_ATTR;
     DirNdx->SysAttr = FILE_ATTRIBUTE_READONLY;
-    DirNdx->FName.Buffer = L".";
-    DirNdx->FName.Length =
-    (DirNdx->FName.MaximumLength = sizeof(L".")) - sizeof(WCHAR);
+    RtlInitUnicodeString(&DirNdx->FName, L".");
     DirNdx->FileInfo = RootFcb->FileInfo;
     DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes), HASH_ALL | HASH_KEEP_NAME);
 
@@ -1298,9 +1277,7 @@
         DirNdx->FI_Flags |= UDF_FI_FLAG_FI_INTERNAL;
     }
     DirNdx->SysAttr = FILE_ATTRIBUTE_READONLY;
-    DirNdx->FName.Buffer = L"Blank.CD";
-    DirNdx->FName.Length =
-    (DirNdx->FName.MaximumLength = sizeof(L"Blank.CD")) - sizeof(WCHAR);
+    RtlInitUnicodeString(&DirNdx->FName, L"Blank.CD");
     DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes), HASH_ALL);
 
     RootFcb->FileInfo->Dloc->DirIndex = hDirNdx;
@@ -1363,7 +1340,7 @@
     PtrCommonFCBHeader->FileSize.QuadPart = 0;
 
     // The following will disable ValidDataLength support.
-    PtrCommonFCBHeader->ValidDataLength.QuadPart = 0x7FFFFFFFFFFFFFFFI64;
+    PtrCommonFCBHeader->ValidDataLength.QuadPart = 0x7FFFFFFFFFFFFFFFLL;
 
     return RC;
 } // end UDFBlankMount()
@@ -1650,7 +1627,7 @@
     }
 
     //  Now see how many bytes we can copy.
-    StatsSize = sizeof(FILE_SYSTEM_STATISTICS) * *KeNumberProcessors;
+    StatsSize = sizeof(FILE_SYSTEM_STATISTICS) * KeNumberProcessors;
     if (BufferLength < StatsSize) {
         BytesToCopy = BufferLength;
         status = STATUS_BUFFER_OVERFLOW;
@@ -1839,12 +1816,12 @@
     IoAcquireVpbSpinLock( &SavedIrql );
 
     if (!(Vcb->Vpb->Flags & VPB_LOCKED) &&
-        (Vcb->VolumeLockPID == -1) &&
+        (Vcb->VolumeLockPID == (ULONG)-1) &&
         (Vcb->VCBOpenCount <= UDF_RESIDUAL_REFERENCE+1) &&
         (Vcb->Vpb->ReferenceCount == 2)) {
 
         // Mark volume as locked
-        if(PID == -1) {
+        if(PID == (ULONG)-1) {
             Vcb->Vpb->Flags |= VPB_LOCKED;
         }
         Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_LOCKED;
@@ -2094,7 +2071,7 @@
     IN PIRP Irp
     )
 {
-    NTSTATUS RC;
+//    NTSTATUS RC;
 
     PEXTENDED_IO_STACK_LOCATION IrpSp =
         (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation( Irp );
@@ -2114,7 +2091,8 @@
     LARGE_INTEGER StartingLcn;
     PVOLUME_BITMAP_BUFFER OutputBuffer;
     ULONG i, lim;
-    PULONG FSBM, Dest;
+    PULONG FSBM;
+//    PULONG Dest;
     ULONG LSh;
 
     // Decode the file object, the only type of opens we accept are
@@ -2168,17 +2146,17 @@
     if (OutputBufferLength < (DesiredClusters + 7) / 8) {
 
         BytesToCopy = OutputBufferLength;
-        RC = STATUS_BUFFER_OVERFLOW;
+//        RC = STATUS_BUFFER_OVERFLOW;
 
     } else {
 
         BytesToCopy = (DesiredClusters + 7) / 8;
-        RC = STATUS_SUCCESS;
+//        RC = STATUS_SUCCESS;
     }
 
     UDFAcquireResourceExclusive(&(Vcb->VCBResource), TRUE );
 
-    __try {
+    _SEH2_TRY {
 
         //  Fill in the fixed part of the output buffer
         OutputBuffer->StartingLcn.QuadPart = StartingCluster;
@@ -2188,14 +2166,14 @@
         lim = BytesToCopy * 8;
         FSBM = (PULONG)(Vcb->FSBM_Bitmap);
         LSh = Vcb->LB2B_Bits;
-        Dest = (PULONG)(&OutputBuffer->Buffer[0]);
+//        Dest = (PULONG)(&OutputBuffer->Buffer[0]);
 
         for(i=StartingCluster & ~7; i<lim; i++) {
             if(UDFGetFreeBit(FSBM, i<<LSh))
                 UDFSetFreeBit(FSBM, i);
         }
 
-    } __except (UDFExceptionFilter(IrpContext, GetExceptionInformation())) {
+    } _SEH2_EXCEPT(UDFExceptionFilter(IrpContext, _SEH2_GetExceptionInformation())) {
 
         BrutePoint();
         KdPrint(("UDFGetVolumeBitmap: Exception\n"));
@@ -2370,15 +2348,16 @@
             StartingVcn.QuadPart += SubMapping[i].extLength   >> LBSh;
             OutputBuffer->Extents[i].NextVcn = StartingVcn;
         }
-        Irp->IoStatus.Information = FIELD_OFFSET(RETRIEVAL_POINTERS_BUFFER, Extents[i]);
+
+        Irp->IoStatus.Information = FIELD_OFFSET(RETRIEVAL_POINTERS_BUFFER, Extents[0]) + i * sizeof(LARGE_INTEGER) * 2;
 
 try_exit:   NOTHING;
-    } __finally {
+    } _SEH2_FINALLY {
 
         if(SubMapping)
             MyFreePool__(SubMapping);
         Irp->IoStatus.Status = RC;
-    }
+    } _SEH2_END;
 
     return RC;
 } // end UDFGetRetrievalPointers()
diff -uNrEZbwB /tmp/udffs/Include/CrossNt/rwlock.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/CrossNt/rwlock.h
--- /tmp/udffs/Include/CrossNt/rwlock.h	2007-04-17 23:19:24.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/CrossNt/rwlock.h	2015-06-10 13:33:50.266092651 +0200
@@ -36,4 +36,4 @@
 #define RWLOCK_FOR_WRITE              TRUE
 #define RWLOCK_FOR_READ               FALSE
 
-#endif __CROSS_NT_RWLOCK__H__
+#endif /* __CROSS_NT_RWLOCK__H__ */
diff -uNrEZbwB /tmp/udffs/Include/mem_tools.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/mem_tools.h
--- /tmp/udffs/Include/mem_tools.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/mem_tools.h	2015-06-10 13:33:50.562093355 +0200
@@ -250,7 +251,7 @@
         newaddr = (PCHAR)MyAllocatePool__(NonPagedPool,_newlen); 
 #endif //TRACK_SYS_ALLOC_CALLERS
         if (!newaddr) {
-            __asm int 3;
+            __debugbreak();
             *pnewaddr = addr;
             return 0;
         }
diff -uNrEZbwB /tmp/udffs/Include/ntddk_ex.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/ntddk_ex.h
--- /tmp/udffs/Include/ntddk_ex.h	2013-07-24 19:37:03.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/ntddk_ex.h	2015-06-18 00:16:15.542695217 +0200
@@ -94,7 +95,7 @@
 typedef unsigned long   DWORD;
 typedef unsigned char   BYTE;
 
-
+#ifndef __REACTOS__
 typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header
     WORD   e_magic;                     // Magic number
     WORD   e_cblp;                      // Bytes on last page of file
@@ -200,6 +201,7 @@
     DWORD   AddressOfNames;         // RVA from base of image
     DWORD   AddressOfNameOrdinals;  // RVA from base of image
 } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
+#endif
 
 #define IOCTL_DISK_GET_PARTITION_INFO_EX    CTL_CODE(IOCTL_DISK_BASE, 0x0012, METHOD_BUFFERED, FILE_ANY_ACCESS)
 #define IOCTL_DISK_GET_DRIVE_LAYOUT_EX      CTL_CODE(IOCTL_DISK_BASE, 0x0014, METHOD_BUFFERED, FILE_ANY_ACCESS)
diff -uNrEZbwB /tmp/udffs/Include/nt_native.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/nt_native.h
--- /tmp/udffs/Include/nt_native.h	2013-07-24 19:36:58.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/nt_native.h	2015-06-18 00:16:15.538695198 +0200
@@ -576,50 +577,6 @@
 
 #define DEVICE_TYPE ULONG
 
-#define FILE_DEVICE_BEEP                0x00000001
-#define FILE_DEVICE_CD_ROM              0x00000002
-#define FILE_DEVICE_CD_ROM_FILE_SYSTEM  0x00000003
-#define FILE_DEVICE_CONTROLLER          0x00000004
-#define FILE_DEVICE_DATALINK            0x00000005
-#define FILE_DEVICE_DFS                 0x00000006
-#define FILE_DEVICE_DISK                0x00000007
-#define FILE_DEVICE_DISK_FILE_SYSTEM    0x00000008
-#define FILE_DEVICE_FILE_SYSTEM         0x00000009
-#define FILE_DEVICE_INPORT_PORT         0x0000000a
-#define FILE_DEVICE_KEYBOARD            0x0000000b
-#define FILE_DEVICE_MAILSLOT            0x0000000c
-#define FILE_DEVICE_MIDI_IN             0x0000000d
-#define FILE_DEVICE_MIDI_OUT            0x0000000e
-#define FILE_DEVICE_MOUSE               0x0000000f
-#define FILE_DEVICE_MULTI_UNC_PROVIDER  0x00000010
-#define FILE_DEVICE_NAMED_PIPE          0x00000011
-#define FILE_DEVICE_NETWORK             0x00000012
-#define FILE_DEVICE_NETWORK_BROWSER     0x00000013
-#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
-#define FILE_DEVICE_NULL                0x00000015
-#define FILE_DEVICE_PARALLEL_PORT       0x00000016
-#define FILE_DEVICE_PHYSICAL_NETCARD    0x00000017
-#define FILE_DEVICE_PRINTER             0x00000018
-#define FILE_DEVICE_SCANNER             0x00000019
-#define FILE_DEVICE_SERIAL_MOUSE_PORT   0x0000001a
-#define FILE_DEVICE_SERIAL_PORT         0x0000001b
-#define FILE_DEVICE_SCREEN              0x0000001c
-#define FILE_DEVICE_SOUND               0x0000001d
-#define FILE_DEVICE_STREAMS             0x0000001e
-#define FILE_DEVICE_TAPE                0x0000001f
-#define FILE_DEVICE_TAPE_FILE_SYSTEM    0x00000020
-#define FILE_DEVICE_TRANSPORT           0x00000021
-#define FILE_DEVICE_UNKNOWN             0x00000022
-#define FILE_DEVICE_VIDEO               0x00000023
-#define FILE_DEVICE_VIRTUAL_DISK        0x00000024
-#define FILE_DEVICE_WAVE_IN             0x00000025
-#define FILE_DEVICE_WAVE_OUT            0x00000026
-#define FILE_DEVICE_8042_PORT           0x00000027
-#define FILE_DEVICE_NETWORK_REDIRECTOR  0x00000028
-#define FILE_DEVICE_BATTERY             0x00000029
-#define FILE_DEVICE_BUS_EXTENDER        0x0000002a
-#define FILE_DEVICE_MODEM               0x0000002b
-#define FILE_DEVICE_VDM         0x0000002c
 //
 // Macro definition for defining IOCTL and FSCTL function control codes.  Note
 // that function codes 0-2047 are reserved for Microsoft Corporation, and
diff -uNrEZbwB /tmp/udffs/Include/phys_lib.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/phys_lib.cpp
--- /tmp/udffs/Include/phys_lib.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/phys_lib.cpp	2015-06-18 00:16:15.542695217 +0200
@@ -223,7 +224,7 @@
 
         // check if block valid
         if(Vcb->BSBM_Bitmap) {
-            if(UDFGetBit__((uint32*)(Vcb->BSBM_Bitmap), UDFRelocateSector(Vcb, lba0+i))) {
+            if(UDFGetBit((uint32*)(Vcb->BSBM_Bitmap), UDFRelocateSector(Vcb, lba0+i))) {
                 KdPrint(("  remap: known BB @ %x, mapped to %x\n", lba0+i, UDFRelocateSector(Vcb, lba0+i)));
                 need_remap = TRUE;
             }
@@ -906,7 +907,7 @@
     if(Vcb->BSBM_Bitmap) {
         ULONG i;
         for(i=0; i<BCount; i++) {
-            if(UDFGetBit__((uint32*)(Vcb->BSBM_Bitmap), Lba+i)) {
+            if(UDFGetBit((uint32*)(Vcb->BSBM_Bitmap), Lba+i)) {
                 KdPrint(("W: Known BB @ %#x\n", Lba));
                 //return STATUS_FT_WRITE_RECOVERY; // this shall not be treated as error and
                                                    // we shall get IO request to BAD block
@@ -1290,7 +1291,7 @@
 {
     PGET_LAST_ERROR_USER_OUT Error = NULL;
     LARGE_INTEGER delay;
-    OSSTATUS RC;
+//    OSSTATUS RC;
     uint32 i;
     BOOLEAN UpdateBB = FALSE;
 
@@ -1360,7 +1361,7 @@
             }
             KdPrint(("Error recovery: sync cache\n"));
             // ...flush device cache...
-            RC = UDFSyncCache(Vcb);
+            UDFSyncCache(Vcb);
             // wait again & retry
             delay.QuadPart = -1000000; // 0.1 sec
             KeDelayExecutionThread(KernelMode, FALSE, &delay);
@@ -1395,7 +1396,7 @@
                 KeDelayExecutionThread(KernelMode, FALSE, &delay);
                 KdPrint(("Error recovery: sync cache\n"));
                 // ...flush device cache...
-                RC = UDFSyncCache(Vcb);
+                UDFSyncCache(Vcb);
                 // wait again & retry
                 delay.QuadPart = -1000000; // 0.1 sec
                 KeDelayExecutionThread(KernelMode, FALSE, &delay);
@@ -1518,7 +1519,7 @@
                Lba+BCount <= Vcb->LastLBA+1) {
                 KdPrint(("bad Session in streaming mode. Lba %x, try fix-up\n", Lba));
                 // ...flush device cache...
-                RC = UDFSyncCache(Vcb);
+                UDFSyncCache(Vcb);
                 // we should wait
                 delay.QuadPart = -10000000; // 1 sec
                 KeDelayExecutionThread(KernelMode, FALSE, &delay);
@@ -1571,7 +1572,7 @@
                Lba+BCount <= Vcb->LastLBA+1) {
                 KdPrint(("bad LBA %x in streaming mode, try fix-up\n", Lba));
                 // ...flush device cache...
-                RC = UDFSyncCache(Vcb);
+                UDFSyncCache(Vcb);
                 try_return(status = STATUS_SUCCESS);
             }
 
@@ -1586,15 +1587,15 @@
 
 try_exit: NOTHING;
 
-    } __finally {
+    } _SEH2_FINALLY {
 #ifdef UDF_DBG
         if(OS_SUCCESS(status)) {
             KdPrint(("Retry\n"));
         }
 #endif //UDF_DBG
-    }
+    } _SEH2_END;
     if(!OS_SUCCESS(status)) {
-        if((Vcb->MountPhErrorCount != -1) &&
+        if((Vcb->MountPhErrorCount != (ULONG)-1) &&
            (Vcb->MountPhErrorCount < 0x7fffffff)) {
             Vcb->MountPhErrorCount++;
         }
@@ -1610,7 +1611,7 @@
                 }
             }
             if(bm) {
-                UDFSetBit__(bm, Lba);
+                UDFSetBit(bm, Lba);
                 KdPrint(("Set BB @ %#x\n", Lba));
             }
 #ifdef _BROWSE_UDF_
@@ -1646,12 +1647,12 @@
     BOOLEAN                     ForceFP = FALSE;
     BOOLEAN                     PacketTrack = FALSE;
     BOOLEAN                     MRWRetry = FALSE;
-    BOOLEAN                     ReadCapacityOk = FALSE;
+//    BOOLEAN                     ReadCapacityOk = FALSE;
 #ifdef UDF_FORMAT_MEDIA
     PUDFFmtState            fms = Vcb->fms;
 #endif
     
-    __try {
+    _SEH2_TRY {
         if(!DiscInfo || !TrackInfoOut)
             try_return(RC = STATUS_INSUFFICIENT_RESOURCES);
 
@@ -1696,7 +1697,7 @@
                 // good value from ReadCapacity
                 KdPrint(("Update Last possible LBA %#x.\n", CapacityBuffer.LogicalBlockAddress));
                 Vcb->LastPossibleLBA = CapacityBuffer.LogicalBlockAddress;
-                ReadCapacityOk = TRUE;
+//                ReadCapacityOk = TRUE;
 #ifdef UDF_FORMAT_MEDIA
                 if(fms && fms->opt_disk_info) {
                     UserPrint(("ReadCapacity OK\n"));
@@ -1807,7 +1808,7 @@
                 Vcb->LastPossibleLBA = max(DiscInfo->LastSesLeadInLBA, Vcb->LastPossibleLBA);
             }
         }
-#endif _BROWSE_UDF_
+#endif // _BROWSE_UDF_
         if((DiscInfo->Flags.Flags & DiscInfo_BGF_Mask) != 0) {
             KdPrint(("ForceFP + MRW\n"));
             ForceFP = TRUE;
@@ -2146,7 +2147,7 @@
                     Vcb->LastLBA =
                     Vcb->TrackMap[TrackNumber].LastLba;
                     goto valid_track_length;
-#endif _BROWSE_UDF_
+#endif // _BROWSE_UDF_
                 } else
                 if(Vcb->MRWStatus) {
                     uint8* buff;
@@ -2250,7 +2251,7 @@
     uint8 POINT;
     uint8 CurTrack = 0;
     uint32 LastLeadOut = 0;
-    BOOLEAN IsMRW = FALSE;
+//    BOOLEAN IsMRW = FALSE;
 
     KdPrint(("UDFReadAndProcessFullToc\n"));
 
@@ -2391,7 +2392,7 @@
     PREAD_TOC_USER_OUT      toc = (PREAD_TOC_USER_OUT)MyAllocatePool__(NonPagedPool,max(Vcb->BlockSize, sizeof(READ_TOC_USER_OUT)) );
     PGET_LAST_SESSION_USER_OUT LastSes = (PGET_LAST_SESSION_USER_OUT)MyAllocatePool__(NonPagedPool,sizeof(GET_LAST_SESSION_USER_OUT) );
     uint32                  LocalTrackCount;
-    uint32                  LocalTocLength;
+//    uint32                  LocalTocLength;
     uint32                  TocEntry;
 #ifdef _BROWSE_UDF_
     uint32                  OldTrkNum;
@@ -2478,7 +2479,7 @@
 #endif //_CONSOLE
     
         LocalTrackCount = toc->Tracks.Last_TrackSes - toc->Tracks.First_TrackSes + 1;
-        LocalTocLength = PtrOffset( toc, &(toc->TrackData[LocalTrackCount + 1]) );
+//        LocalTocLength = PtrOffset( toc, &(toc->TrackData[LocalTrackCount + 1]) );  /* FIXME ReactOS Assume PtrOffset is not changing it's arguments? */
       
         // Get out if there is an immediate problem with the TOC.
         if(toc->Tracks.First_TrackSes > toc->Tracks.Last_TrackSes) {
@@ -2719,7 +2720,7 @@
                 TRUE,NULL );
             if(!NT_SUCCESS(RC)) {
                 KdPrint(("UDFGetBlockSize: IOCTL_DISK_GET_PARTITION_INFO failed\n"));
-                if(RC = STATUS_INVALID_DEVICE_REQUEST)
+                if(RC == STATUS_INVALID_DEVICE_REQUEST) /* ReactOS Code Change (was =) */
                     RC = STATUS_UNRECOGNIZED_VOLUME;
                 try_return(RC);
             }
@@ -2889,7 +2890,7 @@
 
     ULONG NextChunkLenOth = 0;
     ULONG NextChunkLenOthCount = 0;
-    ULONG MRW_Offset = 0;
+//    ULONG MRW_Offset = 0;
 
     PLL_READ_USER_IN pLLR_in;
     PCD_SECTOR_HEADER pHdr;
@@ -3688,7 +3689,7 @@
     if(Vcb->BSBM_Bitmap) {
         ULONG i;
         for(i=0; i<BCount; i++) {
-            if(UDFGetBit__((uint32*)(Vcb->BSBM_Bitmap), Lba+i)) {
+            if(UDFGetBit((uint32*)(Vcb->BSBM_Bitmap), Lba+i)) {
                 KdPrint(("R: Known BB @ %#x\n", Lba));
                 //return STATUS_FT_WRITE_RECOVERY; // this shall not be treated as error and
                                                    // we shall get IO request to BAD block
@@ -3703,7 +3704,7 @@
        !(Vcb->VCBFlags & UDF_VCB_FLAGS_NO_SYNC_CACHE) &&
        !(Vcb->CompatFlags & UDF_VCB_IC_NO_SYNCCACHE_AFTER_WRITE)){
 
-        OSSTATUS RC;
+//        OSSTATUS RC;
 
         RC = UDFSyncCache(Vcb);
     }
@@ -3714,8 +3715,8 @@
 #endif //UDF_FORMAT_MEDIA
         TRUE)
     {
-        OSSTATUS RC;
-        RC = UDFSyncCache(Vcb);
+//        OSSTATUS RC;
+        UDFSyncCache(Vcb);
     }
 
 #ifdef _BROWSE_UDF_
@@ -3968,7 +3969,7 @@
         return STATUS_NO_SUCH_DEVICE;
     // read tail of the 1st sector if Offset is not sector_size-aligned
     Lba = (uint32)(Offset >> BSh);
-    if(i = (uint32)(Offset & (BS-1))) {
+    if((i = (uint32)(Offset & (BS-1)))) {
         l = (BS - i) < Length ?
             (BS - i) : Length;
         // here we use 'ReadBytes' 'cause now it's set to zero
@@ -4160,7 +4161,7 @@
         return STATUS_NO_SUCH_DEVICE;
     // write tail of the 1st sector if Offset is not sector_size-aligned
     Lba = (uint32)(Offset >> BSh);
-    if(i = ((uint32)Offset & (BS-1))) {
+    if((i = ((uint32)Offset & (BS-1)))) {
         l = (BS - i) < Length ?
             (BS - i) : Length;
         status = UDFWriteInSector(Vcb, Translate, Lba, i, l, Direct, Buffer, WrittenBytes);
@@ -4275,7 +4276,11 @@
         MODE_READ_WRITE_RECOVERY_PAGE Data;
         CHAR Padding [16];
     } RecoveryPage;
+#ifdef _MSC_VER
 #pragma pack(pop,1)
+#else
+#pragma pack(pop)
+#endif
 
     MODE_SENSE_USER_IN ModeSenseCtl;
     OSSTATUS RC;
diff -uNrEZbwB /tmp/udffs/Include/platform.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/platform.h
--- /tmp/udffs/Include/platform.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/platform.h	2015-06-18 00:16:15.538695198 +0200
@@ -1,43 +1,22 @@
 ////////////////////////////////////////////////////////////////////
 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
 // All rights reserved
+// This file was released under the GPLv2 on June 2015.
 ////////////////////////////////////////////////////////////////////
 
 #ifndef _PLATFORM_SPECIFIC_H_
 #define _PLATFORM_SPECIFIC_H_
 
-#if defined  _X86_
 typedef char                int8;
 typedef short               int16;
 typedef long                int32;
-typedef __int64             int64;
+typedef long long           int64;
 
 typedef unsigned char       uint8;
 typedef unsigned short      uint16;
 typedef unsigned long       uint32;
-typedef unsigned __int64    uint64;
+typedef unsigned long long  uint64;
 
 typedef uint32              lba_t;
 
-#elif defined _AMD64_
-
-typedef __int8              int8;
-typedef __int16             int16;
-typedef __int32             int32;
-typedef __int64             int64;
-
-typedef unsigned __int8     uint8;
-typedef unsigned __int16    uint16;
-typedef unsigned __int32    uint32;
-typedef unsigned __int64    uint64;
-
-typedef uint32              lba_t;
-
-
-#else       // Please define appropriate types here
-
-#error !!!! You must define your types here for compilation to proceed !!!!
-
-#endif  // if _X86_
-
 #endif  // _PLATFORM_SPECIFIC_H_
diff -uNrEZbwB /tmp/udffs/Include/regtools.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/regtools.cpp
--- /tmp/udffs/Include/regtools.cpp	2013-07-24 19:36:37.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/regtools.cpp	2015-06-10 13:33:50.206092508 +0200
@@ -10,7 +11,7 @@
 NTSTATUS
 RegTGetKeyHandle(
     IN HKEY hRootKey,
-    IN PWCHAR KeyName,
+    IN PCWSTR KeyName,
     OUT HKEY* hKey
     )
 {
@@ -20,9 +21,7 @@
 
     //KdPrint(("RegTGetKeyHandle: h=%x, %S\n", hRootKey, KeyName));
 
-    NameString.Buffer = KeyName;
-    NameString.Length = wcslen(KeyName)*sizeof(WCHAR);
-    NameString.MaximumLength = NameString.Length + sizeof(WCHAR);
+    RtlInitUnicodeString(&NameString, KeyName);
 
     InitializeObjectAttributes(
         &ObjectAttributes,
@@ -99,8 +98,8 @@
 BOOLEAN
 RegTGetDwordValue(
     IN HKEY hRootKey,
-    IN PWSTR RegistryPath,
-    IN PWSTR Name,
+    IN PCWSTR RegistryPath,
+    IN PCWSTR Name,
     IN PULONG pUlong
     )
 {
@@ -149,9 +148,7 @@
         return FALSE;
     }
 
-    NameString.Buffer = Name;
-    NameString.Length = wcslen(Name)*sizeof(WCHAR);
-    NameString.MaximumLength = NameString.Length + sizeof(WCHAR);
+    RtlInitUnicodeString(&NameString, Name);
 
     status = ZwQueryValueKey(hKey,
                              &NameString,
@@ -191,8 +188,8 @@
 BOOLEAN
 RegTGetStringValue(
     IN HKEY hRootKey,
-    IN PWSTR RegistryPath,
-    IN PWSTR Name,
+    IN PCWSTR RegistryPath,
+    IN PCWSTR Name,
     IN PWCHAR pStr,
     IN ULONG MaxLen
     )
@@ -239,9 +236,7 @@
         return FALSE;
     }
 
-    NameString.Buffer = Name;
-    NameString.Length = wcslen(Name)*sizeof(WCHAR);
-    NameString.MaximumLength = NameString.Length + sizeof(WCHAR);
+    RtlInitUnicodeString(&NameString, Name);
 
     status = ZwQueryValueKey(hKey,
                              &NameString,
diff -uNrEZbwB /tmp/udffs/Include/regtools.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/regtools.h
--- /tmp/udffs/Include/regtools.h	2013-07-24 19:37:19.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/regtools.h	2015-06-10 13:33:50.562093355 +0200
@@ -15,7 +16,7 @@
 NTSTATUS
 RegTGetKeyHandle(
     IN HKEY hRootKey,
-    IN PWCHAR KeyName,
+    IN PCWSTR KeyName,
     OUT HKEY* hKey
     );
 
@@ -27,16 +28,16 @@
 BOOLEAN
 RegTGetDwordValue(
     IN HKEY hRootKey,
-    IN PWSTR RegistryPath,
-    IN PWSTR Name,
+    IN PCWSTR RegistryPath,
+    IN PCWSTR Name,
     IN PULONG pUlong
     );
 
 BOOLEAN
 RegTGetStringValue(
     IN HKEY hRootKey,
-    IN PWSTR RegistryPath,
-    IN PWSTR Name,
+    IN PCWSTR RegistryPath,
+    IN PCWSTR Name,
     IN PWCHAR pStr,
     IN ULONG MaxLen
     );
diff -uNrEZbwB /tmp/udffs/Include/Sys_spec_lib.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/Sys_spec_lib.cpp
--- /tmp/udffs/Include/Sys_spec_lib.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/Sys_spec_lib.cpp	2015-06-18 00:16:15.538695198 +0200
@@ -662,7 +663,7 @@
         if (trailIndex != (newIndex - 1)) {
             newIndex = trailIndex + 1;
             needsCRC = TRUE;
-            hasExt = FALSE; //* Trailing period does not make an extension.
+            hasExt = FALSE; // Trailing period does not make an extension.
         }
     }
 
@@ -670,10 +671,10 @@
         int localExtIndex = 0;
         if (hasExt) {
             int maxFilenameLen;
-            //* Translate extension, and store it in ext. 
+            // Translate extension, and store it in ext. 
             for(index = 0; index<UDF_EXT_SIZE && extIndex + index +1 < udfLen; index++ ) {
                 current = udfName[extIndex + index + 1];
-                if (UDFIsIllegalChar(current) /*|| !UnicodeIsPrint(current)) {
+                if (UDFIsIllegalChar(current) //|| !UnicodeIsPrint(current)) {
                     needsCRC = TRUE;
                     // Replace Illegal and non-displayable chars
                     // with underscore.
@@ -790,7 +791,7 @@
 NTSTATUS
 MyAppendUnicodeToString_(
     IN PUNICODE_STRING Str1,
-    IN PWSTR Str2
+    IN PCWSTR Str2
 #ifdef UDF_TRACK_UNICODE_STR
    ,IN PCHAR Tag
 #endif 
@@ -805,7 +806,7 @@
   #define UDF_UNC_STR_TAG "AppStr"
 #endif 
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 
     __asm push  ebx
     __asm push  esi
@@ -867,7 +868,7 @@
 
     USHORT i;
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 
     __asm push  ebx
     __asm push  esi
@@ -934,7 +935,7 @@
 {
     PDIR_INDEX_HDR hDirNdx = DirInfo->Dloc->DirIndex;
     PDIR_INDEX_ITEM DirNdx;
-    for(uint_di i=2; DirNdx = UDFDirIndex(hDirNdx,i); i++) {
+    for(uint_di i=2; (DirNdx = UDFDirIndex(hDirNdx,i)); i++) {
         if(!(DirNdx->FI_Flags & UDF_FI_FLAG_SYS_ATTR) ||
             (DirNdx->FI_Flags & UDF_FI_FLAG_LINKED)) return FALSE;
     }
@@ -1005,7 +1006,7 @@
 //    UDFFlushAFile(FileInfo->Fcb, NULL, &IoStatus, 0);
     hCurDirNdx = FileInfo->Dloc->DirIndex;
     // check if we can delete all files
-    for(i=2; CurDirNdx = UDFDirIndex(hCurDirNdx,i); i++) {
+    for(i=2; (CurDirNdx = UDFDirIndex(hCurDirNdx,i)); i++) {
         // try to open Stream
         if(CurDirNdx->FileInfo)
             return STATUS_CANNOT_DELETE;
diff -uNrEZbwB /tmp/udffs/Include/Sys_spec_lib.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/Sys_spec_lib.h
--- /tmp/udffs/Include/Sys_spec_lib.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/Sys_spec_lib.h	2015-06-10 13:33:50.554093336 +0200
@@ -107,7 +108,7 @@
                                        );
 
 NTSTATUS MyAppendUnicodeToString_(IN PUNICODE_STRING Str1,
-                                  IN PWSTR Str2
+                                  IN PCWSTR Str2
 #ifdef UDF_TRACK_UNICODE_STR
                                  ,IN PCHAR Tag
 #endif 
@@ -135,8 +136,10 @@
                                 PUNICODE_STRING s2,
                                 BOOLEAN UpCase);*/
 
-//#define UDFAllocFileInfo() \
-//    ExAllocateFromZone(&(UDFGlobalData.FileInfoZoneHeader))
+/*
+#define UDFAllocFileInfo() \
+    ExAllocateFromZone(&(UDFGlobalData.FileInfoZoneHeader))
+*/
 
 #define UDFIsDataCached(Vcb,Lba,BCount) \
     ( WCacheIsInitialized__(&((Vcb)->FastCache)) &&        \
diff -uNrEZbwB /tmp/udffs/Include/tools.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/tools.h
--- /tmp/udffs/Include/tools.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/tools.h	2015-06-10 13:33:50.210092517 +0200
@@ -271,7 +272,7 @@
 #define PacketFixed2Variable(x,ps) ( ( ( (x) / (ps) )   * (ps+7) ) + ( (x) & (ps-1) ) )
 #define PacketVariable2Fixed(x,ps) ( ( ( (x) / (ps+7) ) * (ps)   ) + ( (((x) % (ps+7)) < (ps)) ? ((x) % (ps+7)) : (ps-1) ) )
 
-#define WAIT_FOR_XXX_EMU_DELAY  1000I64        //  0.0001 s
+#define WAIT_FOR_XXX_EMU_DELAY  1000LL        //  0.0001 s
 
 #define max(a,b)  (((a) > (b)) ? (a) : (b))
 #define min(a,b)  (((a) < (b)) ? (a) : (b))
diff -uNrEZbwB /tmp/udffs/Include/udf_common.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/udf_common.h
--- /tmp/udffs/Include/udf_common.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/udf_common.h	2015-06-10 13:33:50.558093345 +0200
@@ -26,7 +27,7 @@
 struct UDF_MEDIA_CLASS_NAMES
 {
     UDFFSD_MEDIA_TYPE MediaClass;
-    PWCHAR ClassName;
+    PCWSTR ClassName;
 };
 
 extern struct UDF_MEDIA_CLASS_NAMES UDFMediaClassName[];
@@ -113,7 +114,7 @@
     // device object when requesting a mount operation.
     PDEVICE_OBJECT                      TargetDeviceObject;
     UNICODE_STRING                      TargetDevName;
-    PWSTR                               DefaultRegName;
+    PCWSTR                               DefaultRegName;
     // the volume structure contains a pointer to the root directory FCB
     PtrUDFFCB                           RootDirFCB;
     // the complete name of the user visible drive letter we serve
@@ -576,9 +577,6 @@
     //  type of zone (e.g. a default size for the FCB zone might be
     //  different from the default size for the ByteLock zone).
 
-#ifdef EVALUATION_TIME_LIMIT
-    UDF_KEY_LIST                CurrentKeyHash;
-#endif //EVALUATION_TIME_LIMIT
     //  Of course, you will need to use different values (min/max)
     //  for lookaside lists (if you decide to use them instead)
     uint32                      DefaultZoneSizeInNumStructs;
@@ -588,9 +586,6 @@
 //    ERESOURCE                   IsSyncResource;
     // Is operation synchronous flag
 //    BOOLEAN                     IsSync;
-#ifdef EVALUATION_TIME_LIMIT
-    ULONG                       Saved_j;
-#endif //EVALUATION_TIME_LIMIT
 
     // delayed close support
     ERESOURCE                   DelayedCloseResource;
@@ -609,20 +604,12 @@
     BOOLEAN                     ReduceDelayedClose;
     BOOLEAN                     ReduceDirDelayedClose;
 
-#ifdef EVALUATION_TIME_LIMIT
-    LARGE_INTEGER               UDFCurrentTime;
-#endif //EVALUATION_TIME_LIMIT
     ULONG                       CPU_Count;
     LARGE_INTEGER               UDFLargeZero;
 
     // mount event (for udf gui app)
     PKEVENT                     MountEvent;
 
-#ifdef EVALUATION_TIME_LIMIT
-    WCHAR                       LicenseKeyW[16+1];
-    WCHAR                       LKPadding[1];
-#endif //EVALUATION_TIME_LIMIT
-
 #endif //_UDF_STRUCTURES_H_
     //HKEY                        hUdfRootKey;
     UNICODE_STRING              SavedRegPath;
@@ -630,21 +617,12 @@
     UNICODE_STRING              UnicodeStrSDir;
     UNICODE_STRING              AclName;
 //    WCHAR                       UnicodeStrRootBuffer[2];
-#ifdef EVALUATION_TIME_LIMIT
-    ULONG                       iTime;
-    ULONG                       iVer;
-    ULONG                       iTrial;
-#endif //EVALUATION_TIME_LIMIT
 
     ULONG                       WCacheMaxFrames;
     ULONG                       WCacheMaxBlocks;
     ULONG                       WCacheBlocksPerFrameSh;
     ULONG                       WCacheFramesToKeepFree;
 
-#ifdef EVALUATION_TIME_LIMIT
-    UCHAR                       Page2Padding[PAGE_SIZE];
-#endif //EVALUATION_TIME_LIMIT
-
     // some state information is maintained in the flags field
     uint32                      UDFFlags;
 
@@ -656,7 +634,6 @@
 #define     UDF_DATA_FLAGS_RESOURCE_INITIALIZED     (0x00000001)
 #define     UDF_DATA_FLAGS_ZONES_INITIALIZED        (0x00000002)
 #define     UDF_DATA_FLAGS_BEING_UNLOADED           (0x00000004)
-#define     UDF_DATA_FLAGS_UNREGISTERED             (0x00000008)
 
 /**/
 
diff -uNrEZbwB /tmp/udffs/Include/version.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/version.h
--- /tmp/udffs/Include/version.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/version.h	2015-06-10 13:33:50.554093336 +0200
@@ -8,7 +9,7 @@
 //
 //--------------------------------------------------------------------------
 
-#include "product.h"
+//#include "product.h"
 
 #define VER_STR_CHKUDF              "0.2"
 #define VER_BIN_CHKUDF              0,2,0
diff -uNrEZbwB /tmp/udffs/Include/wcache_lib.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/wcache_lib.cpp
--- /tmp/udffs/Include/wcache_lib.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/Include/wcache_lib.cpp	2015-06-18 00:16:15.534695179 +0200
@@ -438,8 +439,10 @@
   Internal routine
  */
 
+#ifdef _MSC_VER
 #pragma warning(push)               
 #pragma warning(disable:4035)               // re-enable below
+#endif
 
 ULONG
 //__fastcall
@@ -452,7 +455,7 @@
     if(!BlockCount)
         return 0;
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 
     __asm push  ecx
     __asm push  ebx
@@ -564,7 +567,9 @@
 
 }
 
+#ifdef _MSC_VER
 #pragma warning(pop) // re-enable warning #4035
+#endif
 
 /*
   WCacheInsertRangeToList() inserts values laying in range described
@@ -821,7 +826,7 @@
   Internal routine
  */
 #define WCacheGetModFlag(block_array, i) \
-    (((UCHAR)(block_array[i].Sector)) & WCACHE_FLAG_MODIFIED)
+    (*((PULONG)&(block_array[i].Sector)) & WCACHE_FLAG_MODIFIED)
 
 #if 0
 /*
@@ -1364,7 +1369,7 @@
     lba_t* List = Cache->CachedBlocksList;
     lba_t lastLba;
     lba_t Lba;
-    PCHAR tmp_buff = Cache->tmp_buff;
+//    PCHAR tmp_buff = Cache->tmp_buff;
     ULONG firstPos;
     ULONG lastPos;
     ULONG BSh = Cache->BlockSizeSh;
@@ -1546,7 +1551,7 @@
     ULONG n;
     ULONG BSh = Cache->BlockSizeSh;
     ULONG BS = Cache->BlockSize;
-    ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
+//    ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
     ULONG PSs = Cache->PacketSize;
     ULONG _WrittenBytes;
     OSSTATUS status = STATUS_SUCCESS;
@@ -1637,13 +1642,13 @@
 //    PCHAR tmp_buff = Cache->tmp_buff;
     ULONG firstPos;
     ULONG lastPos;
-    ULONG BSh = Cache->BlockSizeSh;
-    ULONG BS = Cache->BlockSize;
-    ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
+//    ULONG BSh = Cache->BlockSizeSh;
+//    ULONG BS = Cache->BlockSize;
+//    ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
     ULONG PSs = Cache->PacketSize;
-    ULONG try_count = 0;
+//    ULONG try_count = 0;
     PW_CACHE_ENTRY block_array;
-    OSSTATUS status;
+//    OSSTATUS status;
     ULONG FreeFrameCount = 0;
 //    PVOID addr;
 
@@ -1677,11 +1682,13 @@
             try_count = 0;
         }
 #else
+/*
         if(Cache->FrameList[frame].UpdateCount) {
             try_count = MAX_TRIES_FOR_NA;
         } else {
             try_count = 0;
         }
+*/
 #endif
 
         if(FreeFrameCount)
@@ -1698,7 +1705,7 @@
             BrutePoint();
             return STATUS_DRIVER_INTERNAL_ERROR;
         }
-        status = WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
+        WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
 
         WCacheRemoveRangeFromList(List, &(Cache->BlockCount), firstLba, Cache->BlocksPerFrame);
         WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame);
@@ -1713,7 +1720,7 @@
     // remove(flush) packet
     while((Cache->BlockCount + WCacheGetSortedListIndex(Cache->BlockCount, List, ReqLba) +
            BCount - WCacheGetSortedListIndex(Cache->BlockCount, List, ReqLba+BCount)) > Cache->MaxBlocks) {
-        try_count = 0;
+//        try_count = 0;
 //Try_Another_Block:
 
         ASSERT(Cache->FrameCount <= Cache->MaxFrames);
@@ -1732,7 +1739,7 @@
             ASSERT(FALSE);
             return STATUS_DRIVER_INTERNAL_ERROR;
         }
-        status = WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
+        WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
         WCacheRemoveRangeFromList(List, &(Cache->BlockCount), Lba, PSs);
         WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), Lba, PSs);
         // check if frame is empty
@@ -1763,7 +1770,7 @@
     ULONG firstPos;
     ULONG lastPos;
     PW_CACHE_ENTRY block_array;
-    OSSTATUS status;
+//    OSSTATUS status;
 
     // remove(flush) some frames
     while(Cache->FrameCount) {
@@ -1781,7 +1788,7 @@
             BrutePoint();
             return STATUS_DRIVER_INTERNAL_ERROR;
         }
-        status = WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
+        WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, TRUE);
 
         WCacheRemoveRangeFromList(List, &(Cache->BlockCount), firstLba, Cache->BlocksPerFrame);
         WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame);
@@ -1811,7 +1818,7 @@
     ULONG firstPos;
     ULONG lastPos;
     PW_CACHE_ENTRY block_array;
-    OSSTATUS status;
+//    OSSTATUS status;
 
     // flush frames
     while(Cache->WriteCount) {
@@ -1829,7 +1836,7 @@
             BrutePoint();
             return STATUS_DRIVER_INTERNAL_ERROR;
         }
-        status = WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, FALSE);
+        WCacheFlushBlocksRAM(Cache, Context, block_array, List, firstPos, lastPos, FALSE);
 
         WCacheRemoveRangeFromList(Cache->CachedModifiedBlocksList, &(Cache->WriteCount), firstLba, Cache->BlocksPerFrame);
     }
@@ -2020,7 +2027,7 @@
     ULONG BS = Cache->BlockSize;
     PCHAR addr;
     ULONG to_read, saved_to_read;
-    PCHAR saved_buff = Buffer;
+//    PCHAR saved_buff = Buffer;
     ULONG _ReadBytes;
     ULONG PS = Cache->PacketSize;
     ULONG MaxR = Cache->MaxBytesToRead;
@@ -2288,12 +2295,12 @@
     ULONG BSh = Cache->BlockSizeSh;
     ULONG BS = Cache->BlockSize;
     PCHAR addr;
-    PCHAR saved_buff = Buffer;
+//    PCHAR saved_buff = Buffer;
     ULONG _WrittenBytes;
     ULONG PS = Cache->PacketSize;
     ULONG PacketMask = PS-1; // here we assume that Packet Size value is 2^n
     ULONG block_type;
-    BOOLEAN Aligned = FALSE;
+//    BOOLEAN Aligned = FALSE;
 
     BOOLEAN WriteThrough = FALSE;
     lba_t   WTh_Lba;
@@ -2619,14 +2626,14 @@
     lba_t firstLba;
     lba_t* List = Cache->CachedBlocksList;
     lba_t Lba;
-    ULONG firstPos;
-    ULONG lastPos;
+//    ULONG firstPos;
+//    ULONG lastPos;
     ULONG BSh = Cache->BlockSizeSh;
     ULONG BS = Cache->BlockSize;
     ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
     ULONG PSs = Cache->PacketSize;
     PW_CACHE_ENTRY block_array;
-    OSSTATUS status;
+//    OSSTATUS status;
     ULONG ReadBytes;
     PW_CACHE_ASYNC FirstWContext = NULL;
     PW_CACHE_ASYNC PrevWContext = NULL;
@@ -2638,15 +2645,15 @@
         Lba = List[0] & ~(PSs-1);
         frame = Lba >> Cache->BlocksPerFrameSh;
         firstLba = frame << Cache->BlocksPerFrameSh;
-        firstPos = WCacheGetSortedListIndex(Cache->BlockCount, List, Lba);
-        lastPos = WCacheGetSortedListIndex(Cache->BlockCount, List, Lba+PSs);
+//        firstPos = WCacheGetSortedListIndex(Cache->BlockCount, List, Lba);
+//        lastPos = WCacheGetSortedListIndex(Cache->BlockCount, List, Lba+PSs);
         block_array = Cache->FrameList[frame].Frame;
         if(!block_array) {
             BrutePoint();   
             return;
         }
 
-        status = WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
+        WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
             Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE);
 
         // free memory
@@ -2686,15 +2693,15 @@
     lba_t firstLba;
     lba_t* List = Cache->CachedModifiedBlocksList;
     lba_t Lba;
-    ULONG firstPos;
-    ULONG lastPos;
+//    ULONG firstPos;
+//    ULONG lastPos;
     ULONG BSh = Cache->BlockSizeSh;
     ULONG BS = Cache->BlockSize;
     ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
     ULONG PSs = Cache->PacketSize;
     ULONG BFs = Cache->BlocksPerFrameSh;
     PW_CACHE_ENTRY block_array;
-    OSSTATUS status;
+//    OSSTATUS status;
     ULONG ReadBytes;
     PW_CACHE_ASYNC FirstWContext = NULL;
     PW_CACHE_ASYNC PrevWContext = NULL;
@@ -2708,15 +2715,15 @@
         Lba = List[0] & ~(PSs-1);
         frame = Lba >> BFs;
         firstLba = frame << BFs;
-        firstPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba);
-        lastPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba+PSs);
+//        firstPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba);
+//        lastPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba+PSs);
         block_array = Cache->FrameList[frame].Frame;
         if(!block_array) {
             BrutePoint();   
             continue;;
         }
         // queue modify request
-        status = WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
+        WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
             Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE);
         // clear MODIFIED flag for queued blocks
         WCacheRemoveRangeFromList(List, &(Cache->WriteCount), Lba, PSs);
@@ -2825,15 +2832,15 @@
     lba_t firstLba;
     lba_t* List = Cache->CachedModifiedBlocksList;
     lba_t Lba;
-    ULONG firstPos;
-    ULONG lastPos;
+//    ULONG firstPos;
+//    ULONG lastPos;
     ULONG BSh = Cache->BlockSizeSh;
     ULONG BS = Cache->BlockSize;
     ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
     ULONG PSs = Cache->PacketSize;
     ULONG BFs = Cache->BlocksPerFrameSh;
     PW_CACHE_ENTRY block_array;
-    OSSTATUS status;
+//    OSSTATUS status;
     ULONG ReadBytes;
     PW_CACHE_ASYNC FirstWContext = NULL;
     PW_CACHE_ASYNC PrevWContext = NULL;
@@ -2848,8 +2855,8 @@
     for(Lba = _Lba & ~(PSs-1);Lba < lim ; Lba += PSs) {
         frame = Lba >> BFs;
         firstLba = frame << BFs;
-        firstPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba);
-        lastPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba+PSs);
+//        firstPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba);
+//        lastPos = WCacheGetSortedListIndex(Cache->WriteCount, List, Lba+PSs);
         block_array = Cache->FrameList[frame].Frame;
         if(!block_array) {
             // not cached block may be requested for flush
@@ -2857,7 +2864,7 @@
             continue;
         }
         // queue modify request
-        status = WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
+        WCacheUpdatePacket(Cache, Context, &FirstWContext, &PrevWContext, block_array, firstLba,
             Lba, BSh, BS, PS, PSs, &ReadBytes, TRUE, ASYNC_STATE_NONE);
         // clear MODIFIED flag for queued blocks
         WCacheRemoveRangeFromList(List, &(Cache->WriteCount), Lba, PSs);
@@ -3312,8 +3319,8 @@
     PCHAR tmp_buff = Cache->tmp_buff;
     ULONG BSh = Cache->BlockSizeSh;
     ULONG BS = Cache->BlockSize;
-    ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
-    ULONG PSs = Cache->PacketSize;
+//    ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
+//    ULONG PSs = Cache->PacketSize;
     PW_CACHE_ENTRY block_array;
     BOOLEAN mod;
     OSSTATUS status;
@@ -3467,10 +3474,10 @@
     lba_t firstLba;
     lba_t* List = Cache->CachedBlocksList;
     lba_t Lba;
-    ULONG BSh = Cache->BlockSizeSh;
-    ULONG BS = Cache->BlockSize;
-    ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
-    ULONG PSs = Cache->PacketSize;
+//    ULONG BSh = Cache->BlockSizeSh;
+//    ULONG BS = Cache->BlockSize;
+//    ULONG PS = BS << Cache->PacketSizeSh; // packet size (bytes)
+//    ULONG PSs = Cache->PacketSize;
     PW_CACHE_ENTRY block_array;
     BOOLEAN mod;
     ULONG MaxReloc = Cache->PacketSize;
diff -uNrEZbwB /tmp/udffs/lockctrl.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/lockctrl.cpp
--- /tmp/udffs/lockctrl.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/lockctrl.cpp	2015-06-10 13:33:49.482090785 +0200
@@ -33,6 +34,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFLockControl(
     IN PDEVICE_OBJECT DeviceObject,       // the logical volume device object
     IN PIRP           Irp)                // I/O Request Packet
@@ -99,6 +101,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFCommonLockControl(
     IN PtrUDFIrpContext PtrIrpContext,
     IN PIRP             Irp)
@@ -106,7 +109,7 @@
     NTSTATUS            RC = STATUS_SUCCESS;
     PIO_STACK_LOCATION  IrpSp = NULL;
     //IO_STATUS_BLOCK     LocalIoStatus;
-    BOOLEAN             CompleteRequest = FALSE;
+//    BOOLEAN             CompleteRequest = FALSE;
     BOOLEAN             PostRequest = FALSE;
     BOOLEAN             CanWait = FALSE;
     PtrUDFNTRequiredFCB NtReqFcb = NULL;
@@ -134,7 +137,7 @@
         if ( (Fcb->NodeIdentifier.NodeType == UDF_NODE_TYPE_VCB) ||
              (Fcb->FCBFlags & UDF_FCB_DIRECTORY)) {
 
-            CompleteRequest = TRUE;
+//            CompleteRequest = TRUE;
             try_return(RC = STATUS_INVALID_PARAMETER);
         }
 
@@ -150,11 +153,11 @@
         AcquiredFCB = TRUE;
 
         RC = FsRtlProcessFileLock(&(NtReqFcb->FileLock), Irp, NULL);
-        CompleteRequest = TRUE;
+//        CompleteRequest = TRUE;
 
 try_exit: NOTHING;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         // Release the FCB resources if acquired.
         if (AcquiredFCB) {
@@ -198,6 +201,7 @@
 */
 
 BOOLEAN
+NTAPI
 UDFFastLock (
     IN PFILE_OBJECT FileObject,
     IN PLARGE_INTEGER FileOffset,
@@ -212,7 +216,7 @@
 {
     BOOLEAN Results = FALSE;
 
-    BOOLEAN             AcquiredFCB = FALSE;
+//    BOOLEAN             AcquiredFCB = FALSE;
     PtrUDFFCB           Fcb = NULL;
     PtrUDFCCB           Ccb = NULL;
 
@@ -242,14 +246,14 @@
     // BUGBUG: kenr
     // (VOID) ExAcquireResourceShared( Fcb->Header.Resource, TRUE );
 
-    __try {
+    _SEH2_TRY {
 
         //  We check whether we can proceed
         //  based on the state of the file oplocks.
 
         //  Now call the FsRtl routine to do the actual processing of the
         //  Lock request
-        if (Results = FsRtlFastLock( &(Fcb->NTRequiredFCB->FileLock),
+        if ((Results = FsRtlFastLock( &(Fcb->NTRequiredFCB->FileLock),
                                      FileObject,
                                      FileOffset,
                                      Length,
@@ -259,14 +263,14 @@
                                      ExclusiveLock,
                                      IoStatus,
                                      NULL,
-                                     FALSE )) {
+                                     FALSE ))) {
 
             //  Set the flag indicating if Fast I/O is possible
             Fcb->NTRequiredFCB->CommonFCBHeader.IsFastIoPossible = UDFIsFastIoPossible(Fcb);
         }
 
 //try_exit:  NOTHING;
-    } __finally {
+    } _SEH2_FINALLY {
 
         //  Release the Fcb, and return to our caller
 
@@ -301,6 +305,7 @@
         needs to take the long route.
 */
 BOOLEAN
+NTAPI
 UDFFastUnlockSingle(
     IN PFILE_OBJECT FileObject,
     IN PLARGE_INTEGER FileOffset,
@@ -314,7 +319,7 @@
 {
     BOOLEAN Results = FALSE;
 
-    BOOLEAN             AcquiredFCB = FALSE;
+//    BOOLEAN             AcquiredFCB = FALSE;
     PtrUDFFCB           Fcb = NULL;
     PtrUDFCCB           Ccb = NULL;
 
@@ -395,6 +400,7 @@
         needs to take the long route.
 */
 BOOLEAN
+NTAPI
 UDFFastUnlockAll(
     IN PFILE_OBJECT FileObject,
     PEPROCESS ProcessId,
@@ -405,7 +411,7 @@
 {
     BOOLEAN Results = FALSE;
 
-    BOOLEAN             AcquiredFCB = FALSE;
+//    BOOLEAN             AcquiredFCB = FALSE;
     PtrUDFFCB           Fcb = NULL;
     PtrUDFCCB           Ccb = NULL;
 
@@ -484,6 +490,7 @@
 */
 
 BOOLEAN
+NTAPI
 UDFFastUnlockAllByKey(
     IN PFILE_OBJECT FileObject,
     PEPROCESS ProcessId,
@@ -495,7 +502,7 @@
 {
     BOOLEAN Results = FALSE;
 
-    BOOLEAN             AcquiredFCB = FALSE;
+//    BOOLEAN             AcquiredFCB = FALSE;
     PtrUDFFCB           Fcb = NULL;
     PtrUDFCCB           Ccb = NULL;
 
diff -uNrEZbwB /tmp/udffs/mem.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/mem.cpp
--- /tmp/udffs/mem.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/mem.cpp	2015-06-10 13:33:51.166094792 +0200
@@ -1,10 +1,11 @@
 ////////////////////////////////////////////////////////////////////
 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
 // All rights reserved
+// This file was released under the GPLv2 on June 2015.
 ////////////////////////////////////////////////////////////////////
 #include "udffs.h"
 
 // define the file specific bug-check id
 #define         UDF_BUG_CHECK_ID                UDF_FILE_MEM
 
-#include "..\Include\Mem_tools.cpp"
+#include "Include/mem_tools.cpp"
diff -uNrEZbwB /tmp/udffs/mem.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/mem.h
--- /tmp/udffs/mem.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/mem.h	2015-06-10 13:33:50.194092479 +0200
@@ -18,6 +19,6 @@
 //#define MY_USE_INTERNAL_MEMMANAGER
 
 //#include "udffs.h"
-#include "..\Include\Mem_tools.h"
+#include "Include/mem_tools.h"
 
 #endif // __MY_MEM_H__
diff -uNrEZbwB /tmp/udffs/misc.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/misc.cpp
--- /tmp/udffs/misc.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/misc.cpp	2016-06-01 22:01:05.923635054 +0200
@@ -43,18 +44,17 @@
     uint32              SizeOfZone = UDFGlobalData.DefaultZoneSizeInNumStructs;
     uint32              SizeOfObjectNameZone = 0;
     uint32              SizeOfCCBZone = 0;
-    uint32              SizeOfFCBZone = 0;
+//    uint32              SizeOfFCBZone = 0;
     uint32              SizeOfIrpContextZone = 0;
 //    uint32              SizeOfFileInfoZone = 0;
 
-    __try {
+    _SEH2_TRY {
 
         // initialize the spinlock protecting the zones
         KeInitializeSpinLock(&(UDFGlobalData.ZoneAllocationSpinLock));
 
         // determine memory requirements
         switch (MmQuerySystemSize()) {
-#ifndef DEMO
         case MmMediumSystem:
             SizeOfObjectNameZone = (4 * SizeOfZone * UDFQuadAlign(sizeof(UDFObjectName))) + sizeof(ZONE_SEGMENT_HEADER);
             SizeOfCCBZone = (4 * SizeOfZone * UDFQuadAlign(sizeof(UDFCCB))) + sizeof(ZONE_SEGMENT_HEADER);
@@ -81,7 +81,6 @@
             UDFGlobalData.WCacheBlocksPerFrameSh = 8;
             UDFGlobalData.WCacheFramesToKeepFree = 8;
             break;
-#endif //DEMO
         case MmSmallSystem:
         default:
             SizeOfObjectNameZone = (2 * SizeOfZone * UDFQuadAlign(sizeof(UDFObjectName))) + sizeof(ZONE_SEGMENT_HEADER);
@@ -281,6 +280,7 @@
     for(i=0;i<PtrExceptionPointers->ExceptionRecord->NumberParameters;i++) {
         KdPrint(("       %x\n",PtrExceptionPointers->ExceptionRecord->ExceptionInformation[i]));
     }
+#ifdef _X86_
     KdPrint(("Exception context:\n"));
     if(PtrExceptionPointers->ContextRecord->ContextFlags & CONTEXT_INTEGER) {
         KdPrint(("EAX=%8.8x   ",PtrExceptionPointers->ContextRecord->Eax));
@@ -298,6 +298,7 @@
         KdPrint(("EIP=%8.8x\n",PtrExceptionPointers->ContextRecord->Eip));
     }
 //    KdPrint(("Flags: %s %s    ",PtrExceptionPointers->ContextRecord->Eip));
+#endif //_X86_
 
 #endif // UDF_DBG
 
@@ -1173,7 +1174,7 @@
         KeReleaseSpinLock( &(Vcb->OverflowQueueSpinLock), SavedIrql );
 
         // queue up the request
-        ExInitializeWorkItem(&(PtrIrpContext->WorkQueueItem), UDFCommonDispatch, PtrIrpContext);
+        ExInitializeWorkItem(&(PtrIrpContext->WorkQueueItem), (PWORKER_THREAD_ROUTINE)UDFCommonDispatch, PtrIrpContext);
 
         ExQueueWorkItem(&(PtrIrpContext->WorkQueueItem), CriticalWorkQueue);
     //    ExQueueWorkItem(&(PtrIrpContext->WorkQueueItem), DelayedWorkQueue);
@@ -1302,12 +1303,10 @@
                 RC = UDFCommonQueryVolInfo(PtrIrpContext, Irp);
                 break;
 #ifndef UDF_READ_ONLY_BUILD
-#ifndef DEMO // release
             case IRP_MJ_SET_VOLUME_INFORMATION:
                 // Invoke the common query volume routine
                 RC = UDFCommonSetVolInfo(PtrIrpContext, Irp);
                 break;
-#endif // DEMO
 #endif //UDF_READ_ONLY_BUILD
 #ifdef UDF_HANDLE_EAS
 /*            case IRP_MJ_QUERY_EA:
@@ -1325,12 +1324,10 @@
                 RC = UDFCommonGetSecurity(PtrIrpContext, Irp);
                 break;
 #ifndef UDF_READ_ONLY_BUILD
-#ifndef DEMO // release
             case IRP_MJ_SET_SECURITY:
                 // Invoke the common set Security routine
                 RC = UDFCommonSetSecurity(PtrIrpContext, Irp);
                 break;
-#endif // DEMO
 #endif //UDF_READ_ONLY_BUILD
 #endif // UDF_ENABLE_SECURITY
             // Continue with the remaining possible dispatch routines below ...
@@ -1491,11 +1488,11 @@
 //    ASSERT(NT_SUCCESS(RC));
 
     // Allocate buffer for statistics
-    Vcb->Statistics = (PFILE_SYSTEM_STATISTICS)MyAllocatePool__(NonPagedPool, sizeof(FILE_SYSTEM_STATISTICS) * *KeNumberProcessors );
+    Vcb->Statistics = (PFILE_SYSTEM_STATISTICS)MyAllocatePool__(NonPagedPool, sizeof(FILE_SYSTEM_STATISTICS) * KeNumberProcessors );
     if(!Vcb->Statistics)
         try_return(RC = STATUS_INSUFFICIENT_RESOURCES);
-    RtlZeroMemory( Vcb->Statistics, sizeof(FILE_SYSTEM_STATISTICS) * *KeNumberProcessors );
-    for (i=0; i < (*KeNumberProcessors); i++) {
+    RtlZeroMemory( Vcb->Statistics, sizeof(FILE_SYSTEM_STATISTICS) * KeNumberProcessors );
+    for (i=0; i < (KeNumberProcessors); i++) {
         Vcb->Statistics[i].Common.FileSystemType = FILESYSTEM_STATISTICS_TYPE_NTFS;
         Vcb->Statistics[i].Common.Version = 1;
         Vcb->Statistics[i].Common.SizeOfCompleteStructure =
@@ -1562,7 +1559,7 @@
     // We do not want to bother with valid data length callbacks
     // from the Cache Manager for the file stream opened for volume metadata
     // information
-    Vcb->NTRequiredFCB->CommonFCBHeader.ValidDataLength.QuadPart = 0x7FFFFFFFFFFFFFFFUI64;
+    Vcb->NTRequiredFCB->CommonFCBHeader.ValidDataLength.QuadPart = 0x7FFFFFFFFFFFFFFFULL;
 
     Vcb->VolumeLockPID = -1;
 
@@ -1755,7 +1752,7 @@
 typedef ULONG
 (*ptrUDFGetParameter)(
     IN PVCB Vcb, 
-    IN PWSTR Name,
+    IN PCWSTR Name,
     IN ULONG DefValue
     );
 
@@ -1764,7 +1761,7 @@
     PVCB Vcb,
     BOOLEAN Update,
     BOOLEAN UseCfg,
-    PWCHAR Name,
+    PCWSTR Name,
     ULONG Flag,
     BOOLEAN Default
     )
@@ -1829,7 +1826,7 @@
     if(!Vcb->BM_FlushPriod) {
         Vcb->BM_FlushPriod = UDF_DEFAULT_BM_FLUSH_TIMEOUT;
     } else
-    if(Vcb->BM_FlushPriod == -1) {
+    if(Vcb->BM_FlushPriod == (ULONG)-1) {
         Vcb->BM_FlushPriod = 0;
     }
     Vcb->Tree_FlushPriod = UDFGetParameter(Vcb, UDF_TREE_FLUSH_PERIOD_NAME,
@@ -1837,7 +1834,7 @@
     if(!Vcb->Tree_FlushPriod) {
         Vcb->Tree_FlushPriod = UDF_DEFAULT_TREE_FLUSH_TIMEOUT;
     } else
-    if(Vcb->Tree_FlushPriod == -1) {
+    if(Vcb->Tree_FlushPriod == (ULONG)-1) {
         Vcb->Tree_FlushPriod = 0;
     }
     Vcb->SkipCountLimit = UDFGetParameter(Vcb, UDF_NO_UPDATE_PERIOD_NAME,
@@ -1987,7 +1984,7 @@
 ULONG
 UDFGetRegParameter(
     IN PVCB Vcb, 
-    IN PWSTR Name,
+    IN PCWSTR Name,
     IN ULONG DefValue
     )
 {
@@ -2001,7 +1998,7 @@
 ULONG
 UDFGetCfgParameter(
     IN PVCB Vcb, 
-    IN PWSTR Name,
+    IN PCWSTR Name,
     IN ULONG DefValue
     )
 {
@@ -2226,9 +2223,9 @@
 ULONG
 UDFRegCheckParameterValue(
     IN PUNICODE_STRING RegistryPath,
-    IN PWSTR Name,
+    IN PCWSTR Name,
     IN PUNICODE_STRING PtrVolumePath,
-    IN PWSTR DefaultPath,
+    IN PCWSTR DefaultPath,
     IN ULONG DefValue
     )
 {
@@ -2264,12 +2261,12 @@
         paramPathUnknown.MaximumLength = RegistryPath->Length + paramPathUnknownStr.Length + paramStr.Length + sizeof(WCHAR);
         paramPath.MaximumLength = RegistryPath->Length + paramStr.Length + sizeof(WCHAR);
 
-        paramPath.Buffer = (PUSHORT)MyAllocatePool__(PagedPool, paramPath.MaximumLength);
+        paramPath.Buffer = (PWCH)MyAllocatePool__(PagedPool, paramPath.MaximumLength);
         if(!paramPath.Buffer) {
             KdPrint(("UDFCheckRegValue: couldn't allocate paramPath\n"));
             try_return(val = DefValue);
         }
-        paramPathUnknown.Buffer = (PUSHORT)MyAllocatePool__(PagedPool, paramPathUnknown.MaximumLength);
+        paramPathUnknown.Buffer = (PWCH)MyAllocatePool__(PagedPool, paramPathUnknown.MaximumLength);
         if(!paramPathUnknown.Buffer) {
             KdPrint(("UDFCheckRegValue: couldn't allocate paramPathUnknown\n"));
             try_return(val = DefValue);
@@ -2306,7 +2303,7 @@
             RtlInitUnicodeString(&defaultParamStr, DefaultPath);
             RtlInitUnicodeString(&defaultParamPath, NULL);
             defaultParamPath.MaximumLength = paramPath.Length + defaultParamStr.Length + sizeof(WCHAR);
-            defaultParamPath.Buffer = (PUSHORT)MyAllocatePool__(PagedPool, defaultParamPath.MaximumLength);
+            defaultParamPath.Buffer = (PWCH)MyAllocatePool__(PagedPool, defaultParamPath.MaximumLength);
             if(!defaultParamPath.Buffer) {
                 KdPrint(("UDFCheckRegValue: couldn't allocate defaultParamPath\n"));
                 try_return(val = DefValue);
@@ -2333,7 +2330,7 @@
         RtlInitUnicodeString(&paramDevPath, NULL);
         // now build the device specific path
         paramDevPath.MaximumLength = paramPath.Length + paramSuffix.Length + sizeof(WCHAR);
-        paramDevPath.Buffer = (PUSHORT)MyAllocatePool__(PagedPool, paramDevPath.MaximumLength);
+        paramDevPath.Buffer = (PWCH)MyAllocatePool__(PagedPool, paramDevPath.MaximumLength);
         if(!paramDevPath.Buffer) {
             try_return(val = DefValue);
         }
@@ -2362,25 +2359,25 @@
 
 
         // *** Read GLOBAL_DEFAULTS from
-        // \DwUdf\Parameters_Unknown\
+        // "\DwUdf\Parameters_Unknown\"
 
         status = RegTGetDwordValue(NULL, paramPath.Buffer, Name, &val);
 
         // *** Read DEV_CLASS_SPEC_DEFAULTS (if any) from
-        // \DwUdf\Parameters_%DevClass%\
+        // "\DwUdf\Parameters_%DevClass%\"
 
         if(DefaultPath) {
             status = RegTGetDwordValue(NULL, defaultParamPath.Buffer, Name, &val);
         }
 
         // *** Read DEV_SPEC_PARAMS from (if device supports GetDevName)
-        // \DwUdf\Parameters\%DevName%\
+        // "\DwUdf\Parameters\%DevName%\"
 
         status = RegTGetDwordValue(NULL, paramDevPath.Buffer, Name, &val);
 
 try_exit:   NOTHING;
 
-    } __finally {
+    } _SEH2_FINALLY {
 
         if(DefaultPath && defaultParamPath.Buffer) {
             MyFreePool__(defaultParamPath.Buffer);
@@ -2482,13 +2479,14 @@
 } // end UDFInitializeIrpContextLite()
 
 NTSTATUS
+NTAPI
 UDFQuerySetEA(
     PDEVICE_OBJECT DeviceObject,       // the logical volume device object
     PIRP           Irp                 // I/O Request Packet
     )
 {
     NTSTATUS         RC = STATUS_SUCCESS;
-    PtrUDFIrpContext PtrIrpContext = NULL;
+//    PtrUDFIrpContext PtrIrpContext = NULL;
     BOOLEAN          AreWeTopLevel = FALSE;
 
     KdPrint(("UDFQuerySetEA: \n"));
@@ -2590,5 +2588,6 @@
     return ErrorInfo->Status;
 }
 
-#include "..\include\misc_common.cpp"
-#include "..\include\regtools.cpp"
+#include "Include/misc_common.cpp"
+#include "Include/regtools.cpp"
+
diff -uNrEZbwB /tmp/udffs/namesup.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/namesup.cpp
--- /tmp/udffs/namesup.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/namesup.cpp	2015-06-18 00:16:14.638691009 +0200
@@ -23,7 +24,7 @@
 
     USHORT  i;
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 
     PWCHAR retval;
 
diff -uNrEZbwB /tmp/udffs/ntifs_ex.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/ntifs_ex.h
--- /tmp/udffs/ntifs_ex.h	2013-07-24 19:32:43.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/ntifs_ex.h	2015-06-10 13:33:50.194092479 +0200
@@ -25,17 +26,20 @@
 // An example of this would be the paging file path in a driver.
 //
 
+#if 0
 typedef enum _MM_PAGE_PRIORITY {
     LowPagePriority,
     NormalPagePriority = 16,
     HighPagePriority = 32
 } MM_PAGE_PRIORITY;
+#endif
 
 #endif //WIN64
 
 //
 // Note: This function is not available in WDM 1.0
 //
+#if 0
 NTKERNELAPI
 PVOID
 MmMapLockedPagesSpecifyCache (
@@ -46,6 +50,7 @@
      IN ULONG BugCheckOnFailure,
      IN MM_PAGE_PRIORITY Priority
      );
+#endif
 
 // PVOID
 // MmGetSystemAddressForMdlSafe (
@@ -79,6 +84,7 @@
 //
 //--
 
+#if 0
 #define MmGetSystemAddressForMdlSafe(MDL, PRIORITY)                    \
      (((MDL)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |                    \
                         MDL_SOURCE_IS_NONPAGED_POOL)) ?                \
@@ -89,7 +95,7 @@
                                                            NULL,       \
                                                            FALSE,      \
                                                            (PRIORITY))))
-
+#endif
 
 
 __inline PVOID MmGetSystemAddressForMdlSafer(IN PMDL Mdl)
@@ -112,13 +118,14 @@
 #define FULL_SECURITY_INFORMATION       (OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION)
 
 #ifndef WIN64
-
+#if 0
 NTSYSAPI
 ULONG
 NTAPI
 RtlLengthRequiredSid (
     IN UCHAR SubAuthorityCount
 );
+#endif
 
 #endif //WIN64
 
@@ -148,11 +155,13 @@
     IN PSID Sid
 );
 
+#if 0
 NTKERNELAPI
 HANDLE
 PsReferencePrimaryToken (
     IN PEPROCESS Process
 );
+#endif
 
 NTSYSAPI
 NTSTATUS
@@ -218,6 +227,8 @@
 
 #ifndef WIN64
 
+#if 0
+
 typedef struct _TOKEN_OWNER { // to 
     PSID Owner; 
 } TOKEN_OWNER; 
@@ -226,6 +237,8 @@
     PSID PrimaryGroup; 
 } TOKEN_PRIMARY_GROUP; 
 
+#endif
+
 #endif //WIN64
  
 //  The following macro is used to detemine if the file object is opened
@@ -254,7 +267,7 @@
 
 
 #if (_WIN32_WINNT >= 0x0500)
-
+#if 0
 #define FSCTL_READ_PROPERTY_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
 #define FSCTL_WRITE_PROPERTY_DATA       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
 #define FSCTL_FIND_FILES_BY_SID         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
@@ -295,7 +308,7 @@
 
 #define FSCTL_READ_FROM_PLEX            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
 #define FSCTL_FILE_PREFETCH             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
-
+#endif
 #endif // (_WIN32_WINNT >= 0x0500)
 
 // file system flags
@@ -379,6 +392,7 @@
 
 #ifndef WIN64
 
+#if 0
 typedef struct _FILE_FS_FULL_SIZE_INFORMATION {
     LARGE_INTEGER TotalAllocationUnits;
     LARGE_INTEGER CallerAvailableAllocationUnits;
@@ -386,6 +400,7 @@
     ULONG SectorsPerAllocationUnit;
     ULONG BytesPerSector;
 } FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION;
+#endif
 
 #endif //WIN64
 
@@ -440,6 +455,6 @@
     IN ULONG EventCode
     );
 
-#include "..\Include\ntddk_ex.h"
+#include "Include/ntddk_ex.h"
 
 #endif //__NTIFS_EX_H__
diff -uNrEZbwB /tmp/udffs/pnp.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/pnp.cpp
--- /tmp/udffs/pnp.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/pnp.cpp	2015-06-10 13:33:50.202092498 +0200
@@ -49,6 +50,7 @@
     );
 
 NTSTATUS
+NTAPI
 UDFPnpCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
@@ -412,7 +414,7 @@
     //  The device will be going away.  Remove our lock (benign
     //  if we never had it).
     if((Vcb->Vpb->Flags & VPB_LOCKED) ||
-       (Vcb->VolumeLockPID != -1) ) {
+       (Vcb->VolumeLockPID != (ULONG)-1) ) {
         Vcb->Vpb->Flags &= ~VPB_LOCKED;
         Vcb->VCBFlags &= ~UDF_VCB_FLAGS_VOLUME_LOCKED;
         Vcb->VolumeLockFileObject = NULL;
@@ -634,6 +636,7 @@
     PVCB Vcb
     )
 
+*/
 /*++
 
 Routine Description:
@@ -719,6 +722,7 @@
 
 //  Local support routine
 NTSTATUS
+NTAPI
 UDFPnpCompletionRoutine (
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp,
diff -uNrEZbwB /tmp/udffs/protos.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/protos.h
--- /tmp/udffs/protos.h	2013-07-24 19:32:43.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/protos.h	2015-06-10 13:33:51.170094802 +0200
@@ -21,7 +22,7 @@
 /*************************************************************************
 * Prototypes for the file create.cpp
 *************************************************************************/
-extern NTSTATUS UDFCreate(
+extern NTSTATUS NTAPI UDFCreate(
     IN PDEVICE_OBJECT          DeviceObject,       // the logical volume device object
     IN PIRP                    Irp);               // I/O Request Packet
 
@@ -53,7 +54,7 @@
 /*************************************************************************
 * Prototypes for the file cleanup.cpp
 *************************************************************************/
-extern NTSTATUS UDFCleanup(
+extern NTSTATUS NTAPI UDFCleanup(
 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
 PIRP                        Irp);               // I/O Request Packet
 
@@ -68,7 +69,7 @@
 /*************************************************************************
 * Prototypes for the file close.cpp
 *************************************************************************/
-extern NTSTATUS UDFClose(
+extern NTSTATUS NTAPI UDFClose(
 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
 PIRP                        Irp);               // I/O Request Packet
 
@@ -111,15 +112,15 @@
 /*************************************************************************
 * Prototypes for the file dircntrl.cpp
 *************************************************************************/
-extern NTSTATUS UDFDirControl(
+extern NTSTATUS NTAPI UDFDirControl(
 PDEVICE_OBJECT          DeviceObject,       // the logical volume device object
 PIRP                    Irp);               // I/O Request Packet
 
-extern NTSTATUS UDFCommonDirControl(
+extern NTSTATUS NTAPI UDFCommonDirControl(
 PtrUDFIrpContext        PtrIrpContext,
 PIRP                    Irp);
 
-extern NTSTATUS UDFQueryDirectory(
+extern NTSTATUS NTAPI UDFQueryDirectory(
 PtrUDFIrpContext        PtrIrpContext,
 PIRP                    Irp,
 PIO_STACK_LOCATION      IrpSp,
@@ -127,7 +128,7 @@
 PtrUDFFCB               Fcb,
 PtrUDFCCB               Ccb);
 
-extern NTSTATUS UDFNotifyChangeDirectory(
+extern NTSTATUS NTAPI UDFNotifyChangeDirectory(
 PtrUDFIrpContext        PtrIrpContext,
 PIRP                    Irp,
 PIO_STACK_LOCATION      IrpSp,
@@ -138,26 +139,26 @@
 /*************************************************************************
 * Prototypes for the file devcntrl.cpp
 *************************************************************************/
-extern NTSTATUS UDFDeviceControl(
+extern NTSTATUS NTAPI UDFDeviceControl(
 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
 PIRP                        Irp);               // I/O Request Packet
 
-extern NTSTATUS UDFCommonDeviceControl(
+extern NTSTATUS NTAPI UDFCommonDeviceControl(
 PtrUDFIrpContext            PtrIrpContext,
 PIRP                        Irp);
 
-extern NTSTATUS UDFDevIoctlCompletion(
+extern NTSTATUS NTAPI UDFDevIoctlCompletion(
 PDEVICE_OBJECT              PtrDeviceObject,
 PIRP                        Irp,
 PVOID                       Context);
 
-extern NTSTATUS UDFHandleQueryPath(
+extern NTSTATUS NTAPI UDFHandleQueryPath(
 PVOID                       BufferPointer);
 
 /*************************************************************************
 * Prototypes for the file fastio.cpp
 *************************************************************************/
-extern BOOLEAN UDFFastIoCheckIfPossible(
+extern BOOLEAN NTAPI UDFFastIoCheckIfPossible(
 IN PFILE_OBJECT             FileObject,
 IN PLARGE_INTEGER           FileOffset,
 IN ULONG                    Length,
@@ -167,57 +168,57 @@
 OUT PIO_STATUS_BLOCK        IoStatus,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern FAST_IO_POSSIBLE UDFIsFastIoPossible(
+extern FAST_IO_POSSIBLE NTAPI UDFIsFastIoPossible(
 IN PtrUDFFCB Fcb);
 
-extern BOOLEAN UDFFastIoQueryBasicInfo(
+extern BOOLEAN NTAPI UDFFastIoQueryBasicInfo(
 IN PFILE_OBJECT             FileObject,
 IN BOOLEAN                  Wait,
 OUT PFILE_BASIC_INFORMATION Buffer,
 OUT PIO_STATUS_BLOCK        IoStatus,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern BOOLEAN UDFFastIoQueryStdInfo(
+extern BOOLEAN NTAPI UDFFastIoQueryStdInfo(
 IN PFILE_OBJECT                FileObject,
 IN BOOLEAN                     Wait,
 OUT PFILE_STANDARD_INFORMATION Buffer,
 OUT PIO_STATUS_BLOCK           IoStatus,
 IN PDEVICE_OBJECT              DeviceObject);
 
-extern VOID UDFFastIoAcqCreateSec(
+extern VOID NTAPI UDFFastIoAcqCreateSec(
 IN PFILE_OBJECT FileObject);
 
-extern VOID UDFFastIoRelCreateSec(
+extern VOID NTAPI UDFFastIoRelCreateSec(
 IN PFILE_OBJECT FileObject);
 
-extern BOOLEAN UDFAcqLazyWrite(
+extern BOOLEAN NTAPI UDFAcqLazyWrite(
 IN PVOID   Context,
 IN BOOLEAN Wait);
 
-extern VOID UDFRelLazyWrite(
+extern VOID NTAPI UDFRelLazyWrite(
 IN PVOID Context);
 
-extern BOOLEAN UDFAcqReadAhead(
+extern BOOLEAN NTAPI UDFAcqReadAhead(
 IN PVOID   Context,
 IN BOOLEAN Wait);
 
-extern VOID UDFRelReadAhead(
+extern VOID NTAPI UDFRelReadAhead(
 IN PVOID Context);
 
-VOID UDFDriverUnload(
+VOID NTAPI UDFDriverUnload(
     IN PDRIVER_OBJECT DriverObject);
 
 // the remaining are only valid under NT Version 4.0 and later
 #if(_WIN32_WINNT >= 0x0400)
 
-extern BOOLEAN UDFFastIoQueryNetInfo(
+extern BOOLEAN NTAPI UDFFastIoQueryNetInfo(
 IN PFILE_OBJECT                                 FileObject,
 IN BOOLEAN                                      Wait,
 OUT struct _FILE_NETWORK_OPEN_INFORMATION*      Buffer,
 OUT PIO_STATUS_BLOCK                            IoStatus,
 IN PDEVICE_OBJECT                               DeviceObject);
 
-extern BOOLEAN UDFFastIoMdlRead(
+extern BOOLEAN NTAPI UDFFastIoMdlRead(
 IN PFILE_OBJECT             FileObject,
 IN PLARGE_INTEGER           FileOffset,
 IN ULONG                    Length,
@@ -231,7 +232,7 @@
 OUT PMDL                    MdlChain,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern BOOLEAN UDFFastIoPrepareMdlWrite(
+extern BOOLEAN NTAPI UDFFastIoPrepareMdlWrite(
 IN PFILE_OBJECT             FileObject,
 IN PLARGE_INTEGER           FileOffset,
 IN ULONG                    Length,
@@ -240,32 +241,32 @@
 OUT PIO_STATUS_BLOCK        IoStatus,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern BOOLEAN UDFFastIoMdlWriteComplete(
+extern BOOLEAN NTAPI UDFFastIoMdlWriteComplete(
 IN PFILE_OBJECT             FileObject,
 IN PLARGE_INTEGER           FileOffset,
 OUT PMDL                    MdlChain,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern NTSTATUS UDFFastIoAcqModWrite(
+extern NTSTATUS NTAPI UDFFastIoAcqModWrite(
 IN PFILE_OBJECT             FileObject,
 IN PLARGE_INTEGER           EndingOffset,
 OUT PERESOURCE*             ResourceToRelease,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern NTSTATUS UDFFastIoRelModWrite(
+extern NTSTATUS NTAPI UDFFastIoRelModWrite(
 IN PFILE_OBJECT             FileObject,
 IN PERESOURCE               ResourceToRelease,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern NTSTATUS UDFFastIoAcqCcFlush(
+extern NTSTATUS NTAPI UDFFastIoAcqCcFlush(
 IN PFILE_OBJECT             FileObject,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern NTSTATUS UDFFastIoRelCcFlush(
+extern NTSTATUS NTAPI UDFFastIoRelCcFlush(
 IN PFILE_OBJECT             FileObject,
 IN PDEVICE_OBJECT           DeviceObject);
 
-extern BOOLEAN UDFFastIoDeviceControl (
+extern BOOLEAN NTAPI UDFFastIoDeviceControl (
 IN PFILE_OBJECT FileObject,
 IN BOOLEAN Wait,
 IN PVOID InputBuffer OPTIONAL,
@@ -277,6 +278,7 @@
 IN PDEVICE_OBJECT DeviceObject);
 
 extern BOOLEAN
+NTAPI
 UDFFastIoCopyWrite (
     IN PFILE_OBJECT FileObject,
     IN PLARGE_INTEGER FileOffset,
@@ -293,7 +295,7 @@
 /*************************************************************************
 * Prototypes for the file fileinfo.cpp
 *************************************************************************/
-extern NTSTATUS UDFFileInfo(
+extern NTSTATUS NTAPI UDFFileInfo(
 PDEVICE_OBJECT  DeviceObject,       // the logical volume device object
 PIRP            Irp);               // I/O Request Packet
 
@@ -423,7 +425,7 @@
 /*************************************************************************
 * Prototypes for the file flush.cpp
 *************************************************************************/
-extern NTSTATUS UDFFlush(
+extern NTSTATUS NTAPI UDFFlush(
 PDEVICE_OBJECT    DeviceObject,       // the logical volume device object
 PIRP              Irp);               // I/O Request Packet
 
@@ -449,7 +451,7 @@
 PVCB                   Vcb,
 ULONG                  FlushFlags = 0);
 
-extern NTSTATUS UDFFlushCompletion(
+extern NTSTATUS NTAPI UDFFlushCompletion(
 PDEVICE_OBJECT              PtrDeviceObject,
 PIRP                        Irp,
 PVOID                       Context);
@@ -465,19 +467,19 @@
 * Prototypes for the file fscntrl.cpp
 *************************************************************************/
 
-extern NTSTATUS UDFFSControl(
+extern NTSTATUS NTAPI UDFFSControl(
 PDEVICE_OBJECT      DeviceObject,       
 PIRP                Irp);
 
-extern NTSTATUS UDFCommonFSControl(
+extern NTSTATUS NTAPI UDFCommonFSControl(
 PtrUDFIrpContext    PtrIrpContext,
 PIRP                Irp);                // I/O Request Packet
 
-extern NTSTATUS UDFUserFsCtrlRequest(
+extern NTSTATUS NTAPI UDFUserFsCtrlRequest(
 PtrUDFIrpContext    PtrIrpContext,
 PIRP                Irp);
 
-extern NTSTATUS UDFMountVolume(
+extern NTSTATUS NTAPI UDFMountVolume(
 PtrUDFIrpContext    PtrIrpContext,
 PIRP Irp);
 
@@ -528,15 +530,15 @@
 * Prototypes for the file LockCtrl.cpp
 *************************************************************************/
 
-extern NTSTATUS UDFLockControl(
+extern NTSTATUS NTAPI UDFLockControl(
     IN PDEVICE_OBJECT DeviceObject,       // the logical volume device object
     IN PIRP           Irp);               // I/O Request Packet
 
-extern NTSTATUS UDFCommonLockControl(
+extern NTSTATUS NTAPI UDFCommonLockControl(
     IN PtrUDFIrpContext PtrIrpContext,
     IN PIRP             Irp);
 
-extern BOOLEAN UDFFastLock(
+extern BOOLEAN NTAPI UDFFastLock(
     IN PFILE_OBJECT           FileObject,
     IN PLARGE_INTEGER         FileOffset,
     IN PLARGE_INTEGER         Length,
@@ -547,7 +549,7 @@
     OUT PIO_STATUS_BLOCK      IoStatus,
     IN PDEVICE_OBJECT         DeviceObject);
 
-extern BOOLEAN UDFFastUnlockSingle(
+extern BOOLEAN NTAPI UDFFastUnlockSingle(
     IN PFILE_OBJECT           FileObject,
     IN PLARGE_INTEGER         FileOffset,
     IN PLARGE_INTEGER         Length,
@@ -556,13 +558,13 @@
     OUT PIO_STATUS_BLOCK      IoStatus,
     IN PDEVICE_OBJECT         DeviceObject);
 
-extern BOOLEAN UDFFastUnlockAll(
+extern BOOLEAN NTAPI UDFFastUnlockAll(
     IN PFILE_OBJECT           FileObject,
     PEPROCESS                 ProcessId,
     OUT PIO_STATUS_BLOCK      IoStatus,
     IN PDEVICE_OBJECT         DeviceObject);
 
-extern BOOLEAN UDFFastUnlockAllByKey(
+extern BOOLEAN NTAPI UDFFastUnlockAllByKey(
     IN PFILE_OBJECT           FileObject,
     PEPROCESS                 ProcessId,
     ULONG                     Key,
@@ -656,13 +658,13 @@
 
 extern ULONG UDFGetRegParameter(
     IN PVCB Vcb, 
-    IN PWSTR Name,
+    IN PCWSTR Name,
     IN ULONG DefValue = 0);
 
 extern ULONG
 UDFGetCfgParameter(
     IN PVCB Vcb, 
-    IN PWSTR Name,
+    IN PCWSTR Name,
     IN ULONG DefValue
     );
 
@@ -671,9 +673,9 @@
 
 extern ULONG UDFRegCheckParameterValue(
     IN PUNICODE_STRING RegistryPath,
-    IN PWSTR Name,
+    IN PCWSTR Name,
     IN PUNICODE_STRING PtrVolumePath,
-    IN PWSTR DefaultPath,
+    IN PCWSTR DefaultPath,
     IN ULONG DefValue = 0);
 
 extern VOID UDFInitializeIrpContextFromLite (
@@ -686,7 +688,7 @@
     IN PtrUDFFCB           Fcb);
 
 
-extern NTSTATUS UDFQuerySetEA(
+extern NTSTATUS NTAPI UDFQuerySetEA(
     PDEVICE_OBJECT DeviceObject,       // the logical volume device object
     PIRP           Irp                 // I/O Request Packet
     );
@@ -713,7 +715,7 @@
 * Prototypes for the file NameSup.cpp
 *************************************************************************/
 
-#include "NameSup.h"
+#include "namesup.h"
 
 /*************************************************************************
 * Prototypes for the file Udf_info\physical.cpp
@@ -847,7 +849,7 @@
 /*************************************************************************
 * Prototypes for the file read.cpp
 *************************************************************************/
-extern OSSTATUS UDFRead(
+extern OSSTATUS NTAPI UDFRead(
     PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
     PIRP                        Irp);               // I/O Request Packet
 
@@ -856,7 +858,7 @@
     IN PIRP             Irp,
     IN PtrUDFFCB        Fcb);
 
-extern VOID UDFStackOverflowRead(
+extern VOID NTAPI UDFStackOverflowRead(
     IN PVOID Context,
     IN PKEVENT Event);
 
@@ -949,7 +951,7 @@
 /*************************************************************************
 * Prototypes for the file Shutdown.cpp
 *************************************************************************/
-extern NTSTATUS UDFShutdown(
+extern NTSTATUS NTAPI UDFShutdown(
 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
 PIRP                        Irp);               // I/O Request Packet
 
@@ -1038,19 +1040,19 @@
 /*************************************************************************
 * Prototypes for the file UDFinit.cpp
 *************************************************************************/
-extern NTSTATUS DriverEntry(
+extern "C" NTSTATUS NTAPI DriverEntry(
 PDRIVER_OBJECT              DriverObject,       // created by the I/O sub-system
 PUNICODE_STRING             RegistryPath);      // path to the registry key
 
-extern VOID UDFInitializeFunctionPointers(
+extern VOID NTAPI UDFInitializeFunctionPointers(
 PDRIVER_OBJECT              DriverObject);      // created by the I/O sub-system
 
-extern VOID
+extern VOID NTAPI
 UDFFsNotification(IN PDEVICE_OBJECT DeviceObject,
                   IN BOOLEAN FsActive);
 
 #ifndef WIN64
-extern ptrFsRtlNotifyVolumeEvent FsRtlNotifyVolumeEvent;
+//extern ptrFsRtlNotifyVolumeEvent FsRtlNotifyVolumeEvent;
 #endif //WIN64
 
 extern BOOLEAN
@@ -1097,13 +1099,13 @@
 /*************************************************************************
 * Prototypes for the file VolInfo.cpp
 *************************************************************************/
-extern NTSTATUS UDFQueryVolInfo(PDEVICE_OBJECT DeviceObject,
+extern NTSTATUS NTAPI UDFQueryVolInfo(PDEVICE_OBJECT DeviceObject,
                                 PIRP Irp);
 
 extern NTSTATUS UDFCommonQueryVolInfo (PtrUDFIrpContext PtrIrpContext,
                                        PIRP Irp);
 
-extern NTSTATUS UDFSetVolInfo(PDEVICE_OBJECT DeviceObject,       // the logical volume device object
+extern NTSTATUS NTAPI UDFSetVolInfo(PDEVICE_OBJECT DeviceObject,       // the logical volume device object
                               PIRP           Irp);               // I/O Request Packet
 
 extern NTSTATUS UDFCommonSetVolInfo(PtrUDFIrpContext PtrIrpContext,
@@ -1112,7 +1114,7 @@
 /*************************************************************************
 * Prototypes for the file write.cpp
 *************************************************************************/
-extern NTSTATUS UDFWrite(
+extern NTSTATUS NTAPI UDFWrite(
 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
 PIRP                        Irp);               // I/O Request Packet
 
@@ -1120,7 +1122,7 @@
 PtrUDFIrpContext            PtrIrpContext,
 PIRP                        Irp);
 
-extern VOID UDFDeferredWriteCallBack (
+extern VOID NTAPI UDFDeferredWriteCallBack (
 VOID                        *Context1,          // Should be PtrIrpContext
 VOID                        *Context2);         // Should be Irp
 
diff -uNrEZbwB /tmp/udffs/read.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/read.cpp
--- /tmp/udffs/read.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/read.cpp	2015-06-10 13:33:51.166094792 +0200
@@ -48,6 +49,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFRead(
     PDEVICE_OBJECT DeviceObject,       // the logical volume device object
     PIRP           Irp)                // I/O Request Packet
@@ -179,6 +181,7 @@
 *
 *************************************************************************/
 VOID
+NTAPI
 UDFStackOverflowRead(
     IN PVOID Context,
     IN PKEVENT Event
@@ -242,7 +245,7 @@
     PERESOURCE              PtrResourceAcquired2 = NULL;
     PVOID                   SystemBuffer = NULL;
     PIRP                    TopIrp;
-    uint32                  KeyValue = 0;
+//    uint32                  KeyValue = 0;
 
     ULONG                   Res1Acq = 0;
     ULONG                   Res2Acq = 0;
@@ -410,15 +413,13 @@
             UDFAcquireResourceShared(&(Vcb->VCBResource), TRUE);
             PtrResourceAcquired = &(Vcb->VCBResource);
 
+#if 0
             if(PagingIo) {
                 CollectStatistics(Vcb, MetaDataReads);
                 CollectStatisticsEx(Vcb, MetaDataReadBytes, NumberBytesRead);
             }
-#ifdef EVALUATION_TIME_LIMIT
-            if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-                Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-            }
-#endif //EVALUATION_TIME_LIMIT
+#endif
+
             // Forward the request to the lower level driver
             // Lock the callers buffer
             if (!NT_SUCCESS(RC = UDFLockCallersBuffer(PtrIrpContext, Irp, TRUE, ReadLength))) {
@@ -451,7 +452,7 @@
             NonBufferedIo = TRUE;
         }
 
-        if(ByteOffset.HighPart == 0xFFFFFFFF) {
+        if(ByteOffset.HighPart == -1) {
             if(ByteOffset.LowPart == FILE_USE_FILE_POINTER_POSITION) {
                 ByteOffset = FileObject->CurrentByteOffset;
             }
@@ -464,11 +465,6 @@
             try_return(RC);
         }
 
-#ifdef EVALUATION_TIME_LIMIT
-        if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-            Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-        }
-#endif //EVALUATION_TIME_LIMIT
         NtReqFcb = Fcb->NTRequiredFCB;
 
         Res1Acq = UDFIsResourceAcquired(&(NtReqFcb->MainResource));
@@ -480,10 +476,13 @@
             Res2Acq = PtrIrpContext->IrpContextFlags & UDF_IRP_CONTEXT_RES2_ACQ;
         }
 
+#if 0
         if(PagingIo) {
             CollectStatistics(Vcb, UserFileReads);
             CollectStatisticsEx(Vcb, UserFileReadBytes, NumberBytesRead);
         }
+#endif
+
         // This is a good place for oplock related processing.
 
         // If this is the normal file we have to check for
@@ -745,11 +744,14 @@
 
             UDFUnlockCallersBuffer(PtrIrpContext, Irp, SystemBuffer);
 
+#if 0
             if(PagingIo) {
                 CollectStatistics(Vcb, UserDiskReads);
             } else {
                 CollectStatistics2(Vcb, NonCachedDiskReads);
             }
+#endif
+
             try_return(RC);
 
             // For paging-io, the FSD has to trust the VMM to do the right thing
diff -uNrEZbwB /tmp/udffs/secursup.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/secursup.cpp
--- /tmp/udffs/secursup.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/secursup.cpp	2015-06-10 13:33:51.202094879 +0200
@@ -218,7 +219,6 @@
 }
 
 #ifndef UDF_READ_ONLY_BUILD
-#ifndef DEMO
 /*************************************************************************
 *
 * Function: UDFSetSecurity()
@@ -413,7 +413,6 @@
     return(RC);
 } // ens UDFCommonSetSecurity()
 
-#endif //DEMO
 #endif //UDF_READ_ONLY_BUILD
 #endif //UDF_ENABLE_SECURITY
 
@@ -805,26 +804,24 @@
     PUDF_FILE_INFO SDirInfo = NULL;
     PUDF_FILE_INFO AclInfo = NULL;
     PERESOURCE Res1 = NULL;
-#ifndef DEMO
     NTSTATUS RC;
     ULONG NumberBytesRead;
-#endif //DEMO
 
 //    KdPrint(("UDFWriteSecurity\n"));
 
-#if !defined(DEMO) && !defined(UDF_READ_ONLY_BUILD)
+#if !defined(UDF_READ_ONLY_BUILD)
 
     if(!Vcb->WriteSecurity ||
        (Vcb->VCBFlags & (UDF_VCB_FLAGS_VOLUME_READ_ONLY |
                          UDF_VCB_FLAGS_MEDIA_READ_ONLY)))
 
-#endif //!defined(DEMO) && !defined(UDF_READ_ONLY_BUILD)
+#endif //!defined(UDF_READ_ONLY_BUILD)
 
         return STATUS_SUCCESS;
 
-#if !defined(DEMO) && !defined(UDF_READ_ONLY_BUILD)
+#if !defined(UDF_READ_ONLY_BUILD)
 
-    __try {
+    _SEH2_TRY {
 
         FileInfo = Fcb->FileInfo;
         ASSERT(FileInfo);
@@ -907,7 +904,7 @@
 
     return RC;
 
-#endif //!defined(DEMO) && !defined(UDF_READ_ONLY_BUILD)
+#endif //!defined(UDF_READ_ONLY_BUILD)
 #endif //UDF_ENABLE_SECURITY
 
     return STATUS_SUCCESS;
@@ -952,12 +949,6 @@
     goto treat_as_ro;
 #endif //UDF_READ_ONLY_BUILD
 
-#ifdef EVALUATION_TIME_LIMIT
-    if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-        Fcb->Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-        goto treat_as_ro;
-    }
-#endif //EVALUATION_TIME_LIMIT
     if(Fcb->FCBFlags & UDF_FCB_READ_ONLY) {
         ROCheck = TRUE;
     } else
@@ -968,9 +959,9 @@
         ROCheck = TRUE;
     }
     if(ROCheck) {
-#if defined(EVALUATION_TIME_LIMIT) || defined(UDF_READ_ONLY_BUILD)
+#ifdef UDF_READ_ONLY_BUILD
 treat_as_ro:
-#endif //EVALUATION_TIME_LIMIT
+#endif //UDF_READ_ONLY_BUILD
         ACCESS_MASK  DesiredAccessMask = 0;
        
         if(Fcb->Vcb->CompatFlags & UDF_VCB_IC_WRITE_IN_RO_DIR) {
@@ -1028,11 +1019,6 @@
 #ifdef UDF_ENABLE_SECURITY
     }
 #endif //UDF_ENABLE_SECURITY
-#ifdef EVALUATION_TIME_LIMIT
-    if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-        Fcb->Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-    }
-#endif //EVALUATION_TIME_LIMIT
     if(FileObject) {
         if (Fcb->OpenHandleCount) {
             // The FCB is currently in use by some thread.
@@ -1057,11 +1043,6 @@
         // we get here if given file was opened for internal purposes
         RC = STATUS_SUCCESS;
     }
-#ifdef EVALUATION_TIME_LIMIT
-    if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-        Fcb->Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-    }
-#endif //EVALUATION_TIME_LIMIT
     return RC;
 } // end UDFCheckAccessRights()
 
diff -uNrEZbwB /tmp/udffs/shutdown.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/shutdown.cpp
--- /tmp/udffs/shutdown.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/shutdown.cpp	2015-06-10 13:33:51.202094879 +0200
@@ -42,6 +43,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFShutdown(
     PDEVICE_OBJECT   DeviceObject,       // the logical volume device object
     PIRP             Irp                 // I/O Request Packet
diff -uNrEZbwB /tmp/udffs/struct.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/struct.h
--- /tmp/udffs/struct.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/struct.h	2015-06-10 13:33:51.170094802 +0200
@@ -24,7 +25,7 @@
     some useful definitions
 **************************************************************************/
 
-#include "..\Include\platform.h"
+#include "Include/platform.h"
 
 /**************************************************************************
     some empty typedefs defined here so we can reference them easily
@@ -48,7 +49,7 @@
 /**************************************************************************
  include udf related structures *here* (because we need definition of Fcb)
 **************************************************************************/
-#include "udf_info\udf_rel.h"
+#include "udf_info/udf_rel.h"
 
 /**************************************************************************
     each structure has a unique "node type" or signature associated with it
@@ -329,7 +330,7 @@
 #define _BROWSE_UDF_
 
 // Common UDF-related definitions
-#include "..\Include\udf_common.h"
+#include "Include/udf_common.h"
 
 // One for root
 #define         UDF_RESIDUAL_REFERENCE              (2)
@@ -446,13 +447,13 @@
     WORK_QUEUE_ITEM EjectReqWorkQueueItem;
     
     GET_EVENT_USER_OUT EjectReqBuffer;
-    UCHAR   PaddingEvt[0x40 - sizeof(GET_EVENT_USER_OUT) & 0x0f];
+    UCHAR   PaddingEvt[(0x40 - sizeof(GET_EVENT_USER_OUT)) & 0x0f];
 
     GET_CAPABILITIES_USER_OUT DevCap;
-    UCHAR   PaddingDevCap[0x40 - sizeof(GET_CAPABILITIES_USER_OUT) & 0x0f];
+    UCHAR   PaddingDevCap[(0x40 - sizeof(GET_CAPABILITIES_USER_OUT)) & 0x0f];
 
     GET_LAST_ERROR_USER_OUT Error;
-    UCHAR   PaddingError[0x40 - sizeof(GET_LAST_ERROR_USER_OUT) & 0x0f];
+    UCHAR   PaddingError[(0x40 - sizeof(GET_LAST_ERROR_USER_OUT)) & 0x0f];
 
     ULONG   Zero;
 } UDFEjectWaitContext, *PUDFEjectWaitContext;
@@ -487,5 +488,5 @@
 
 #define DIRTY_PAGE_LIMIT   32
 
-#endif  _UDF_STRUCTURES_H_  // has this file been included?
+#endif /* _UDF_STRUCTURES_H_ */ // has this file been included?
 
diff -uNrEZbwB /tmp/udffs/sys_spec.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/sys_spec.cpp
--- /tmp/udffs/sys_spec.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/sys_spec.cpp	2015-06-10 13:33:50.198092488 +0200
@@ -19,6 +20,6 @@
 // define the file specific bug-check id
 #define         UDF_BUG_CHECK_ID        UDF_FILE_SYS_SPEC
 
-#include "..\Include\Sys_spec_lib.cpp"
+#include "Include/Sys_spec_lib.cpp"
 
-//#include "..\Include\tools.cpp"
+//#include "Include/tools.cpp"
diff -uNrEZbwB /tmp/udffs/sys_spec.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/sys_spec.h
--- /tmp/udffs/sys_spec.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/sys_spec.h	2015-06-10 13:33:51.174094812 +0200
@@ -19,6 +20,6 @@
 #ifndef _UDF_SYS_SPEC_H_
 #define _UDF_SYS_SPEC_H_
 
-#include "..\Include\Sys_spec_lib.h"
+#include "Include/Sys_spec_lib.h"
 
 #endif  // _UDF_SYS_SPEC_H_
diff -uNrEZbwB /tmp/udffs/udf_dbg.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_dbg.cpp
--- /tmp/udffs/udf_dbg.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_dbg.cpp	2015-06-10 13:33:51.170094802 +0200
@@ -1,11 +1,12 @@
 ////////////////////////////////////////////////////////////////////
 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
 // All rights reserved
+// This file was released under the GPLv2 on June 2015.
 ////////////////////////////////////////////////////////////////////
 #include "udffs.h"
 #if defined(UDF_DBG) || defined(PRINT_ALWAYS)
 
-#define TRACK_RESOURCES
+//#define TRACK_RESOURCES
 //#define TRACK_REF_COUNTERS
 
 ULONG ResCounter = 0;
@@ -475,7 +476,7 @@
     delay.QuadPart = -(WAIT_FOR_XXX_EMU_DELAY);
 
     if(Timeout && (Timeout->QuadPart)) LocalTimeout = *Timeout;
-    else LocalTimeout.QuadPart = 0x7FFFFFFFFFFFFFFFI64;
+    else LocalTimeout.QuadPart = 0x7FFFFFFFFFFFFFFFLL;
 
     KdPrint(("SignalState %x\n", *Object));
     if(!Object) return STATUS_INVALID_PARAMETER;
@@ -497,12 +498,12 @@
 {
     PLARGE_INTEGER to;
     LARGE_INTEGER dto;
-    LARGE_INTEGER cto;
+//    LARGE_INTEGER cto;
     NTSTATUS RC;
     ULONG c = 20;
 
-    dto.QuadPart = -5I64*1000000I64*10I64; // 5 sec
-    cto.QuadPart = Timeout->QuadPart;
+    dto.QuadPart = -5LL*1000000LL*10LL; // 5 sec
+//    cto.QuadPart = Timeout->QuadPart;
     if(Timeout) {
         if(dto.QuadPart > Timeout->QuadPart) {
             to = Timeout;
diff -uNrEZbwB /tmp/udffs/udf_dbg.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_dbg.h
--- /tmp/udffs/udf_dbg.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_dbg.h	2016-06-01 22:01:05.967634870 +0200
@@ -233,7 +234,7 @@
 #define ValidateFileInfo(fi)  {}
 #endif
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 
 __inline VOID UDFTouch(IN PVOID addr)
 {
@@ -248,6 +249,7 @@
 __inline VOID UDFTouch(IN PVOID addr)
 {
     UCHAR a = ((PUCHAR)addr)[0];
+    a = a;
 }
 
 #endif // _X86_
diff -uNrEZbwB /tmp/udffs/udffs.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udffs.h
--- /tmp/udffs/udffs.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udffs.h	2016-06-01 22:01:06.007634703 +0200
@@ -20,8 +21,6 @@
 
 //#define UDF_TRACK_UNICODE_STR
 
-//#define DEMO
-
 //#define UDF_LIMIT_NAME_LEN
 
 //#define UDF_LIMIT_DIR_SIZE
@@ -53,10 +52,6 @@
     #define UDF_DEFAULT_DIR_PACK_THRESHOLD (16)
 #endif // UDF_LIMIT_DIR_SIZE
 
-#ifdef DEMO
-    #define UDF_DEMO_VOLUME_LABEL L"UDF Demo"
-#endif //DEMO
-
 #define UDF_DEFAULT_READAHEAD_GRAN 0x10000
 #define UDF_DEFAULT_SPARSE_THRESHOLD (256*PACKETSIZE_UDF)
 
@@ -119,7 +114,9 @@
 }
 #endif //_CONSOLE
 
-#include "..\Include\check_env.h"
+#include <pseh/pseh2.h>
+
+#include "Include/check_env.h"
 
 #define PEXTENDED_IO_STACK_LOCATION  PIO_STACK_LOCATION
 
@@ -136,7 +133,7 @@
 #ifndef _CONSOLE
 #include "ntdddisk.h"
 #include <devioctl.h>
-#include "..\include\crossnt\crossnt.h"
+#include "Include/CrossNt/CrossNt.h"
 #endif //_CONSOLE
 
 #include <stddef.h>
@@ -145,13 +142,13 @@
 //#include "ecma_167.h"
 //#include "osta_misc.h"
 #include "wcache.h"
-#include "..\CDRW\cdrw_usr.h"
+#include "CDRW/cdrw_usr.h"
 
-#include "..\Include\regtools.h"
+#include "Include/regtools.h"
 
 #ifdef _CONSOLE
-#include "udf_info\udf_rel.h"
-#include "..\include\udf_common.h"
+#include "udf_info/udf_rel.h"
+#include "Include/udf_common.h"
 #else
 #include "struct.h"
 #endif //_CONSOLE
@@ -161,28 +158,26 @@
 
 #ifndef _CONSOLE
 #include "env_spec.h"
-#include "DLDetect.h"
-#include "Udf_dbg.h"
+#include "dldetect.h"
+#include "udf_dbg.h"
 #else
-#include "..\include\env_spec_w32.h"
+#include "Include/env_spec_w32.h"
 #endif //_CONSOLE
 
 #include "sys_spec.h"
 
-#include "Udf_info\Udf_info.h"
+#include "udf_info/udf_info.h"
 
 #ifndef _CONSOLE
 #include "protos.h"
 #endif //_CONSOLE
 
-#include "..\Include\phys_lib.h"
+#include "Include/phys_lib.h"
 #include "errmsg.h"
-//#include "..\Include\tools.h"
-#include "..\Include\protect.h"
+//#include "Include/tools.h"
 #include "udfpubl.h"
 //#include "ntifs.h"
 #include "mem.h"
-#include "..\Include\key_lib.h"
 
 extern CCHAR   DefLetter[];
 
@@ -374,7 +369,9 @@
 
 //Device names
 
-#include "../Include/udf_reg.h"
+#include "Include/udf_reg.h"
+
+#include <ddk/mountmgr.h>
 
 #endif  // _UDF_UDF_H_
 
diff -uNrEZbwB /tmp/udffs/udffs.rc /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udffs.rc
--- /tmp/udffs/udffs.rc	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udffs.rc	2015-06-10 13:33:50.198092488 +0200
@@ -8,6 +9,8 @@
 //
 //--------------------------------------------------------------------------
 
+#if 0
+
 #include <windows.h>
 
 #include <ntverp.h>
@@ -33,3 +36,10 @@
 
 #include "common.ver"
 
+#endif
+
+#define REACTOS_VERSION_DLL
+#define REACTOS_STR_FILE_DESCRIPTION  "UDF File System Driver"
+#define REACTOS_STR_INTERNAL_NAME     "dwudf"
+#define REACTOS_STR_ORIGINAL_FILENAME "dwudf.sys"
+#include <reactos/version.rc>
diff -uNrEZbwB /tmp/udffs/udf_info/alloc.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/alloc.cpp
--- /tmp/udffs/udf_info/alloc.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/alloc.cpp	2015-06-18 00:16:14.970692554 +0200
@@ -49,7 +50,7 @@
     )
 {
     PUDFPartMap pm = Vcb->Partitions;
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
     uint32 retval;
     __asm {
         push ebx
@@ -224,8 +225,8 @@
     )
 {
     uint32 i;
-    if(PartNum == -1) return 0;
-    if(PartNum == -2) return Vcb->Partitions[0].PartitionRoot;
+    if(PartNum == (uint32)-1) return 0;
+    if(PartNum == (uint32)-2) return Vcb->Partitions[0].PartitionRoot;
     for(i=PartNum; i<Vcb->PartitionMaps; i++) {
         if(Vcb->Partitions[i].PartitionNum == PartNum) return Vcb->Partitions[i].PartitionRoot;
     }
@@ -244,8 +245,8 @@
     )
 {
     uint32 i;
-    if(PartNum == -1) return Vcb->LastLBA;
-    if(PartNum == -2) PartNum = Vcb->PartitionMaps-1;
+    if(PartNum == (uint32)-1) return Vcb->LastLBA;
+    if(PartNum == (uint32)-2) PartNum = Vcb->PartitionMaps-1;
     for(i=PartNum; i<Vcb->PartitionMaps; i++) {
         if(Vcb->Partitions[i].PartitionNum == PartNum)
             return (Vcb->Partitions[i].PartitionRoot +
@@ -267,7 +268,7 @@
     )
 {
 
-    if(PartNum == -2) return UDFPartEnd(Vcb, -2) - UDFPartStart(Vcb, -2);
+    if(PartNum == (uint32)-2) return UDFPartEnd(Vcb, -2) - UDFPartStart(Vcb, -2);
 /*#ifdef _X86_
     uint32 ret_val;
     __asm {
@@ -305,7 +306,7 @@
     return ret_val;
 #else   // NO X86 optimization , use generic C/C++*/
     uint32 i;
-    if(PartNum == -1) return Vcb->LastLBA;
+    if(PartNum == (uint32)-1) return Vcb->LastLBA;
     for(i=PartNum; i<Vcb->PartitionMaps; i++) {
         if(Vcb->Partitions[i].PartitionNum == PartNum)
             return Vcb->Partitions[i].PartitionLen;
@@ -320,7 +321,7 @@
     array Bitmap. Bitmap scan is limited with Lim.
  */
 
-#if defined _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 
 __declspec (naked)
 uint32
@@ -1041,7 +1042,7 @@
             // create new
 #ifdef UDF_TRACK_ALLOC_FREE_EXTENT
             ExtInfo->Mapping = UDFExtentToMapping_(&Ext, src, line);
-#else UDF_TRACK_ALLOC_FREE_EXTENT
+#else // UDF_TRACK_ALLOC_FREE_EXTENT
             ExtInfo->Mapping = UDFExtentToMapping(&Ext);
 #endif //UDF_TRACK_ALLOC_FREE_EXTENT
             if(!ExtInfo->Mapping) {
@@ -1122,8 +1123,9 @@
             s += UDFGetPartFreeSpace(Vcb, i);
         }
     } else {
+        ASSERT(Vcb->LastPossibleLBA >= max(Vcb->NWA, Vcb->LastLBA));
         s = Vcb->LastPossibleLBA - max(Vcb->NWA, Vcb->LastLBA);
-        if(s & ((int64)1 << 64)) s=0;
+        //if(s & ((int64)1 << 64)) s=0;
     }
     return s >> Vcb->LB2B_Bits;
 } // end UDFGetFreeSpace()
@@ -1147,7 +1149,7 @@
             s+=Vcb->Partitions[i].PartitionLen;
         }
     } else {
-        if(s & ((int64)1 << 64)) s=0;
+        if(s & ((int64)1 << 63)) s=0;  /* FIXME ReactOS this shift value was 64, which is undefiened behavior. */
         s= Vcb->LastPossibleLBA - Vcb->Partitions[0].PartitionRoot;
     }
     return s >> Vcb->LB2B_Bits;
@@ -1169,10 +1171,10 @@
 //    return TRUE;
     if(!(((PVCB)_Vcb)->VCBFlags & UDF_VCB_ASSUME_ALL_USED)) {
         // check used
-        if(bm = (uint32*)(((PVCB)_Vcb)->FSBM_Bitmap))
+        if((bm = (uint32*)(((PVCB)_Vcb)->FSBM_Bitmap)))
             ret_val = (UDFGetUsedBit(bm, Lba) ? WCACHE_BLOCK_USED : 0);
         // check zero-filled
-        if(bm = (uint32*)(((PVCB)_Vcb)->ZSBM_Bitmap))
+        if((bm = (uint32*)(((PVCB)_Vcb)->ZSBM_Bitmap)))
             ret_val |= (UDFGetZeroBit(bm, Lba) ? WCACHE_BLOCK_ZERO : 0);
     } else {
         ret_val = WCACHE_BLOCK_USED;
@@ -1192,9 +1194,14 @@
 } // end UDFIsBlockAllocated()
 
 #ifdef _X86_
+
+#ifdef _MSC_VER
 #pragma warning(disable:4035)               // re-enable below
+#endif
 
+#ifdef _MSC_VER
 __declspec (naked)
+#endif
 BOOLEAN
 __fastcall
 UDFGetBit__(
@@ -1204,6 +1211,7 @@
 {
 //    CheckAddr(arr);
 //    ASSERT(bit < 300000);
+#ifdef _MSC_VER
     __asm {
         push ebx
         push ecx
@@ -1221,9 +1229,15 @@
         pop  ebx
         ret
     }
+#else
+/* FIXME ReactOS */
+    return ((BOOLEAN)(((((uint32*)(arr))[(bit)>>5]) >> ((bit)&31)) &1));
+#endif
 } // end UDFGetBit__()
 
+#ifdef _MSC_VER
 __declspec (naked)
+#endif
 void
 __fastcall
 UDFSetBit__(
@@ -1233,6 +1247,7 @@
 {
 //    CheckAddr(arr);
 //    ASSERT(bit < 300000);
+#ifdef _MSC_VER
     __asm {
         push eax
         push ebx
@@ -1252,6 +1267,10 @@
         pop  eax
         ret
     }
+#else
+/* FIXME ReactOS */
+    (((uint32*)(arr))[(bit)>>5]) |= (((uint32)1) << ((bit)&31));
+#endif
 } // end UDFSetBit__()
 
 void
@@ -1261,6 +1280,7 @@
     IN uint32 bc
     )
 {                                
+#ifdef _MSC_VER
     __asm {
         push eax
         push ebx
@@ -1314,9 +1334,18 @@
         pop  ebx
         pop  eax
     }
+#else
+/* FIXME ReactOS */
+    uint32 j;
+    for(j=0;j<bc;j++) {
+        UDFSetBit(arr, bit+j);
+    }
+#endif
 } // end UDFSetBits__()
 
+#ifdef _MSC_VER
 __declspec (naked)
+#endif
 void
 __fastcall
 UDFClrBit__(
@@ -1326,6 +1355,7 @@
 {
 //    CheckAddr(arr);
 //    ASSERT(bit < 300000);
+#ifdef _MSC_VER
     __asm {
         push eax
         push ebx
@@ -1345,6 +1375,10 @@
         pop  eax
         ret
     }
+#else
+/* FIXME ReactOS */
+    (((uint32*)(arr))[(bit)>>5]) &= (~(((uint32)1) << ((bit)&31)));
+#endif
 } // end UDFClrBit__()
 
 void
@@ -1354,6 +1388,7 @@
     IN uint32 bc
     )
 {
+#ifdef _MSC_VER
     __asm {
         push eax
         push ebx
@@ -1407,7 +1442,16 @@
         pop  ebx
         pop  eax
     }
+#else
+/* FIXME ReactOS */
+    uint32 j;
+    for(j=0;j<bc;j++) {
+        UDFClrBit(arr, bit+j);
+    }
+#endif
 } // end UDFClrBits__()
 
+#ifdef _MSC_VER
 #pragma warning(default:4035)
+#endif
 #endif // _X86_
diff -uNrEZbwB /tmp/udffs/udf_info/dirtree.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/dirtree.cpp
--- /tmp/udffs/udf_info/dirtree.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/dirtree.cpp	2015-06-10 13:33:51.186094840 +0200
@@ -235,11 +236,15 @@
 } // end UDFDirIndexTrunc()
 
 #if defined _X86_ && !defined UDF_LIMIT_DIR_SIZE
+#ifdef _MSC_VER
 #pragma warning(disable:4035)               // re-enable below
+#endif
 /*
     This routine returns pointer to DirIndex item with index i.
  */
+#ifdef _MSC_VER
 __declspec (naked)
+#endif
 PDIR_INDEX_ITEM
 __fastcall
 UDFDirIndex(
@@ -247,6 +252,7 @@
     IN uint32 i                // EDX
     )
 {
+#ifdef _MSC_VER
     __asm {
         push ebx
         push ecx
@@ -287,8 +293,19 @@
 
         ret
     }
+#else
+    /* FIXME ReactOS */
+    uint_di j, k;
+    if( hDirNdx &&
+        ((j = (i >> UDF_DIR_INDEX_FRAME_SH)) < (k = hDirNdx->FrameCount) ) &&
+        ((i = (i & (UDF_DIR_INDEX_FRAME-1))) < ((j < (k-1)) ? UDF_DIR_INDEX_FRAME : hDirNdx->LastFrameCount)) )
+        return &( (((PDIR_INDEX_ITEM*)(hDirNdx+1))[j])[i] );
+    return NULL;
+#endif
 }
+#ifdef _MSC_VER
 #pragma warning(default:4035)
+#endif
 #endif // _X86_
 
 /*
@@ -386,7 +403,7 @@
     }
 
     if(_FileInfo) {
-        if(FileInfo = Context->DirNdx->FileInfo) {
+        if((FileInfo = Context->DirNdx->FileInfo)) {
             if(FileInfo->ParentFile != Context->DirInfo) {
                 ParFileInfo = UDFLocateParallelFI(Context->DirInfo, 
                                                   Context->i,
@@ -496,7 +513,7 @@
     PDIR_INDEX_ITEM DirNdx;
     PFILE_IDENT_DESC FileId;
     uint32 Offset = 0;
-    uint32 prevOffset = 0;
+//    uint32 prevOffset = 0;
     uint_di Count = 0;
     OSSTATUS status;
     int8* buff;
@@ -530,7 +547,7 @@
     // scan Dir to get entry counter
     FileId = (PFILE_IDENT_DESC)buff;
     DirPrint(("  ExtInfo->Length %x\n", ExtInfo->Length));
-    prevOffset = 0;
+//    prevOffset = 0;
     while(Offset<ExtInfo->Length) {
         DirPrint(("  Offset %x\n", Offset));
         if(!FileId->descTag.tagIdent) {
@@ -555,7 +572,7 @@
                 FileInfo->Dloc->DirIndex->DelCount = Vcb->PackDirThreshold+1;
             }
         }
-        prevOffset = Offset;
+//        prevOffset = Offset;
         Offset += (FileId->lengthFileIdent + FileId->lengthOfImpUse + sizeof(FILE_IDENT_DESC) + 3) & (~((uint32)3));
         FileId = (PFILE_IDENT_DESC)((buff)+Offset);
         Count++;
@@ -592,7 +609,7 @@
     ASSERT(PartNum != -1);
     DirNdx->FileEntryLoc.logicalBlockNum =
         UDFPhysLbaToPart(Vcb, PartNum, FileInfo->Dloc->FELoc.Mapping[0].extLocation);
-    if(DirNdx->FileEntryLoc.logicalBlockNum == -1) {
+    if(DirNdx->FileEntryLoc.logicalBlockNum == (ULONG)-1) {
         DirPrint(("  err: FileEntryLoc=-1\n"));
         DbgFreePool(buff);
         return STATUS_FILE_CORRUPT_ERROR;
@@ -602,9 +619,7 @@
                          FILE_DIRECTORY;
 //    DirNdx->Offset = 0;
 //    DirNdx->Length = 0;
-    DirNdx->FName.Buffer = L".";
-    DirNdx->FName.Length =
-    (DirNdx->FName.MaximumLength = sizeof(L".")) - sizeof(WCHAR);
+    RtlInitUnicodeString(&DirNdx->FName, L".");
     DirNdx->FileInfo = FileInfo;
     DirNdx->FI_Flags |= UDF_FI_FLAG_KEEP_NAME;
     DirNdx->FI_Flags |= UDFBuildHashEntry(Vcb, &(DirNdx->FName), &(DirNdx->hashes),
@@ -612,7 +627,7 @@
     Count++;
     FileId = (PFILE_IDENT_DESC)buff;
     status = STATUS_SUCCESS;
-    prevOffset = 0;
+//    prevOffset = 0;
     while((Offset<ExtInfo->Length) && FileId->descTag.tagIdent) {
         // add new entry to index list
         if(FileId->descTag.tagIdent != TID_FILE_IDENT_DESC) {
@@ -645,9 +660,7 @@
             // init 'parent' entry
             // '..' points to Parent Object (if any),
             // otherwise it points to the Dir itself
-            DirNdx->FName.Buffer = L"..";
-            DirNdx->FName.Length =
-            (DirNdx->FName.MaximumLength = sizeof(L"..")) - sizeof(WCHAR);
+            RtlInitUnicodeString(&DirNdx->FName, L"..");
             DirNdx->FileInfo = (FileInfo->ParentFile) ?
                                       FileInfo->ParentFile : FileInfo;
             DirNdx->FI_Flags |= UDF_FI_FLAG_KEEP_NAME;
@@ -696,7 +709,7 @@
             FileId->fileCharacteristics |= FILE_DELETED;
         }
 #endif // UDF_CHECK_DISK_ALLOCATION
-        prevOffset = Offset;
+//        prevOffset = Offset;
         Offset += DirNdx->Length;
         FileId = (PFILE_IDENT_DESC)(((int8*)FileId)+DirNdx->Length);
         Count++;
@@ -777,7 +790,7 @@
     PartNum = (uint16)UDFGetPartNumByPhysLba(Vcb, FileInfo->Dloc->FELoc.Mapping[0].extLocation);
     ASSERT(PartNum != -1);
 
-    while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) {
+    while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
 
         if(UDFIsDeleted(DirNdx))
             dc++;
@@ -921,7 +934,7 @@
     PartNum = (uint16)UDFGetPartNumByPhysLba(Vcb, FileInfo->Dloc->FELoc.Mapping[0].extLocation);
     ASSERT(PartNum != -1);
 
-    while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) {
+    while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
 
         status = UDFReadFile__(Vcb, FileInfo, Offset = DirNdx->Offset,
                                                    l = DirNdx->Length, FALSE, Buf, &ReadBytes);
@@ -974,7 +987,7 @@
  IN OUT uint_di* Index      // IN:start index OUT:found file index
     )
 {
-    PDIR_INDEX_HDR hDirIndex = DirInfo->Dloc->DirIndex;
+//    PDIR_INDEX_HDR hDirIndex = DirInfo->Dloc->DirIndex;
     UNICODE_STRING ShortName;
     WCHAR ShortNameBuffer[13];
     PDIR_INDEX_ITEM DirNdx;
@@ -985,7 +998,7 @@
 
     UDFBuildHashEntry(Vcb, Name, &hashes, HASH_POSIX | HASH_ULFN);
 
-    if(CanBe8d3 = UDFCanNameBeA8dot3(Name)) {
+    if((CanBe8d3 = UDFCanNameBeA8dot3(Name))) {
         ShortName.MaximumLength = 13 * sizeof(WCHAR);
         ShortName.Buffer = (PWCHAR)&ShortNameBuffer;
     }
@@ -996,7 +1009,7 @@
     if(!IgnoreCase && !CanBe8d3) {
         // perform case sensetive sequential directory scan
 
-        while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) {
+        while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
             if( (DirNdx->hashes.hPosix == hashes.hPosix) &&
                  DirNdx->FName.Buffer &&
                 (!RtlCompareUnicodeString(&(DirNdx->FName), Name, FALSE)) &&
@@ -1010,7 +1023,7 @@
 
     if(hashes.hPosix == hashes.hLfn) {
 
-        while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) {
+        while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
             if(!DirNdx->FName.Buffer ||
                (NotDeleted && UDFIsDeleted(DirNdx)) )
                 continue;
@@ -1031,7 +1044,7 @@
 
     } else {
 
-        while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) {
+        while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
             // perform sequential directory scan
             if(!DirNdx->FName.Buffer ||
                (NotDeleted && UDFIsDeleted(DirNdx)) )
@@ -1233,7 +1246,7 @@
     PUDF_DATALOC_INFO Dloc;
 
     if(!Lba) return STATUS_INVALID_PARAMETER;
-    if(Lba == (-1)) return STATUS_INVALID_PARAMETER;
+    if(Lba == (ULONG)-1) return STATUS_INVALID_PARAMETER;
 
     UDFAcquireResourceExclusive(&(Vcb->DlocResource),TRUE);
 
@@ -1407,7 +1420,7 @@
     )
 {
     PUDF_FILE_INFO    ParFileInfo = fi->NextLinkedFile;
-    PUDF_DATALOC_INFO Dloc = di->Dloc;
+//    PUDF_DATALOC_INFO Dloc = di->Dloc;
     while((ParFileInfo != fi) &&
           ((ParFileInfo->ParentFile != di) ||
            (ParFileInfo->Index != i)) ) {
diff -uNrEZbwB /tmp/udffs/udf_info/extent.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/extent.cpp
--- /tmp/udffs/udf_info/extent.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/extent.cpp	2016-05-30 22:38:51.839127937 +0200
@@ -85,10 +86,12 @@
 {
 //    uint32 Lba;
 
-    uint32 l, d;
+    uint32 l;
+//    uint32 d;
 
     // scan extent table for suitable range (frag)
-    d = (l = (Extent->extLength & UDF_EXTENT_LENGTH_MASK));
+//    d = (l = (Extent->extLength & UDF_EXTENT_LENGTH_MASK));
+    l = (Extent->extLength & UDF_EXTENT_LENGTH_MASK);
 
     if(!l) {
         (*Index) = -1;
@@ -119,7 +122,7 @@
     uint32 l, BSh = Vcb->BlockSizeBits;
     uint32 i=0;
 
-    while(l = ((Extent->extLength & UDF_EXTENT_LENGTH_MASK) >> BSh)) {
+    while((l = ((Extent->extLength & UDF_EXTENT_LENGTH_MASK) >> BSh))) {
 
         if(Extent->extLocation   >= lba &&
            Extent->extLocation+l <  lba) {
@@ -143,7 +146,7 @@
     if(!Extent) return 0;
     int64 i=0;
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 
     __asm push  ebx
     __asm push  ecx
@@ -224,7 +227,7 @@
     if(!Extent) return 0;
     uint32 i=0;
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
     __asm push  ebx
 
     __asm mov   ebx,Extent
@@ -297,7 +300,8 @@
     OUT PEXTENT_INFO AllocLoc
     )
 {
-    uint32 i, lim, l, len, BSh, type;
+    uint32 i, lim, l, len, type;
+//    uint32 BSh;
     PEXTENT_MAP Extent, Extent2, AllocMap;
     EXTENT_AD AllocExt;
     PALLOC_EXT_DESC NextAllocDesc;
@@ -311,7 +315,7 @@
     if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL;
 
     locAddr.partitionReferenceNum = (uint16)PartNum;
-    BSh = Vcb->BlockSizeBits;
+//    BSh = Vcb->BlockSizeBits;
     l = ((lim = (AllocDescLength/sizeof(SHORT_AD))) + 1 ) * sizeof(EXTENT_AD);
     Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG);
     if(!Extent) return NULL;
@@ -458,7 +462,8 @@
     OUT PEXTENT_INFO AllocLoc // .Mapping must be intialized (non-Zero)
     )
 {
-    uint32 i, lim, l, len, BSh, type;
+    uint32 i, lim, l, len, type;
+//    uint32 BSh;
     PEXTENT_MAP Extent, Extent2, AllocMap;
     EXTENT_AD AllocExt;
     PALLOC_EXT_DESC NextAllocDesc;
@@ -469,7 +474,7 @@
 
     if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL;
 
-    BSh = Vcb->BlockSizeBits;
+//    BSh = Vcb->BlockSizeBits;
     l = ((lim = (AllocDescLength/sizeof(LONG_AD))) + 1 ) * sizeof(EXTENT_AD);
     Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG);
     if(!Extent) return NULL;
@@ -595,7 +600,8 @@
     OUT PEXTENT_INFO AllocLoc // .Mapping must be intialized (non-Zero)
     )
 {
-    uint32 i, lim, l, len, BSh, type;
+    uint32 i, lim, l, len, type;
+//    uint32 BSh;
     PEXTENT_MAP Extent, Extent2, AllocMap;
     EXTENT_AD AllocExt;
     PALLOC_EXT_DESC NextAllocDesc;
@@ -606,7 +612,7 @@
 
     if(SubCallCount > ALLOC_DESC_MAX_RECURSE) return NULL;
 
-    BSh = Vcb->BlockSizeBits;
+//    BSh = Vcb->BlockSizeBits;
     l = ((lim = (AllocDescLength/sizeof(EXT_AD))) + 1 ) * sizeof(EXTENT_AD);
     Extent = (PEXTENT_MAP)MyAllocatePoolTag__(NonPagedPool, l, MEM_EXTMAP_TAG);
     if(!Extent) return NULL;
@@ -849,7 +855,7 @@
     ValidateFileInfo(FileInfo);
     ExtPrint(("UDFBuildShortAllocDescs: FE %x\n", FileInfo->Dloc->FELoc.Mapping[0].extLocation));
     // calculate length
-    for(len=0; i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK); len++, ph_len+=i) {
+    for(len=0; (i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK)); len++, ph_len+=i) {
         ExtPrint(("bShExt: type %x, loc %x, len %x\n",
             Extent[len].extLength >> 30, Extent[len].extLocation, Extent[len].extLength & UDF_EXTENT_LENGTH_MASK));
     }
@@ -1036,7 +1042,7 @@
     ExtPrint(("UDFBuildLongAllocDescs: FE %x\n", FileInfo->Dloc->FELoc.Mapping[0].extLocation));
     // calculate length
     //for(len=0; i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK); len++, ph_len+=i);
-    for(len=0; i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK); len++, ph_len+=i) {
+    for(len=0; (i=(Extent[len].extLength & UDF_EXTENT_LENGTH_MASK)); len++, ph_len+=i) {
         ExtPrint(("bLnExt: type %x, loc %x, len %x\n",
             Extent[len].extLength >> 30, Extent[len].extLocation, Extent[len].extLength & UDF_EXTENT_LENGTH_MASK));
     }
@@ -1746,7 +1752,7 @@
                 j = i;
             }
         }
-        if(j != -1) {
+        if(j != (ULONG)-1) {
             i = j;
             Ext->Mapping[i].extLocation = Lba;
             Ext->Mapping[i].extLength   = Vcb->LBlockSize | (EXTENT_NOT_RECORDED_ALLOCATED << 30);
@@ -1825,7 +1831,7 @@
     // I don't know what else comment can be added here.
     // Just belive that it works
     lba = UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, (Offset & ~((int64)LBS-1)), NULL, NULL, NULL, &i);
-    if(i == -1) return STATUS_INVALID_PARAMETER;
+    if(i == (ULONG)-1) return STATUS_INVALID_PARAMETER;
 #ifdef UDF_DBG
     check_size = UDFGetExtentLength(ExtInfo->Mapping);
     ASSERT(!(check_size & (LBS-1)));
@@ -1854,7 +1860,9 @@
             UDFPackMapping(Vcb, ExtInfo);
         }
         AdPrint(("Alloc->Rec (1) new %x\n", ExtInfo->Mapping));
+#ifdef UDF_DBG
         ASSERT(check_size == UDFGetExtentLength(ExtInfo->Mapping));
+#endif //UDF_DBG
         AdPrint(("Alloc->Rec: ExtInfo %x, Extent %x\n", ExtInfo, ExtInfo->Mapping));
         return STATUS_SUCCESS;
     }
@@ -1922,8 +1930,10 @@
     ExtInfo->Mapping = NewExtent;
     if(TryPack)
         UDFPackMapping(Vcb, ExtInfo);
+#ifdef UDF_DBG
     ASSERT(check_size == UDFGetExtentLength(ExtInfo->Mapping));
     ASSERT(!(check_size & (LBS-1)));
+#endif //UDF_DBG
 
     AdPrint(("Alloc->Rec: ExtInfo %x, Extent %x\n", ExtInfo, ExtInfo->Mapping));
 
@@ -1945,7 +1955,7 @@
     uint32 i, len, /*lba,*/ d, l, BOffs, j;
     PEXTENT_MAP Extent = ExtInfo->Mapping;   // Extent array
     PEXTENT_MAP NewExtent;
-    uint32 BS = Vcb->BlockSize;
+//    uint32 BS = Vcb->BlockSize;
     uint32 BSh = Vcb->BlockSizeBits;
     OSSTATUS status;
     EXTENT_INFO TmpExtInf;
@@ -1959,7 +1969,7 @@
 #endif
     AdPrint(("Not->Alloc  ExtInfo %x, Extent %x\n", ExtInfo, Extent));
     UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, Offset, NULL, NULL, NULL, &i);
-    if(i == -1) return STATUS_INVALID_PARAMETER;
+    if(i == (ULONG)-1) return STATUS_INVALID_PARAMETER;
     if((Extent[i].extLength >> 30) != EXTENT_NOT_RECORDED_NOT_ALLOCATED) return STATUS_SUCCESS;
 
     uint32 PartNum = UDFGetPartNumByPhysLba(Vcb, Extent[0].extLocation);
@@ -2093,7 +2103,7 @@
     PEXTENT_MAP Extent = ExtInfo->Mapping;   // Extent array
     PEXTENT_MAP NewExtent;
 //    EXTENT_MAP TmpExtent;
-    uint32 BS = Vcb->BlockSize;
+//    uint32 BS = Vcb->BlockSize;
     uint32 BSh = Vcb->BlockSizeBits;
 //    OSSTATUS status;
     EXTENT_INFO TmpExtInf;
@@ -2117,7 +2127,7 @@
 
     DeadMapping[0].extLocation =
         UDFExtentOffsetToLba(Vcb, ExtInfo->Mapping, Offset, NULL, NULL, NULL, &i);
-    if(i == -1) {
+    if(i == (ULONG)-1) {
         BrutePoint();
         return STATUS_INVALID_PARAMETER;
     }
@@ -2131,7 +2141,7 @@
     flags = Extent[i].extLength >> 30;
     if(flags == target_flags) return STATUS_SUCCESS;
 
-    uint32 PartNum = UDFGetPartNumByPhysLba(Vcb, Extent[0].extLocation);
+//    uint32 PartNum = UDFGetPartNumByPhysLba(Vcb, Extent[0].extLocation);
     BOffs = (uint32)(Offset >> BSh);
     // length of existing Alloc-(Not-)Rec frag (in sectors)
     sLen = (( (((uint32)Offset) & (LBS-1)) + Length+LBS-1) & ~(LBS-1)) >> BSh;
@@ -2617,8 +2627,8 @@
     OUT int8** AllocData
     )
 {
-    PEXTENT_MAP InMap;
-    uint32 i=0;
+//    PEXTENT_MAP InMap;
+//    uint32 i=0;
     int8* Allocs;
     uint16 AllocMode;
     uint32 InitSz;
@@ -2634,7 +2644,7 @@
         return STATUS_INSUFFICIENT_RESOURCES;
     }
     RtlZeroMemory(Allocs, InitSz);
-    InMap = FileInfo->Dloc->DataLoc.Mapping;
+//    InMap = FileInfo->Dloc->DataLoc.Mapping;
     UDFCheckSpaceAllocation(Vcb, 0, InMap, AS_USED); // check if used
 
     // TODO: move data from mapped locations here
@@ -2822,8 +2832,10 @@
     NewMap[j].extLength =
     NewMap[j].extLocation = 0;
 
+#ifdef UDF_DBG
     ASSERT(check_size == UDFGetExtentLength(ExtInfo->Mapping));
     ASSERT(check_size == UDFGetExtentLength(NewMap));
+#endif //UDF_DBG
 
     AdPrint(("Pack ExtInfo %x, NewMap %x, OldMap %x\n", ExtInfo, NewMap, OldMap));
     
@@ -2857,7 +2869,7 @@
 
     j=0;
     d = LBS >> Vcb->BlockSizeBits;
-    for(i=0; l = (Mapping[i].extLength & UDF_EXTENT_LENGTH_MASK); i++) {
+    for(i=0; (l = (Mapping[i].extLength & UDF_EXTENT_LENGTH_MASK)); i++) {
         base = Mapping[i].extLocation;
         type = Mapping[i].extLength & UDF_EXTENT_FLAG_MASK;
         for(; l>=(LONG)LBS; j++) {
@@ -2909,7 +2921,7 @@
     PEXTENT_MAP Extent = ExtInfo->Mapping;   // Extent array
     uint32 to_read, Lba, sect_offs, flags, i;
 
-    WCacheStartDirect__(&(Vcb->FastCache), Vcb, TRUE/*FALSE/*ForWrite*/);
+    WCacheStartDirect__(&(Vcb->FastCache), Vcb, TRUE/*FALSE*//*ForWrite*/);
     if(!ExtInfo || !ExtInfo->Mapping) goto EO_IsCached;
     if(!Length) {
         retstat = TRUE;
@@ -3075,7 +3087,7 @@
     int32 SubExtInfoSz = *_SubExtInfoSz;
     int64 Length;
     int64 NextOffset;
-    OSSTATUS status = STATUS_BUFFER_OVERFLOW;
+//    OSSTATUS status = STATUS_BUFFER_OVERFLOW;
 
     (*_SubExtInfo) = NULL;
     (*_SubExtInfoSz) = 0;
@@ -3118,7 +3130,7 @@
         // prepare for reading next frag...
         Length -= to_read;
         if(!Length) {
-            status = STATUS_SUCCESS;
+//            status = STATUS_SUCCESS;
             break;
         }
         ASSERT(to_read);
@@ -3129,8 +3141,10 @@
     return STATUS_SUCCESS;
 } // end UDFReadExtentLocation()
 
+#ifdef _MSC_VER
 #pragma warning(push)               
 #pragma warning(disable:4035)               // re-enable below
+#endif
 
 uint32
 UDFGetZeroLength(
@@ -3147,7 +3161,9 @@
     return Length*sizeof(uint32);
 }
 
+#ifdef _MSC_VER
 #pragma warning(pop) // re-enable warning #4035
+#endif
 
 #ifndef UDF_READ_ONLY_BUILD
 /*
diff -uNrEZbwB /tmp/udffs/udf_info/mount.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/mount.cpp
--- /tmp/udffs/udf_info/mount.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/mount.cpp	2016-06-01 22:02:39.339243615 +0200
@@ -16,6 +17,22 @@
 
 #include "udf.h"
 
+/* FIXME */
+#ifdef XCHG_DD
+#undef XCHG_DD
+#endif
+
+#define XCHG_DD(a,b)              \
+{                                 \
+    ULONG  _temp_;                \
+    PULONG _from_, _to_;          \
+    _from_ = ((PULONG)&(b));      \
+    _to_ =   ((PULONG)&(a));      \
+    _temp_ = *_from_;             \
+    *_from_ = *_to_;              \
+    *_to_ = _temp_;               \
+}
+
 #define         UDF_BUG_CHECK_ID                UDF_FILE_UDF_INFO_MOUNT
 
 OSSTATUS
@@ -184,13 +201,13 @@
     int8* FSBM=NULL;
     uint32 USl, FSl;
     EXTENT_INFO FSBMExtInfo, USBMExtInfo;
-    lb_addr locAddr;
+//    lb_addr locAddr;
     uint32 WrittenBytes;
 
     UDF_CHECK_BITMAP_RESOURCE(Vcb);
 
     plen = UDFPartLen(Vcb, PartNum);
-    locAddr.partitionReferenceNum = (uint16)PartNum;
+//    locAddr.partitionReferenceNum = (uint16)PartNum;
     // prepare bitmaps for updating
 
     status =  UDFPrepareXSpaceBitmap(Vcb, &(phd->unallocatedSpaceBitmap), &USBMExtInfo, &USBM, &USl);
@@ -349,7 +366,7 @@
     OSSTATUS    RC = STATUS_SUCCESS;
     uint32      i, len;
     uint32      WrittenBytes;
-    uint32      lvid_count = 0;
+//    uint32      lvid_count = 0;
     uint32      pSize;
     tag*        PTag;
     LogicalVolIntegrityDesc *lvid;
@@ -387,7 +404,9 @@
     LVID_iUse->numFiles = Vcb->numFiles;
     LVID_iUse->numDirs  = Vcb->numDirs;
 
+#if 0
     UDFSetEntityID_imp(&(LVID_iUse->impIdent), UDF_ID_DEVELOPER);
+#endif
 
     if(Close){
         KdPrint(("UDF: Opening LVID\n"));
@@ -588,7 +607,7 @@
     uint16 ident;
     uint32 WrittenBytes;
     OSSTATUS status = STATUS_SUCCESS;
-    OSSTATUS status2 = STATUS_SUCCESS;
+//    OSSTATUS status2 = STATUS_SUCCESS;
 
     status = UDFUpdateSparingTable(Vcb);
 
@@ -906,8 +925,7 @@
 #ifndef UDF_READ_ONLY_BUILD
     uint32 flags = 0;
 
-    if(((Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY) &&
-       !(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED))
+    if((Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY)
         || !Vcb->Modified)
         return STATUS_SUCCESS;
     // prevent discarding metadata
@@ -982,7 +1000,7 @@
     return STATUS_SUCCESS;
 } // end UDFUmount__()
 
-/*************************************************************************
+/*************************************************************************/
 
 /*
     Find an anchor volume descriptor.
@@ -994,7 +1012,7 @@
     PVCB           Vcb           // Volume control block
     )
 {
-    OSSTATUS    RC = STATUS_SUCCESS;
+//    OSSTATUS    RC = STATUS_SUCCESS;
 
     uint16 ident;
     uint32 i;
@@ -1179,7 +1197,7 @@
     )
 {
     PrimaryVolDesc *pvoldesc;
-    OSSTATUS    RC = STATUS_SUCCESS;
+//    OSSTATUS    RC = STATUS_SUCCESS;
 
     pvoldesc = (PrimaryVolDesc *)Buf;
     KdPrint(("UDF: PrimaryVolDesc:\n"));
@@ -1298,12 +1316,12 @@
             last_loc = loc;
             loc = Vcb->LVid->nextIntegrityExt;
             Vcb->LVid = NULL;
-            MyFreePool__(Buf);
             lvid_count++;
             if(lvid_count > UDF_MAX_LVID_CHAIN_LENGTH) {
                 RC = STATUS_DISK_CORRUPT_ERROR;
                 goto exit_with_err;
             }
+            MyFreePool__(Buf);
             continue;
         }
         // process last LVID
@@ -1450,7 +1468,7 @@
             else if(!strncmp((int8*)&(upm2->partIdent.ident), UDF_ID_METADATA, strlen(UDF_ID_METADATA)))
             {
                 KdPrint(("Found metadata partition\n"));
-                PMETADATA_PARTITION_MAP mpm = (PMETADATA_PARTITION_MAP)(((uint8*)(lvd+1))+offset);
+//                PMETADATA_PARTITION_MAP mpm = (PMETADATA_PARTITION_MAP)(((uint8*)(lvd+1))+offset);
                 Vcb->Partitions[i].PartitionType = UDF_METADATA_MAP25;
                 //status = UDFLoadSparingTable(Vcb, spm);
             }
@@ -1654,9 +1672,9 @@
     )
 {
     int8* tmp;
-    int8* tmp_bm;
-//    uint32 i, lim, j, lba, l, lim2, l2, k;
-    uint32 i, lim, j, lba, lim2;
+//    int8* tmp_bm;
+//    uint32 i, l2, k, lim, j, lim2;
+    uint32 lba;
     lb_addr locAddr;
     OSSTATUS status;
     uint16 Ident;
@@ -1670,7 +1688,7 @@
     KdPrint((" UDFVerifyXSpaceBitmap: part %x\n", PartNum));
 
     if(!(Length = (bm->extLength & UDF_EXTENT_LENGTH_MASK))) return STATUS_SUCCESS;
-    i=UDFPartStart(Vcb, PartNum);
+//    i=UDFPartStart(Vcb, PartNum);
     flags = bm->extLength >> 30;
     if(!flags /*|| flags == EXTENT_NOT_RECORDED_ALLOCATED*/) {
         tmp = (int8*)DbgAllocatePool(NonPagedPool, max(Length, Vcb->BlockSize));
@@ -1693,9 +1711,9 @@
         if(!OS_SUCCESS(status = UDFReadData(Vcb, FALSE, ((uint64)lba)<<Vcb->BlockSizeBits, Length, FALSE, tmp, &ReadBytes)))
             goto err_vfyxsbm_1;
         UDFRegisterFsStructure(Vcb, lba, Length);
-        lim = min(i + ((lim2 = ((PSPACE_BITMAP_DESC)tmp)->numOfBits) << Vcb->LB2B_Bits), Vcb->FSBM_BitCount);
-        tmp_bm = tmp + sizeof(SPACE_BITMAP_DESC);
-        j = 0;
+//        lim = min(i + ((lim2 = ((PSPACE_BITMAP_DESC)tmp)->numOfBits) << Vcb->LB2B_Bits), Vcb->FSBM_BitCount);
+//        tmp_bm = tmp + sizeof(SPACE_BITMAP_DESC);
+//        j = 0;
 /*        for(;(l = UDFGetBitmapLen((uint32*)tmp_bm, j, lim2)) && (i<lim);) {
             // expand LBlocks to Sectors...
             l2 = l << Vcb->LB2B_Bits;
@@ -2315,12 +2333,14 @@
     int8*     Buf
     )
 {
+#ifdef UDF_DBG
     ImpUseVolDesc* iuvd = (ImpUseVolDesc*)Buf;
     ImpUseVolDescImpUse* iuvdiu = (ImpUseVolDescImpUse*)&(iuvd->impUse);
     KdPrint(("UDF: Imp Use Vol Desc:\n"));
     KdPrint((" volDescSeqNum = %x\n", iuvd->volDescSeqNum));
     KdPrint(("UDF: Imp Use Vol Desc Imp Use:\n"));
     KdDump(iuvdiu, sizeof(ImpUseVolDescImpUse));
+#endif
     return STATUS_SUCCESS;
 } // UDFLoadImpUseVolDesc()
 
@@ -2331,7 +2351,7 @@
     )
 {
     KdPrint(("UDF: Unallocated Space Desc:\n"));
-    UnallocatedSpaceDesc* usd = (UnallocatedSpaceDesc*)Buf;
+//    UnallocatedSpaceDesc* usd = (UnallocatedSpaceDesc*)Buf;
     return STATUS_SUCCESS;
 } // UDFLoadImpUseVolDesc()
 
@@ -2350,12 +2370,12 @@
     OSSTATUS    RC = STATUS_SUCCESS;
     int8*       Buf = (int8*)MyAllocatePool__(NonPagedPool,Vcb->BlockSize);
     UDF_VDS_RECORD vds[VDS_POS_LENGTH];
-    GenericDesc   *gd;
+//    GenericDesc   *gd;
     uint32   i,j;
     uint16  ident;
     int8*  Buf2 = NULL;
 
-    __try {
+    _SEH2_TRY {
         if(!Buf) try_return(RC = STATUS_INSUFFICIENT_RESOURCES);
         RtlZeroMemory(vds, sizeof(UDF_VDS_RECORD) * VDS_POS_LENGTH);
         if(!OS_SUCCESS(RC = UDFReadVDS(Vcb, block, lastblock, (PUDF_VDS_RECORD)&vds, Buf)))
@@ -2402,7 +2422,7 @@
                         RC = UDFReadTagged(Vcb,Buf2, j, j, &ident);
                         if(!OS_SUCCESS(RC)) try_return(RC);
                         UDFRegisterFsStructure(Vcb, j, Vcb->BlockSize);
-                        gd = (struct GenericDesc *)Buf2;
+//                        gd = (struct GenericDesc *)Buf2;
                         if(ident == TID_PARTITION_DESC) {
                             RC = UDFLoadPartDesc(Vcb,Buf2);
                             if(!OS_SUCCESS(RC)) try_return(RC);
@@ -2451,12 +2471,12 @@
     OSSTATUS    RC = STATUS_SUCCESS;
     int8*       Buf = (int8*)MyAllocatePool__(NonPagedPool,Vcb->BlockSize);
     UDF_VDS_RECORD vds[VDS_POS_LENGTH];
-    GenericDesc   *gd;
+//    GenericDesc   *gd;
     uint32   i,j;
     uint16  ident;
     int8*  Buf2 = NULL;
 
-    __try {
+    _SEH2_TRY {
         if(!Buf) try_return(RC = STATUS_INSUFFICIENT_RESOURCES);
         if(!block) try_return (RC = STATUS_SUCCESS);
         RtlZeroMemory(vds, sizeof(UDF_VDS_RECORD) * VDS_POS_LENGTH);
@@ -2488,7 +2508,7 @@
                         RC = UDFReadTagged(Vcb,Buf2, j, j, &ident);
                         if(!OS_SUCCESS(RC)) try_return(RC);
                         UDFRegisterFsStructure(Vcb, j, Vcb->BlockSize);
-                        gd = (struct GenericDesc *)Buf2;
+//                        gd = (struct GenericDesc *)Buf2;
                         if(ident == TID_PARTITION_DESC) {
                             RC = UDFVerifyPartDesc(Vcb,Buf2);
                             if(!OS_SUCCESS(RC)) try_return(RC);
@@ -2913,9 +2933,10 @@
     IN uint32 Length
     )
 {
-    BOOLEAN RC = FALSE;
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
+
+    BOOLEAN RC = FALSE;
 
     uint32 len = Length;
     __asm push  ecx
diff -uNrEZbwB /tmp/udffs/udf_info/phys_eject.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/phys_eject.cpp
--- /tmp/udffs/udf_info/phys_eject.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/phys_eject.cpp	2015-06-10 13:33:51.182094830 +0200
@@ -54,7 +55,7 @@
     BOOLEAN SkipEject = FALSE;
     BOOLEAN SkipFlush = FALSE;
 
-    BOOLEAN FlushAndEject = FALSE;
+//    BOOLEAN FlushAndEject = FALSE;
 
     KdPrint(("    UDFEjectReqWaiter: start\n"));
     uint8 supported_evt_classes = 0;
@@ -83,9 +84,6 @@
                 ((PGET_EVENT_USER_IN)(&(WC->EjectReqBuffer)))->Immed = TRUE;
                 ((PGET_EVENT_USER_IN)(&(WC->EjectReqBuffer)))->EventClass = evt_type;
                 
-#ifdef EVALUATION_TIME_LIMIT
-                KeQuerySystemTime(&UDFGlobalData.UDFCurrentTime);
-#endif //EVALUATION_TIME_LIMIT
                 RC = UDFPhSendIOCTL( IOCTL_CDRW_GET_EVENT,
                                      TargetDevObj,
                                      &(WC->EjectReqBuffer),sizeof(GET_EVENT_USER_IN),
@@ -102,10 +100,6 @@
                     supported_evt_classes = WC->EjectReqBuffer.MediaChange.Header.SupportedClasses;
                 }
             }
-        } else {
-#ifdef EVALUATION_TIME_LIMIT
-            KeQuerySystemTime(&UDFGlobalData.UDFCurrentTime);
-#endif //EVALUATION_TIME_LIMIT
         }
         if(!UseEvent)
             break;
@@ -141,15 +135,6 @@
             BM_FlushPriod = Vcb->BM_FlushPriod;
             Tree_FlushPriod = Vcb->Tree_FlushPriod;
 
-#ifdef EVALUATION_TIME_LIMIT
-            if(!UDFGlobalData.LicenseKeyItemStarted) {
-                UDFGlobalData.LicenseKeyItemStarted = TRUE;
-                ExInitializeWorkItem(&(UDFGlobalData.LicenseKeyItem), UDFKeyWaiter, NULL);
-      //            KdPrint(("UDFLicenseWaiter: create thread\n"));
-                ExQueueWorkItem(&(UDFGlobalData.LicenseKeyItem), DelayedWorkQueue);
-            }
-#endif //EVALUATION_TIME_LIMIT
-
             // check if we approaching end of disk
             if(space_check_counter > 2) {
                 // update FreeAllocUnits if it is necessary
@@ -168,10 +153,6 @@
             }
             space_check_counter++;
 
-#ifdef EVALUATION_TIME_LIMIT
-            KeQuerySystemTime(&UDFGlobalData.UDFCurrentTime);
-#endif //EVALUATION_TIME_LIMIT
-
             if(Vcb->VCBFlags & UDF_VCB_SKIP_EJECT_CHECK) {
                 SkipCount++;
                 SkipEjectCount++;
@@ -309,9 +290,7 @@
                             Vcb->Tree_FlushTime));
 
                         // do not touch unchanged volume
-                        if(((Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY) &&
-                            !(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED))
-                                ||
+                        if((Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY) ||
                            !Vcb->Modified)
                             goto skip_BM_flush;
 
@@ -327,11 +306,6 @@
                             }
                             VcbAcquired = TRUE;
                         }
-                        // License Key check
-                        if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-                            Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-                            goto skip_BM_flush;
-                        }
 
                         KdPrint(("UDF: Flushing Directory Tree....\n"));
                         if( BM_FlushPriod &&
@@ -359,8 +333,7 @@
 
 
                         // do not touch unchanged volume
-                        if((Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY) &&
-                           !(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED))
+                        if(Vcb->VCBFlags & UDF_VCB_FLAGS_VOLUME_READ_ONLY)
                             goto skip_BM_flush2;
                         if(!Vcb->Modified)
                             goto skip_BM_flush2;
@@ -631,7 +604,7 @@
                     try_return(RC);
                 }
             }
-            FlushAndEject = TRUE;
+//            FlushAndEject = TRUE;
 device_failure:
             // Ok. Lets flush all we have in memory, dismount volume & eject disc
             // Acquire Vcb resource
@@ -734,7 +707,7 @@
     )
 {
     LARGE_INTEGER delay;
-    OSSTATUS      RC;
+//    OSSTATUS      RC;
     ULONG i;
 
     // flush system cache
@@ -758,7 +731,7 @@
         KdPrint(("  cleanup tray-lock (%d+2):\n", Vcb->MediaLockCount));
         for(i=0; i<Vcb->MediaLockCount+2; i++) {
             Buf->PreventMediaRemoval = FALSE;
-            RC = UDFPhSendIOCTL(IOCTL_STORAGE_MEDIA_REMOVAL,
+            UDFPhSendIOCTL(IOCTL_STORAGE_MEDIA_REMOVAL,
                                 Vcb->TargetDeviceObject,
                                 Buf,sizeof(PREVENT_MEDIA_REMOVAL_USER_IN),
                                 NULL,0,
@@ -798,7 +771,7 @@
                 CBuff.Byte2.Flags = CloseTrkSes_Ses;
                 CBuff.TrackNum = 1;
 
-                RC = UDFPhSendIOCTL(IOCTL_CDRW_CLOSE_TRK_SES,
+                UDFPhSendIOCTL(IOCTL_CDRW_CLOSE_TRK_SES,
                                     Vcb->TargetDeviceObject,
                                     &CBuff,sizeof(CLOSE_TRK_SES_USER_IN),
                                     &CBuff,sizeof(CLOSE_TRK_SES_USER_IN),
@@ -827,7 +800,7 @@
         if(Eject &&
            (Vcb->VCBFlags & UDF_VCB_FLAGS_REMOVABLE_MEDIA)) {
 
-            RC = UDFPhSendIOCTL(IOCTL_STORAGE_EJECT_MEDIA,
+            UDFPhSendIOCTL(IOCTL_STORAGE_EJECT_MEDIA,
                                 Vcb->TargetDeviceObject,
                                 NULL,0,
                                 NULL,0,
diff -uNrEZbwB /tmp/udffs/udf_info/physical.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/physical.cpp
--- /tmp/udffs/udf_info/physical.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/physical.cpp	2015-06-10 13:33:51.178094821 +0200
@@ -16,5 +17,5 @@
 // define the file specific bug-check id
 #define         UDF_BUG_CHECK_ID        UDF_FILE_PHYSICAL
 
-#include "..\Include\Phys_lib.cpp"
+#include "Include/phys_lib.cpp"
 
diff -uNrEZbwB /tmp/udffs/udf_info/remap.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/remap.cpp
--- /tmp/udffs/udf_info/remap.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/remap.cpp	2015-06-18 00:16:14.962692517 +0200
@@ -116,7 +117,7 @@
         w = InterlockedIncrement((PLONG)&(VerifyCtx->WaiterCount));
         KdPrint(("  %d waiters\n", w));
         DbgWaitForSingleObject(&(VerifyCtx->vrfEvent), NULL);
-        if(w = InterlockedDecrement((PLONG)&(VerifyCtx->WaiterCount))) {
+        if((w = InterlockedDecrement((PLONG)&(VerifyCtx->WaiterCount)))) {
             KdPrint(("  still %d waiters, q %d\n", w, VerifyCtx->QueuedCount));
             if(!VerifyCtx->QueuedCount) {
                 KdPrint(("  pulse event\n", w));
@@ -434,7 +435,7 @@
                         }
                     }
                     if(bm) {
-                        UDFSetBit__(bm, vItem->lba);
+                        UDFSetBit(bm, vItem->lba);
                         KdPrint(("Set BB @ %#x\n", vItem->lba));
                     }
 #ifdef _BROWSE_UDF_
@@ -542,7 +543,7 @@
 {
     PVCB Vcb = VerifyReq->Vcb;
     ULONG ReadBytes;
-    OSSTATUS RC;
+//    OSSTATUS RC;
     ULONG i;
 
     ReadBytes = (ULONG)Vcb;
@@ -550,7 +551,7 @@
     if(Vcb->SparingCountFree) {
         WCacheStartDirect__(&(Vcb->FastCache), Vcb, TRUE);
         for(i=0; i<VerifyReq->nReq; i++) {
-            RC = UDFTIOVerify(Vcb,
+            UDFTIOVerify(Vcb,
                            VerifyReq->Buffer,     // Target buffer
                            VerifyReq->vr[i].BCount << Vcb->BlockSizeBits,
                            VerifyReq->vr[i].lba,
@@ -562,7 +563,7 @@
         for(i=0; i<VerifyReq->nReq; i++) {
             KdPrint(("!!! No more space for remap !!!\n"));
             KdPrint(("  try del from verify cache @ %x\n", VerifyReq->vr[i].lba));
-            RC = UDFVRead(Vcb, VerifyReq->Buffer, VerifyReq->vr[i].BCount, VerifyReq->vr[i].lba,
+            UDFVRead(Vcb, VerifyReq->Buffer, VerifyReq->vr[i].BCount, VerifyReq->vr[i].lba,
                           PH_FORGET_VERIFIED | PH_READ_VERIFY_CACHE | PH_TMP_BUFFER);
         }
     }
@@ -774,7 +775,7 @@
     buff = (uint8*)DbgAllocatePoolWithTag(NonPagedPool, Vcb->WriteBlockSize, 'bNWD' );
     if(buff) {
         for(i=0; i<BCount; i+=d) {
-            if(!(LBA+i & (PS-1)) &&
+            if(!((LBA+i) & (PS-1)) &&
                (i+PS <= BCount)) {
                 d = PS;
             } else {
@@ -820,7 +821,7 @@
         BS = Vcb->SparingBlockSize;
 
         // use sparing table for relocation
-        if(Vcb->SparingCountFree == -1) {
+        if(Vcb->SparingCountFree == (ULONG)-1) {
             KdPrint(("calculate free spare areas\n"));
 re_check:
             KdPrint(("verify spare area\n"));
diff -uNrEZbwB /tmp/udffs/udf_info/udf.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/udf.h
--- /tmp/udffs/udf_info/udf.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/udf.h	2015-06-10 13:33:51.178094821 +0200
@@ -1,8 +1,9 @@
 ////////////////////////////////////////////////////////////////////
 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
 // All rights reserved
+// This file was released under the GPLv2 on June 2015.
 ////////////////////////////////////////////////////////////////////
 
-#include "..\..\Include\platform.h"
-#include "..\udffs.h"
-#include "..\NameSup.h"
+#include "Include/platform.h"
+#include "udffs.h"
+#include "namesup.h"
diff -uNrEZbwB /tmp/udffs/udf_info/udf_info.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/udf_info.cpp
--- /tmp/udffs/udf_info/udf_info.cpp	2013-07-24 19:32:05.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/udf_info.cpp	2016-05-30 22:38:51.847127913 +0200
@@ -323,7 +324,7 @@
     return STATUS_SUCCESS;
 } // UDFReadFileEntry()
 
-#ifndef _X86_
+#if !defined (_X86_) || !defined (_MSC_VER)
 /*
     Decides if a Unicode character matches one of a list
     of ASCII characters.
@@ -354,11 +355,15 @@
     Decides whether character passed is an illegal character for a
     DOS file name.
 */
+#ifdef _MSC_VER
 #pragma warning(push)               
 #pragma warning(disable:4035)               // re-enable below
+#endif
 
 #ifdef _X86_
+#ifdef _MSC_VER
 __declspec (naked)
+#endif
 #endif // _X86_
 BOOLEAN
 __fastcall
@@ -367,7 +372,7 @@
     )
 {
     // Genuine illegal char's for DOS.
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
   _asm {
     push ebx
 
@@ -389,11 +394,15 @@
   }
 
 #else   // NO X86 optimization , use generic C/C++
-    return ((ch < 0x20) || UDFUnicodeInString((uint8*)&valid_char_arr, ch));
+    /* FIXME */
+    //return ((ch < 0x20) || UDFUnicodeInString((uint8*)&valid_char_arr, ch));
+    return ((chr < 0x20) || UDFUnicodeInString((uint8*)&valid_char_arr, chr));
 #endif // _X86_
 } // end UDFIsIllegalChar()
 
+#ifdef _MSC_VER
 #pragma warning(pop)  // re-enable warning #4035
+#endif
 
 /*
     Translate udfName to dosName using OSTA compliant.
@@ -698,8 +707,10 @@
     PWCHAR udfName = UdfName->Buffer;
     uint16 udfLen = UdfName->Length / sizeof(WCHAR);
 
-    uint16 index, dosIndex = 0, extIndex = 0;
-    BOOLEAN needsCRC = FALSE, hasExt = FALSE, writingExt = FALSE, isParent = FALSE;
+    uint16 index, dosIndex = 0;
+    //uint16 extIndex = 0;
+    BOOLEAN needsCRC = FALSE, isParent = FALSE;
+    //BOOLEAN hasExt = FALSE, writingExt = FALSE;
     uint16 valueCRC;
     WCHAR ext[DOS_EXT_LEN];
     WCHAR current;
@@ -874,7 +885,7 @@
     /* If the name has illegal characters or and extension, it */
     /* is not a DOS device name. */
 
-/*    if (needsCRC == FALSE && extLen == 0) {
+/*    if (needsCRC == FALSE && extLen == 0) { */
         /* If this is the name of a DOS device, a CRC code should */
         /* be appended to the file name. 
         if (IsDeviceName(udfName, udfLen))
@@ -935,7 +946,7 @@
     AdPrint(("UDF: SetTag Loc=%x(%x), tagIdent=%x\n", TagLoc, Tag->tagLocation, Tag->tagIdent));
 
     if(DataLen) DataLen -= sizeof(tag);
-    int8* Data = ((int8*)Tag) + sizeof(tag);
+//    int8* Data = ((int8*)Tag) + sizeof(tag);
     // Ecma-167 states, that all implementations
     // shall set this field to '3' even if
     // disc contains descriptors recorded with
@@ -969,7 +980,7 @@
 {
     PFILE_ENTRY FileEntry;
     OSSTATUS status;
-    EntityID* eID;
+//    EntityID* eID;
     uint32 l;
     EXTENT_INFO _FEExtInfo;
     uint16* lcp;
@@ -1014,16 +1025,18 @@
     FileEntry->gid = Vcb->DefaultGID;
 
     if(Extended) {
-        eID = &(((PEXTENDED_FILE_ENTRY)FileEntry)->impIdent);
+//        eID = &(((PEXTENDED_FILE_ENTRY)FileEntry)->impIdent);
         lcp = &(((PEXTENDED_FILE_ENTRY)FileEntry)->fileLinkCount);
         ((PEXTENDED_FILE_ENTRY)FileEntry)->checkpoint = 1;
     } else {
-        eID = &(FileEntry->impIdent);
+//        eID = &(FileEntry->impIdent);
         lcp = &(FileEntry->fileLinkCount);
         ((PFILE_ENTRY)FileEntry)->checkpoint = 1;
     }
 
+#if 0
     UDFSetEntityID_imp(eID, UDF_ID_DEVELOPER);
+#endif
 
     /*RtlCopyMemory((int8*)&(eID->ident), UDF_ID_DEVELOPER, sizeof(UDF_ID_DEVELOPER) );
     iis = (impIdentSuffix*)&(eID->identSuffix);
@@ -1514,7 +1527,7 @@
     counter = FileCounter ?
         &(Vcb->numFiles) :
         &(Vcb->numDirs);
-    if(*counter == -1)
+    if(*counter == (ULONG)-1)
         return;
     if(Increase) {
         UDFInterlockedIncrement((int32*)counter);
@@ -1941,13 +1954,13 @@
 
     hCurDirNdx = DirInfo->Dloc->DirIndex;
     // check if we can delete all files
-    for(i=2; CurDirNdx = UDFDirIndex(hCurDirNdx,i); i++) {
+    for(i=2; (CurDirNdx = UDFDirIndex(hCurDirNdx,i)); i++) {
         // try to open Stream
         if(CurDirNdx->FileInfo)
             return STATUS_CANNOT_DELETE;
     }
     // start deletion
-    for(i=2; CurDirNdx = UDFDirIndex(hCurDirNdx,i); i++) {
+    for(i=2; (CurDirNdx = UDFDirIndex(hCurDirNdx,i)); i++) {
         // try to open Stream
         status = UDFOpenFile__(Vcb, FALSE, TRUE, NULL, DirInfo, &FileInfo, &i);
         if(status == STATUS_FILE_DELETED) {
@@ -2021,7 +2034,7 @@
     // some routines may send invalid Index
     if(!(DirNdx = UDFDirIndex(hDirNdx,i)))
         return STATUS_OBJECT_NAME_NOT_FOUND;
-    if(FileInfo = DirNdx->FileInfo) {
+    if((FileInfo = DirNdx->FileInfo)) {
         // file is already opened.
         if((DirNdx->FileCharacteristics & FILE_DELETED) && NotDeleted) {
             AdPrint(("  FILE_DELETED on open\n"));
@@ -2178,7 +2191,7 @@
 {
     uint32 RootLBA;
     OSSTATUS status;
-    uint32 PartNum = RootLoc->partitionReferenceNum;
+//    uint32 PartNum = RootLoc->partitionReferenceNum;
     uint32 LBS = Vcb->LBlockSize;
     uint16 Ident;
     LONG_AD FELoc;
@@ -2298,7 +2311,7 @@
 
     IsASDir = UDFIsAStreamDir(FileInfo);
 
-    if(Dloc = FileInfo->Dloc) {
+    if((Dloc = FileInfo->Dloc)) {
 
 #ifdef UDF_DBG
         DirInfo = FileInfo->ParentFile;
@@ -2340,7 +2353,7 @@
 
         if(Dloc->DirIndex) {
             uint_di i;
-            for(i=2; DirNdx = UDFDirIndex(Dloc->DirIndex,i); i++) {
+            for(i=2; (DirNdx = UDFDirIndex(Dloc->DirIndex,i)); i++) {
                 if(DirNdx->FileInfo) {
                     if(!KeepDloc) {
                         BrutePoint();
@@ -2406,7 +2419,9 @@
 
         if(!KeepDloc) {
 
+#ifdef UDF_DBG
             ASSERT(!Modified);
+#endif // UDF_DBG
 
 #ifndef UDF_TRACK_ONDISK_ALLOCATION
             if(Dloc->DataLoc.Mapping)  MyFreePool__(Dloc->DataLoc.Mapping);
@@ -2424,7 +2439,7 @@
 #endif //UDF_TRACK_ONDISK_ALLOCATION
             if(FileInfo->Dloc->DirIndex) {
                 uint_di i;
-                for(i=2; DirNdx = UDFDirIndex(Dloc->DirIndex,i); i++) {
+                for(i=2; (DirNdx = UDFDirIndex(Dloc->DirIndex,i)); i++) {
                     ASSERT(!DirNdx->FileInfo);
                     if(DirNdx->FName.Buffer)
                         MyFreePool__(DirNdx->FName.Buffer);
@@ -2583,7 +2598,7 @@
     *_FileInfo = NULL;
     BOOLEAN undel = FALSE;
     uint32 ReadBytes;
-    BOOLEAN PackDir = FALSE;
+//    BOOLEAN PackDir = FALSE;
     BOOLEAN FEAllocated = FALSE;
 
     ValidateFileInfo(DirInfo);
@@ -2727,7 +2742,7 @@
 #endif // UDF_LIMIT_DIR_SIZE
             // search for suitable unused entry
             if(UDFDirIndexInitScan(DirInfo, &ScanContext, 2)) {
-                while(DirNdx = UDFDirIndexScan(&ScanContext, NULL)) {
+                while((DirNdx = UDFDirIndexScan(&ScanContext, NULL))) {
                     if((DirNdx->Length == l) && UDFIsDeleted(DirNdx) &&
                        !DirNdx->FileInfo ) {
                         // free unicode-buffer with old name
@@ -2764,7 +2779,7 @@
             DirNdx->Offset = 0;
         }
         // new terminator is recorded by UDFDirIndexGrow()
-        if( ((d = (LBS - (DirNdx->Offset + l + DirInfo->Dloc->DataLoc.Offset) & (LBS-1) )) < sizeof(FILE_IDENT_DESC)) &&
+        if( ((d = ((LBS - (DirNdx->Offset + l + DirInfo->Dloc->DataLoc.Offset)) & (LBS-1) )) < sizeof(FILE_IDENT_DESC)) &&
               d ) {
             // insufficient space at the end of last sector for
             // next FileIdent's tag. fill it with ImpUse data
@@ -2960,7 +2975,7 @@
     // get Lba of the last sector
     Lba = UDFExtentOffsetToLba(Vcb, Extent, Offset, &sect_offs, &to_write, &flags, NULL);
     // EOF check. If we have valid ExtInfo this will not happen, but who knows..
-    if((Lba == -1) ||
+    if((Lba == (uint32)-1) ||
        (flags == EXTENT_NOT_RECORDED_NOT_ALLOCATED))
         return STATUS_END_OF_FILE;
     // write tail
@@ -3040,7 +3055,7 @@
        !(FileInfo->Dloc->FELoc.Mapping)) return STATUS_SUCCESS;
 //    ASSERT(FileInfo->Dloc->FELoc.Mapping[0].extLocation);
     PartNum = UDFGetPartNumByPhysLba(Vcb, FileInfo->Dloc->FELoc.Mapping[0].extLocation);
-    if(PartNum == -1) {
+    if(PartNum == (uint32)-1) {
         KdPrint(("  Is DELETED ?\n"));
         if(DirInfo) {
             PartNum = UDFGetPartNumByPhysLba(Vcb, DirInfo->Dloc->FELoc.Mapping[0].extLocation);
@@ -3186,7 +3201,7 @@
            (j==FileInfo->Index) ) {
             // case-only rename
             uint8* CS0;
-            uint32 Nlen, l, IUl;
+            uint32 Nlen, /* l, FIXME ReactOS */ IUl;
 
             // prepare filename
             UDFCompressUnicode(fn, &CS0, &Nlen);
@@ -3198,7 +3213,9 @@
             // allocate memory for FI
             DirNdx2 = UDFDirIndex(DirInfo2->Dloc->DirIndex,j);
             IUl = DirNdx2->FileInfo->FileIdent->lengthOfImpUse;
+#if 0
             l = (sizeof(FILE_IDENT_DESC) + Nlen + IUl + 3) & ~((uint32)3);
+#endif
             
             RtlCopyMemory( ((uint8*)(DirNdx2->FileInfo->FileIdent+1))+IUl, CS0, Nlen);
             RtlCopyMemory(DirNdx2->FName.Buffer, fn->Buffer, fn->Length);
@@ -3390,7 +3407,7 @@
     if(DirInfo->Dloc->DirIndex) return STATUS_FILE_IS_A_DIRECTORY;
     // create empty DirIndex
     if(DirInfo->FileIdent) DirInfo->FileIdent->fileCharacteristics |= FILE_DIRECTORY;
-    if(CurDirNdx = UDFDirIndex(UDFGetDirIndexByFileInfo(DirInfo),DirInfo->Index))
+    if((CurDirNdx = UDFDirIndex(UDFGetDirIndexByFileInfo(DirInfo),DirInfo->Index)))
         CurDirNdx->FileCharacteristics |= FILE_DIRECTORY;
     ((icbtag*)(DirInfo->Dloc->FileEntry+1))->fileType = UDF_FILE_TYPE_DIRECTORY;
     // init temporary FileInfo
@@ -3409,7 +3426,7 @@
     FEicb.extLocation.logicalBlockNum = UDFPhysLbaToPart(Vcb, PartNum, lba);
     FEicb.extLocation.partitionReferenceNum = (uint16)PartNum;
     RtlZeroMemory(&(FEicb.impUse), sizeof(FEicb.impUse));
-    PName.Buffer = L"";
+    PName.Buffer = (PWCH)L"";
     PName.Length = (PName.MaximumLength = sizeof(L"")) - sizeof(WCHAR);
     if(!OS_SUCCESS(status =
         UDFBuildFileIdent(Vcb, &PName, &FEicb, 0,
@@ -3593,7 +3610,7 @@
     uint32 ReadBytes;
     uint32 root;
     uint16 PartNum;
-    uint32 VatFirstLba = 0;
+//    uint32 VatFirstLba = 0;
     int8* VatOldData;
     uint32 VatLba[6] = { Vcb->LastLBA,
                         Vcb->LastLBA - 2,
@@ -3830,7 +3847,7 @@
     uint_di i;
     PDIR_INDEX_ITEM CurDirNdx;
     // not empty
-    for(i=2; CurDirNdx = UDFDirIndex(hCurDirNdx,i); i++) {
+    for(i=2; (CurDirNdx = UDFDirIndex(hCurDirNdx,i)); i++) {
         fc = CurDirNdx->FileCharacteristics;
         if(!(fc & (FILE_PARENT | FILE_DELETED)) &&
            CurDirNdx->Length)
@@ -3874,7 +3891,7 @@
     UDFReTagDirectory(Vcb, FileInfo);
     if(FileInfo->Dloc->DataLoc.Modified ||
        FileInfo->Dloc->AllocLoc.Modified) {
-        ASSERT(PartNum != (-1));
+        ASSERT(PartNum != (uint32)(-1));
         // prepare new AllocDescs for flushing...
         if(!OS_SUCCESS(status = UDFBuildAllocDescs(Vcb, PartNum, FileInfo, &NewAllocDescs))) {
             KdPrint(("  FlushFE: UDFBuildAllocDescs() faliled (%x)\n", status));
@@ -3931,9 +3948,9 @@
     }*/
     if((FileInfo->Dloc->FE_Flags & UDF_FE_FLAG_FE_MODIFIED) ||
         FileInfo->Dloc->FELoc.Modified) {
-        ASSERT(PartNum != (-1));
+        ASSERT(PartNum != (uint32)(-1));
         ASSERT(!PartNum);
-        if(PartNum == (-1) || PartNum == (-2)) {
+        if(PartNum == (uint32)(-1) || PartNum == (uint32)(-2)) {
             KdPrint(("  bad PartNum: %d\n", PartNum));
         }
         // update lengthAllocDescs in FE
@@ -4057,13 +4074,13 @@
 #ifndef UDF_READ_ONLY_BUILD
     if((DirNdx->FI_Flags & UDF_FI_FLAG_FI_MODIFIED)) {
         // flush FileIdent
-        ASSERT(PartNum != (-1));
+        ASSERT(PartNum != (uint32)(-1));
         FileInfo->FileIdent->fileCharacteristics = DirNdx->FileCharacteristics;
         lba = UDFExtentOffsetToLba(Vcb, DirInfo->Dloc->DataLoc.Mapping,
                                         DirNdx->Offset, NULL, NULL, NULL, NULL);
         AdPrint(("  FI lba %x\n", lba));
         // check if requested Offset is allocated
-        if(lba == LBA_OUT_OF_EXTENT) {
+        if(lba == (uint32)LBA_OUT_OF_EXTENT) {
             // write 1 byte
             if(!OS_SUCCESS(status = UDFWriteFile__(Vcb, DirInfo, DirNdx->Offset, 1, FALSE, (int8*)(FileInfo->FileIdent), &WrittenBytes) )) {
                 BrutePoint();
@@ -4073,7 +4090,7 @@
                                             DirNdx->Offset, NULL, NULL, NULL, NULL);
             AdPrint(("  allocated FI lba %x\n", lba));
             // check if requested Offset is allocated
-            if(lba == LBA_OUT_OF_EXTENT) {
+            if(lba == (uint32)LBA_OUT_OF_EXTENT) {
                 BrutePoint();
                 return STATUS_UNSUCCESSFUL;
             }
@@ -4111,7 +4128,7 @@
 
     ASSERT(FileInfo->Dloc->FELoc.Mapping[0].extLocation);
     PartNum = UDFGetPartNumByPhysLba(Vcb, FileInfo->Dloc->FELoc.Mapping[0].extLocation);
-    if(PartNum == -1) {
+    if(PartNum == (uint32)-1) {
         KdPrint(("  Is DELETED ?\n"));
         if(FileInfo->ParentFile) {
             PartNum = UDFGetPartNumByPhysLba(Vcb, FileInfo->ParentFile->Dloc->FELoc.Mapping[0].extLocation);
@@ -4258,10 +4275,12 @@
     This routine computes 32-bit hash based on CRC-32 from SSH
  */
 
+#ifdef _MSC_VER
 #pragma warning(push)               
 #pragma warning(disable:4035)               // re-enable below
+#endif
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 __declspec (naked)
 #endif // _X86_
 uint32 
@@ -4271,7 +4290,7 @@
     IN uint32 len // EDX
     )
 {
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 //    uint32 _Size = len;
 
     __asm {
@@ -4327,7 +4346,7 @@
     The polynomial used is: x^16 + x^12 + x^15 + 1
 */
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 __declspec (naked)
 #endif // _X86_
 uint16 
@@ -4337,7 +4356,7 @@
     uint32 n  // EDX
     )
 {
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 //    uint32 _Size = n;
 
     __asm {
@@ -4393,7 +4412,7 @@
 #endif // _X86_
 } // end UDFUnicodeCksum()
 
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 __declspec (naked)
 #endif // _X86_
 uint16 
@@ -4403,7 +4422,7 @@
     uint32 n  // EDX
     )
 {
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 //    uint32 _Size = n;
 
     __asm {
@@ -4498,7 +4517,7 @@
     The OSTA-UDF(tm) 1.50 standard states that using CRCs is mandatory.
     The polynomial used is: x^16 + x^12 + x^15 + 1
 */
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 __declspec (naked)
 #endif // _X86_
 uint16 
@@ -4508,7 +4527,7 @@
     IN uint32 Size  // EDX
     )
 {
-#ifdef _X86_
+#if defined (_X86_) && defined (_MSC_VER)
 //    uint32 _Size = Size;
 
     __asm {
@@ -4554,7 +4573,9 @@
 
 } // end UDFCrc()
 
+#ifdef _MSC_VER
 #pragma warning(pop)    // re-enable warning #4035
+#endif
 
 /*
     Read the first block of a tagged descriptor & check it.
@@ -4572,7 +4593,7 @@
     tag* PTag = (tag*)Buf;
 //    icbtag* Icb = (icbtag*)(Buf+1);
     uint8 checksum;
-    int i;
+    unsigned int i;
     uint32 ReadBytes;
     int8* tb;
 
@@ -4957,7 +4978,7 @@
     if((Ident = FileInfo->Dloc->FileEntry->tagIdent) != TID_EXTENDED_FILE_ENTRY) {
         return STATUS_NOT_FOUND;
     }
-    if(SDirInfo = FileInfo->Dloc->SDirInfo) {
+    if((SDirInfo = FileInfo->Dloc->SDirInfo)) {
         // it is already opened. Good...
     
         // check if we have Deleted SDir
@@ -5126,7 +5147,9 @@
         eID = &(((PFILE_ENTRY)(VatFileInfo->Dloc->FileEntry))->impIdent);
     }
 
+#if 0
     UDFSetEntityID_imp(eID, UDF_ID_DEVELOPER);
+#endif
 
 /*    RtlCopyMemory((int8*)&(eID->ident), UDF_ID_DEVELOPER, sizeof(UDF_ID_DEVELOPER) );
     iis = (impIdentSuffix*)&(eID->identSuffix);
@@ -5481,7 +5504,7 @@
 
     if((((PFILE_ENTRY)(FileInfo->Dloc->FileEntry))->icbTag.flags & ICB_FLAG_ALLOC_MASK) == ICB_FLAG_AD_IN_ICB) {
 
-        if(l = (uint32)(FileInfo->Dloc->DataLoc.Length) ) {
+        if((l = (uint32)(FileInfo->Dloc->DataLoc.Length))) {
 
             int8* tmp_buff = (int8*)MyAllocatePool__(NonPagedPool, l);
             if(!tmp_buff) {
diff -uNrEZbwB /tmp/udffs/udf_info/udf_info.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/udf_info.h
--- /tmp/udffs/udf_info/udf_info.h	2013-07-24 19:32:05.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/udf_info.h	2015-06-10 13:33:51.186094840 +0200
@@ -1,15 +1,16 @@
 ////////////////////////////////////////////////////////////////////
 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
 // All rights reserved
+// This file was released under the GPLv2 on June 2015.
 ////////////////////////////////////////////////////////////////////
 
 #ifndef __UDF_STRUCT_SUPPORT_H__
 #define __UDF_STRUCT_SUPPORT_H__
 
-#include "Ecma_167.h"
+#include "ecma_167.h"
 #include "osta_misc.h"
 #include "udf_rel.h"
-#include "..\wcache.h"
+#include "wcache.h"
 
 // memory re-allocation (returns new buffer size)
 uint32    UDFMemRealloc(IN int8* OldBuff,     // old buffer
@@ -276,7 +277,7 @@
 #define UDFCheckSpaceAllocation(Vcb, FileInfo, Map, asXXX) \
     UDFCheckSpaceAllocation_(Vcb, Map, asXXX);
 #endif //UDF_TRACK_ONDISK_ALLOCATION
-#else UDF_CHECK_DISK_ALLOCATION
+#else // UDF_CHECK_DISK_ALLOCATION
 #define UDFCheckSpaceAllocation(Vcb, FileInfo, Map, asXXX) {;}
 #endif //UDF_CHECK_DISK_ALLOCATION
 
@@ -693,8 +694,11 @@
     return UDFReadExtentLocation(Vcb, &(FileInfo->Dloc->DataLoc), Offset, SubExtInfo, SubExtInfoSz, NextOffset);
 } // end UDFReadFile__()*/
 
-//#define UDFReadFile__(Vcb, FileInfo, Offset, Length, Direct, Buffer, ReadBytes)  \
-//    (UDFReadExtent(Vcb, &((FileInfo)->Dloc->DataLoc), Offset, Length, Direct, Buffer, ReadBytes))
+/*
+#define UDFReadFile__(Vcb, FileInfo, Offset, Length, Direct, Buffer, ReadBytes)  \
+    (UDFReadExtent(Vcb, &((FileInfo)->Dloc->DataLoc), Offset, Length, Direct, Buffer, ReadBytes))
+*/
+
 // zero data in file described by FileInfo
 __inline
 OSSTATUS UDFZeroFile__(IN PVCB Vcb,
diff -uNrEZbwB /tmp/udffs/udf_info/udf_rel.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/udf_rel.h
--- /tmp/udffs/udf_info/udf_rel.h	2013-07-24 19:32:05.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udf_info/udf_rel.h	2015-06-10 13:33:51.178094821 +0200
@@ -19,8 +20,8 @@
 #ifndef _UDF_REL_H_
 #define _UDF_REL_H_
 
-#include "..\..\Include\platform.h"
-#include "Ecma_167.h"
+#include "Include/platform.h"
+#include "ecma_167.h"
 
 #ifdef UDF_LIMIT_DIR_SIZE
 typedef uint8 uint_di;
@@ -422,8 +423,8 @@
 #define UNICODE_PERIOD    0x002E
 #define UNICODE_SPACE     0x0020
 
-#define LBA_OUT_OF_EXTENT       ((LONG)(-1))
-#define LBA_NOT_ALLOCATED       ((LONG)(-2))
+#define LBA_OUT_OF_EXTENT       ((ULONG)(-1))
+#define LBA_NOT_ALLOCATED       ((ULONG)(-2))
 
 typedef struct _EXT_RELOCATION_ENTRY {
     uint32 extLength;
diff -uNrEZbwB /tmp/udffs/udfinit.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udfinit.cpp
--- /tmp/udffs/udfinit.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/udfinit.cpp	2015-06-10 13:33:51.174094812 +0200
@@ -23,55 +24,6 @@
 // global variables are declared here
 UDFData                 UDFGlobalData;
 
-#ifdef EVALUATION_TIME_LIMIT
-
-ULONG   PresentDateMask = 0;
-BOOLEAN TrialEndOnStart = FALSE;
-
-#define UDF_MD5Init      UDF_MD5Init2
-#define UDF_MD5Update    UDF_MD5Update2
-#define UDF_MD5Pad       UDF_MD5Pad2
-#define UDF_MD5Final     UDF_MD5Final2
-#define UDF_MD5End       UDF_MD5End2
-#define UDF_MD5Transform UDF_MD5Transform2
-#define UDF_Encode       UDF_Encode2
-#define UDF_Decode       UDF_Decode2
-#define PADDING          PADDING2
-
-#define ROTATE_LEFT      ROTATE_LEFT2
-#define FF               FF2
-#define GG               GG2
-#define HH               HH2
-#define II               II2
-
-#define UDF_MD5Transform_dwords   UDF_MD5Transform_dwords2
-#define UDF_MD5Transform_idx      UDF_MD5Transform_idx2
-#define UDF_MD5Transform_Sxx      UDF_MD5Transform_Sxx2
-#define UDF_MD5Rotate             UDF_MD5Rotate2
-
-#include "..\Include\md5.h"
-#include "..\Include\md5c.c"
-
-#define UDF_FibonachiNum UDF_FibonachiNum2
-#define XPEHb            XPEHb2
-#define UDF_build_long_key    UDF_build_long_key2
-#define UDF_build_hash_by_key UDF_build_hash_by_key2
-
-#include "..\Include\key_lib.h"
-#include "..\Include\key_lib.cpp"
-
-extern ULONG UDFNumberOfKeys;
-extern PCHAR pUDFLongKey;
-extern PUDF_KEY_LIST pUDFKeyList;
-extern PUCHAR pRegKeyName0;
-
-#include "..\Include\protect.h"
-#define INCLUDE_XOR_DECL_ONLY
-#include "..\Include\protect.h"
-#undef INCLUDE_XOR_DECL_ONLY
-
-#endif //EVALUATION_TIME_LIMIT
-
 #define KD_PREFIX
 
 struct UDF_MEDIA_CLASS_NAMES UDFMediaClassName[] = {
@@ -94,7 +46,7 @@
 
 WORK_QUEUE_ITEM    RemountWorkQueueItem;
 
-ptrFsRtlNotifyVolumeEvent FsRtlNotifyVolumeEvent = NULL;
+//ptrFsRtlNotifyVolumeEvent FsRtlNotifyVolumeEvent = NULL;
 
 HANDLE  FsNotification_ThreadId = (HANDLE)(-1);
 
@@ -131,6 +83,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 DriverEntry(
     PDRIVER_OBJECT  DriverObject,       // created by the I/O sub-system
     PUNICODE_STRING RegistryPath        // path to the registry key
@@ -139,46 +92,34 @@
     NTSTATUS        RC = STATUS_SUCCESS;
     UNICODE_STRING  DriverDeviceName;
     UNICODE_STRING  unicodeDeviceName;
-    BOOLEAN         RegisteredShutdown = FALSE;
+//    BOOLEAN         RegisteredShutdown = FALSE;
     BOOLEAN         InternalMMInitialized = FALSE;
-    BOOLEAN         DLDetectInitialized = FALSE;
-    ULONG           CdRomNumber;
-    CCHAR           deviceNameBuffer[MAXIMUM_FILENAME_LENGTH];
-    ANSI_STRING     deviceName;
-    UNICODE_STRING  unicodeCdRomDeviceName;
+//    BOOLEAN         DLDetectInitialized = FALSE;
+//    ULONG           CdRomNumber;
+//    CCHAR           deviceNameBuffer[MAXIMUM_FILENAME_LENGTH];
+//    ANSI_STRING     deviceName;
+//    UNICODE_STRING  unicodeCdRomDeviceName;
     PUDFFS_DEV_EXTENSION FSDevExt;
     HKEY            hUdfRootKey;
-#ifdef EVALUATION_TIME_LIMIT
-    WCHAR           RegPath[128];
-    WCHAR           RegKeyName[64];
-    CHAR            LicenseKey[16+1];
-    ULONG           iVer;
-
-    ULONG i, j;
-    int checksum[4] = {0,0,0,0};
-#else
     LARGE_INTEGER   delay;
-#endif //EVALUATION_TIME_LIMIT
-
-    KdPrint(("UDF: Entered " VER_STR_PRODUCT_NAME " UDF DriverEntry \n"));
-    KdPrint((KD_PREFIX "Build " VER_STR_PRODUCT "\n"));
 
-#ifdef EVALUATION_TIME_LIMIT
-    BrutePoint();
-#endif //EVALUATION_TIME_LIMIT
+//    KdPrint(("UDF: Entered " VER_STR_PRODUCT_NAME " UDF DriverEntry \n"));
+//    KdPrint((KD_PREFIX "Build " VER_STR_PRODUCT "\n"));
 
-    __try {
-        __try {
-
-#ifdef EVALUATION_TIME_LIMIT
-            LARGE_INTEGER cTime;
-#endif //EVALUATION_TIME_LIMIT
+    _SEH2_TRY {
+        _SEH2_TRY {
         
+/*
             CrNtInit(DriverObject, RegistryPath);
 
             //PsGetVersion(&MajorVersion, &MinorVersion, &BuildNumber, NULL);
             KdPrint(("UDF: OS Version Major: %x, Minor: %x, Build number: %d\n",
                                 MajorVersion, MinorVersion, BuildNumber));
+*/
+#ifdef __REACTOS__
+            KdPrint(("UDF Init: OS should be ReactOS\n"));
+#endif
+
             // initialize the global data structure
             RtlZeroMemory(&UDFGlobalData, sizeof(UDFGlobalData));
 
@@ -186,159 +127,6 @@
             UDFGlobalData.NodeIdentifier.NodeType = UDF_NODE_TYPE_GLOBAL_DATA;
             UDFGlobalData.NodeIdentifier.NodeSize = sizeof(UDFGlobalData);
 
-#ifdef EVALUATION_TIME_LIMIT
-
-            KeQuerySystemTime((PLARGE_INTEGER)&cTime);
-
-            {
-                uint64 t, t2;
-                t = cTime.QuadPart / 100;
-                t /= 60;
-                t /= 200*120*24;
-                t /= 250;
-                t2 = (int32)t;
-                KdPrint((KD_PREFIX "t2 = %x\n", t2));
-                if(t2-TIME_JAN_1_2003 > UDF_MAX_DATE ||
-                   t2-TIME_JAN_1_2003 < UDF_MIN_DATE) {
-                    KdPrint((KD_PREFIX "Ssytem time is out of range: %x <= %x <= %x\n",
-                            UDF_MIN_DATE, (uint32)t2-TIME_JAN_1_2003, UDF_MAX_DATE));
-                    UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-                }
-            }
-
-            if(UDFGetTrialEnd(&iVer)) {
-                TrialEndOnStart = TRUE;
-                KdPrint((KD_PREFIX "Eval time expired some time ago\n"));
-                UDFGlobalData.UDFFlags = (UDFGlobalData.UDFFlags & ~UDF_DATA_FLAGS_UNREGISTERED) + UDF_DATA_FLAGS_UNREGISTERED;
-            }
-            cTime.QuadPart /= (10*1000*1000);
-            cTime.QuadPart /= (60*60*24);
-
-            KdPrint((KD_PREFIX "cTime = %x, jTime = %x\n", cTime.LowPart, TIME_JAN_1_2003));
-            if(cTime.QuadPart < TIME_JAN_1_2003) {
-                KdPrint((KD_PREFIX "System time %x < TIME_JAN_1_2003\n", cTime.LowPart));
-                UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-            }
-            cTime.LowPart -= TIME_JAN_1_2003;
-            KdPrint(("cTime = %x\n", cTime.LowPart));
-
-            if(!UDFGetInstallVersion((PULONG)&iVer) ||
-               !UDFGetInstallTime((PULONG)&cTime.HighPart)) {
-                KdPrint((KD_PREFIX "UDFGetInstallTime() or UDFGetInstallVersion() failed\n"));
-                UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-            } else {
-                KdPrint((KD_PREFIX "cTime = %x, iTime = %x\n", cTime.LowPart, cTime.HighPart));
-                if(iVer > UDF_CURRENT_BUILD) {
-                    KdPrint(("Init: Detected newer build (0)\n"));
-                    UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-                }
-                if((ULONG)cTime.LowPart < (ULONG)cTime.HighPart) {
-                    KdPrint(("Eval time expired: current (%x) < install (%x)\n",
-                             cTime.LowPart, cTime.HighPart));
-                    UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-                }
-                if((ULONG)cTime.LowPart > (ULONG)cTime.HighPart + EVALUATION_TERM) {
-                    KdPrint(("Eval time expired above EVALUATION_TERM\n"));
-                    UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-                }
-                if((cTime.HighPart >> 16) & 0x8000) {
-                    KdPrint(("Eval time expired (negative install time)\n"));
-                    UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-                }
-            }
-            if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-                WCHAR s[16];
-                ULONG type, sz;
-                ULONG d;
-                PVOID pdata;
-
-                KdPrint(("Init: unregistered (3). Write BIAKAs to Registry\n"));
-                UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-
-                // End of trial
-                d = 1 ^ XOR_VAR(TrialEnd, 0);
-                swprintf(s, L"0x%8.8x\0", d);
-                GET_TRIAL_REG_KEY_NAME(RegPath, 0);
-                GET_TRIAL_REG_VAL_NAME(RegKeyName, 0);
-                type = GET_XXX_REG_VAL_TYPE(TRIAL, 0) ? REG_SZ : REG_DWORD;
-                pdata = GET_XXX_REG_VAL_TYPE(TRIAL, 0) ? (PVOID)s : (PVOID)&d;
-                sz = GET_XXX_REG_VAL_TYPE(TRIAL, 0) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-                KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-                RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                                      RegPath, RegKeyName,
-                                      type, pdata, sz );
-                KdPrint(("status %#x\n", RC));
-                d = 1 ^ XOR_VAR(TrialEnd, 1);
-                swprintf(s, L"0x%8.8x\0", d);
-                GET_TRIAL_REG_KEY_NAME(RegPath, 1);
-                GET_TRIAL_REG_VAL_NAME(RegKeyName, 1);
-                type = GET_XXX_REG_VAL_TYPE(TRIAL, 1) ? REG_SZ : REG_DWORD;
-                pdata = GET_XXX_REG_VAL_TYPE(TRIAL, 1) ? (PVOID)s : (PVOID)&d;
-                sz = GET_XXX_REG_VAL_TYPE(TRIAL, 1) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-                KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-                RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                                      RegPath, RegKeyName,
-                                      type, pdata, sz );
-                KdPrint(("status %#x\n", RC));
-                // Install Date
-                if(!TrialEndOnStart) {
-                    d = UDFGlobalData.iTime ^ XOR_VAR(Date, 0);
-                    swprintf(s, L"0x%8.8x\0", d);
-                    GET_DATE_REG_KEY_NAME(RegPath, 0);
-                    GET_DATE_REG_VAL_NAME(RegKeyName, 0);
-                    type = GET_XXX_REG_VAL_TYPE(DATE, 0) ? REG_SZ : REG_DWORD;
-                    pdata = GET_XXX_REG_VAL_TYPE(DATE, 0) ? (PVOID)s : (PVOID)&d;
-                    sz = GET_XXX_REG_VAL_TYPE(DATE, 0) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-                    if(!(PresentDateMask & (1 << 0))) {
-                        KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-                        RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                                              RegPath, RegKeyName,
-                                              type, pdata, sz );
-                        KdPrint(("status %#x\n", RC));
-                    }
-                    d = UDFGlobalData.iTime ^ XOR_VAR(Date, 1);
-                    swprintf(s, L"0x%8.8x\0", d);
-                    GET_DATE_REG_KEY_NAME(RegPath, 1);
-                    GET_DATE_REG_VAL_NAME(RegKeyName, 1);
-                    type = GET_XXX_REG_VAL_TYPE(DATE, 1) ? REG_SZ : REG_DWORD;
-                    pdata = GET_XXX_REG_VAL_TYPE(DATE, 1) ? (PVOID)s : (PVOID)&d;
-                    sz = GET_XXX_REG_VAL_TYPE(DATE, 1) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-                    if(!(PresentDateMask & (1 << 1))) {
-                        KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-                        RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                                              RegPath, RegKeyName,
-                                              type, pdata, sz );
-                        KdPrint(("status %#x\n", RC));
-                    }
-                }
-                // Highest version
-                d = UDFGlobalData.iVer ^ XOR_VAR(Version, 0);
-                swprintf(s, L"0x%8.8x\0", d);
-                GET_VERSION_REG_KEY_NAME(RegPath, 0);
-                GET_VERSION_REG_VAL_NAME(RegKeyName, 0);
-                type = GET_XXX_REG_VAL_TYPE(VERSION, 0) ? REG_SZ : REG_DWORD;
-                pdata = GET_XXX_REG_VAL_TYPE(VERSION, 0) ? (PVOID)s : (PVOID)&d;
-                sz = GET_XXX_REG_VAL_TYPE(VERSION, 0) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-                KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-                RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                                      RegPath, RegKeyName,
-                                      type, pdata, sz );
-                KdPrint(("status %#x\n", RC));
-                d = UDFGlobalData.iVer ^ XOR_VAR(Version, 1);
-                swprintf(s, L"0x%8.8x\0", d);
-                GET_VERSION_REG_KEY_NAME(RegPath, 1);
-                GET_VERSION_REG_VAL_NAME(RegKeyName, 1);
-                type = GET_XXX_REG_VAL_TYPE(VERSION, 1) ? REG_SZ : REG_DWORD;
-                pdata = GET_XXX_REG_VAL_TYPE(VERSION, 1) ? (PVOID)s : (PVOID)&d;
-                sz = GET_XXX_REG_VAL_TYPE(VERSION, 1) ? (10+1+1)*sizeof(WCHAR) : sizeof(d);
-                KdPrint(("%ws\n  %ws\n", RegPath, RegKeyName));
-                RC = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE /*| RTL_REGISTRY_OPTIONAL*/,
-                                      RegPath, RegKeyName,
-                                      type, pdata, sz );
-                KdPrint(("status %#x\n", RC));
-            }
-#endif //EVALUATION_TIME_LIMIT
-
             // initialize the global data resource and remember the fact that
             //  the resource has been initialized
             RC = UDFInitializeResourceLite(&(UDFGlobalData.GlobalDataResource));
@@ -352,7 +140,7 @@
             // keep a ptr to the driver object sent to us by the I/O Mgr
             UDFGlobalData.DriverObject = DriverObject;
 
-            SeEnableAccessToExports();
+            //SeEnableAccessToExports();
 
             // initialize the mounted logical volume list head
             InitializeListHead(&(UDFGlobalData.VCBQueue));
@@ -381,17 +169,9 @@
 
             RegTGetKeyHandle(NULL, UDFGlobalData.SavedRegPath.Buffer, &hUdfRootKey);
 
-            UDFGlobalData.UnicodeStrRoot.Buffer = L"\\"; //(PWCHAR)&(UDFGlobalData.UnicodeStrRootBuffer);
-            UDFGlobalData.UnicodeStrRoot.Length = sizeof(WCHAR);
-            UDFGlobalData.UnicodeStrRoot.MaximumLength = 2*sizeof(WCHAR);
-
-            UDFGlobalData.UnicodeStrSDir.Buffer = L":";
-            UDFGlobalData.UnicodeStrSDir.Length = sizeof(WCHAR);
-            UDFGlobalData.UnicodeStrSDir.MaximumLength = 2*sizeof(WCHAR);
-
-            UDFGlobalData.AclName.Buffer = UDF_SN_NT_ACL;
-            UDFGlobalData.AclName.Length =
-            (UDFGlobalData.AclName.MaximumLength = sizeof(UDF_SN_NT_ACL)) - sizeof(WCHAR);
+            RtlInitUnicodeString(&UDFGlobalData.UnicodeStrRoot, L"\\");
+            RtlInitUnicodeString(&UDFGlobalData.UnicodeStrSDir, L":");
+            RtlInitUnicodeString(&UDFGlobalData.AclName, UDF_SN_NT_ACL);
 
             KdPrint(("UDF: Init delayed close queues\n"));
 #ifdef UDF_DELAYED_CLOSE
@@ -421,15 +201,12 @@
             // initialize the IRP major function table, and the fast I/O table
             UDFInitializeFunctionPointers(DriverObject);
 
-            UDFGlobalData.CPU_Count = *KeNumberProcessors;
-#ifdef EVALUATION_TIME_LIMIT
-            UDFGlobalData.Saved_j = 4;
-#endif //EVALUATION_TIME_LIMIT
+            UDFGlobalData.CPU_Count = KeNumberProcessors;
 
             // create a device object representing the driver itself
             //  so that requests can be targeted to the driver ...
             //  e.g. for a disk-based FSD, "mount" requests will be sent to
-            //        this device object by the I/O Manager.\
+            //        this device object by the I/O Manager.
             //        For a redirector/server, you may have applications
             //        send "special" IOCTL's using this device object ...
 
@@ -535,62 +312,15 @@
             FsRegistered = TRUE;
 
             KdPrint(("UDF: IoRegisterFsRegistrationChange()\n"));
-            IoRegisterFsRegistrationChange( DriverObject, UDFFsNotification );
+            IoRegisterFsRegistrationChange( DriverObject, (PDRIVER_FS_NOTIFICATION)UDFFsNotification );
 
 //            delay.QuadPart = -10000000;
 //            KeDelayExecutionThread(KernelMode, FALSE, &delay);        //10 microseconds
 
-#ifdef EVALUATION_TIME_LIMIT
-            // Build Registry Value name for License Key 
-            for(i=0; i<UDFNumberOfKeys; i++) {
-                for(j=0; j<4; j++) {
-                    checksum[j] += pUDFKeyList[i].d[j];
-                }
-            }
-
-            // Read Key
-            for(i=0; i<sizeof(UDF_LICENSE_KEY_USER)-1; i++) {
-                RegKeyName[i] = pRegKeyName0[(i*sizeof(UDF_LICENSE_KEY_USER))] ^ (UCHAR)(checksum[i%4] ^ (checksum[i%4] >> 16));
-            }
-            RegKeyName[i] = 0;
-
-//            RtlZeroMemory(UDFGlobalData.LicenseKeyW, sizeof(UDFGlobalData.LicenseKeyW));
-            RegTGetStringValue(hUdfRootKey, NULL,
-                                              RegKeyName, UDFGlobalData.LicenseKeyW, (16+1)*sizeof(WCHAR));
-//                UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-//            }
-            RegTCloseKeyHandle(hUdfRootKey);
-
-            UDFGlobalData.LicenseKeyW[16] = 0;
-            // convert WCHAR Key to CHAR key
-            for(i=0; i<16; i++) {
-                LicenseKey[i] = (UCHAR)(UDFGlobalData.LicenseKeyW[i]);
-            }
-
-            // build hash
-            UDF_build_hash_by_key(pUDFLongKey, UDF_LONG_KEY_SIZE, (PCHAR)&(UDFGlobalData.CurrentKeyHash), LicenseKey);
-            // check if it is correct
-            for(i=0; i<UDFNumberOfKeys; i++) {
-                for(j=0; j<4; j++) {
-                    if(pUDFKeyList[i].d[j] ^ UDFGlobalData.CurrentKeyHash.d[j]) {
-                        break;
-                    }
-                }
-                if(j==4)
-                    break;
-            }
-            if((UDFGlobalData.Saved_j = j) == 4) {
-                UDFGlobalData.UDFFlags &= ~UDF_DATA_FLAGS_UNREGISTERED;
-            } else {
-                if(!(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED)) {
-                    UDFGlobalData.Saved_j = 4;
-                }
-            }
-#else //EVALUATION_TIME_LIMIT
            delay.QuadPart = -10000000; // 1 sec
            KeDelayExecutionThread(KernelMode, FALSE, &delay);
-#endif //EVALUATION_TIME_LIMIT
 
+#if 0
             if(!WinVer_IsNT) {
                 /*ExInitializeWorkItem(&RemountWorkQueueItem, UDFRemountAll, NULL);
                 KdPrint(("UDFDriverEntry: create remount thread\n"));
@@ -623,18 +353,19 @@
                 }
 
             }
+#endif
             RC = STATUS_SUCCESS;
 
-        } __except (EXCEPTION_EXECUTE_HANDLER) {
+        } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
             // we encountered an exception somewhere, eat it up
             KdPrint(("UDF: exception\n"));
-            RC = GetExceptionCode();
-        }
+            RC = _SEH2_GetExceptionCode();
+        } _SEH2_END;
 
         InternalMMInitialized = FALSE;
 
         try_exit:   NOTHING;
-    } __finally {
+    } _SEH2_FINALLY {
         // start unwinding if we were unsuccessful
         if (!NT_SUCCESS(RC)) {
             KdPrint(("UDF: failed with status %x\n", RC));
@@ -709,6 +440,7 @@
 *
 *************************************************************************/
 VOID
+NTAPI
 UDFInitializeFunctionPointers(
     PDRIVER_OBJECT      DriverObject       // created by the I/O sub-system
     )
@@ -753,9 +485,7 @@
     // functions.
     DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = UDFQueryVolInfo;
 #ifndef UDF_READ_ONLY_BUILD
-#ifndef DEMO
     DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = UDFSetVolInfo;
-#endif //DEMO
 #endif //UDF_READ_ONLY_BUILD
     DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL]   = UDFDirControl;
     // To implement support for file system IOCTL calls, enable initialization
@@ -779,16 +509,14 @@
 #ifdef UDF_ENABLE_SECURITY
     DriverObject->MajorFunction[IRP_MJ_QUERY_SECURITY]   = UDFGetSecurity;
 #ifndef UDF_READ_ONLY_BUILD
-#ifndef DEMO
     DriverObject->MajorFunction[IRP_MJ_SET_SECURITY]     = UDFSetSecurity;
-#endif //DEMO
 #endif //UDF_READ_ONLY_BUILD
 #endif //UDF_ENABLE_SECURITY
 
-    if(MajorVersion >= 0x05) {
+//    if(MajorVersion >= 0x05) {
         // w2k and higher
 //        DriverObject->MajorFunction[IRP_MJ_PNP]           = UDFPnp;
-    }
+//    }
 
     // Now, it is time to initialize the fast-io stuff ...
     PtrFastIoDispatch = DriverObject->FastIoDispatch = &(UDFGlobalData.UDFFastIoDispatch);
@@ -953,13 +681,13 @@
             DbgCompareMemory(&Buffer->FileSystemName[0],name  , sizeof(name)) == sizeof(name))
                     
         if (NT_SUCCESS(RC) &&
-           (UDF_CHECK_FS_NAME(UDF_FS_TITLE_CDR)    ||
-            UDF_CHECK_FS_NAME(UDF_FS_TITLE_CDRW)   ||
-            UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDR)   ||
-            UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDRW)  ||
-            UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDpR)  ||
-            UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDpRW) ||
-            UDF_CHECK_FS_NAME(UDF_FS_TITLE_DVDRAM) )) try_return(STATUS_SUCCESS);
+           (UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_CDR)    ||
+            UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_CDRW)   ||
+            UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDR)   ||
+            UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDRW)  ||
+            UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDpR)  ||
+            UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDpRW) ||
+            UDF_CHECK_FS_NAME((PVOID)UDF_FS_TITLE_DVDRAM) )) try_return(STATUS_SUCCESS);
         
         KdPrint(("\n*** UDFDismountDevice: LockVolume\n"));
         RC = ZwFsControlFile(NtFileHandle,
@@ -1047,6 +775,7 @@
 
 
 VOID
+NTAPI
 UDFFsNotification(
     IN PDEVICE_OBJECT DeviceObject,
     IN BOOLEAN FsActive
@@ -1137,6 +866,7 @@
     UNICODE_STRING  unicodeCdRomDeviceName;
     LARGE_INTEGER   delay;
 
+*/
 /*    delay.QuadPart = -80*10000000;
     KeDelayExecutionThread(KernelMode, FALSE, &delay);        //10 seconds*/
     
@@ -1157,254 +887,3 @@
         if (!NT_SUCCESS(RC)) break;
     }
 }*/
-
-
-#ifdef EVALUATION_TIME_LIMIT
-
-BOOLEAN
-UDFGetInstallVersion(
-    PULONG iVer
-    )
-{
-    WCHAR RegPath[128];
-    WCHAR RegVal[64];
-    WCHAR Str[32];
-    ULONG i, j;
-    ULONG a, v;
-    ULONG type;
-    ULONG sz;
-
-    KdPrint((KD_PREFIX "UDFGetInstallVersion:\n"));
-
-    (*iVer) = UDF_CURRENT_BUILD;
-    for(j=0; j<UDF_INSTALL_INFO_LOCATIONS; j++) {
-        RtlZeroMemory(Str, sizeof(Str));
-        switch(j) {
-        case 0: GET_VERSION_REG_KEY_NAME(RegPath, 0); break;
-        case 1: GET_VERSION_REG_KEY_NAME(RegPath, 1); break;
-        }
-        v = 0;
-        switch(j) {
-        case 0: GET_VERSION_REG_VAL_NAME(RegVal, 0); break;
-        case 1: GET_VERSION_REG_VAL_NAME(RegVal, 1); break;
-        }
-        type = 0;
-        if(j) {
-            type = GET_XXX_REG_VAL_TYPE(VERSION, 1);
-        } else {
-            type = GET_XXX_REG_VAL_TYPE(VERSION, 0);
-        }
-        if(!type &&
-            RegTGetDwordValue(NULL, RegPath, RegVal, &v)) {
-            // ok
-            KdPrint((KD_PREFIX "val: %x\n", v));
-            goto de_xor;
-        } else
-        if(type &&
-           (sz = 30) &&
-           RegTGetStringValue(NULL, RegPath, RegVal,
-                                         &Str[0], sz) &&
-           wcslen(Str) == 10)
-        {
-            for(i=2; i<10; i++) {
-                if(Str[i] >= 'a' && Str[i] <= 'f') {
-                    a = 10 + Str[i] - 'a';
-                } else {
-                    a = Str[i] - '0';
-                }
-                KdPrint((KD_PREFIX "val: %x\n", a));
-                v *= 16;
-                v += a;
-            }
-de_xor:
-            switch(j) {
-            case 0: v ^= XOR_VAR(Version, 0); break;
-            case 1: v ^= XOR_VAR(Version, 1); break;
-            }
-            if(v & 0x80000000)
-                continue;
-            if((*iVer) == -1 || (*iVer) < v) {
-                (*iVer) = v;
-            }
-            UDFGlobalData.iVer = (*iVer);
-        }
-    }
-    UDFGlobalData.iVer = (*iVer);
-/*    if(UDFGlobalData.iVer == -1)
-        return FALSE;*/
-    KdPrint((KD_PREFIX "ret val: %x\n", *iVer));
-    if((*iVer) > UDF_CURRENT_BUILD) {
-        return FALSE;
-    }
-    return TRUE;
-} // end UDFGetInstallVersion()
-
-BOOLEAN
-UDFGetInstallTime(
-    PULONG iTime
-    )
-{
-    WCHAR RegPath[128];
-    WCHAR RegVal[64];
-    WCHAR Str[32];
-    ULONG i, j;
-    ULONG a, v;
-    ULONG type;
-    ULONG sz;
-
-    KdPrint((KD_PREFIX "UDFGetInstallTime:\n"));
-
-    (*iTime) = -1;
-    for(j=0; j<UDF_INSTALL_INFO_LOCATIONS; j++) {
-        RtlZeroMemory(Str, sizeof(Str));
-        switch(j) {
-        case 0: GET_DATE_REG_KEY_NAME(RegPath, 0); break;
-        case 1: GET_DATE_REG_KEY_NAME(RegPath, 1); break;
-        }
-        v = 0;
-        switch(j) {
-        case 0: GET_DATE_REG_VAL_NAME(RegVal, 0); break;
-        case 1: GET_DATE_REG_VAL_NAME(RegVal, 1); break;
-        }
-        type = 0;
-        if(j) {
-            type = GET_XXX_REG_VAL_TYPE(DATE, 1);
-        } else {
-            type = GET_XXX_REG_VAL_TYPE(DATE, 0);
-        }
-        if(!type &&
-           RegTGetDwordValue(NULL, RegPath, RegVal, &v)) {
-           // ok
-            KdPrint((KD_PREFIX "val: %x\n", v));
-            goto de_xor;
-        } else
-        if(type &&
-           (sz = 30) &&
-           RegTGetStringValue(NULL, RegPath, RegVal,
-                                         &Str[0], sz) &&
-           wcslen(Str) == 10)
-        {
-            for(i=2; i<10; i++) {
-                if(Str[i] >= 'a' && Str[i] <= 'f') {
-                    a = 10 + Str[i] - 'a';
-                } else {
-                    a = Str[i] - '0';
-                }
-                KdPrint((KD_PREFIX "val: %x\n", a));
-                v *= 16;
-                v += a;
-            }
-de_xor:
-            switch(j) {
-            case 0: v ^= XOR_VAR(Date, 0); break;
-            case 1: v ^= XOR_VAR(Date, 1); break;
-            }
-            PresentDateMask |= 0x00000001 << j;
-            if(v & 0x80000000)
-                continue;
-            if((*iTime) == -1 || (*iTime) < v) {
-                (*iTime) = v;
-            }
-            UDFGlobalData.iTime = (*iTime);
-        }
-    }
-    UDFGlobalData.iTime = (*iTime);
-    if(UDFGlobalData.iTime == -1) {
-
-        LARGE_INTEGER cTime;
-        KeQuerySystemTime((PLARGE_INTEGER)&cTime);
-
-        cTime.QuadPart /= (10*1000*1000);
-        cTime.QuadPart /= (60*60*24);
-
-        KdPrint((KD_PREFIX "cTime = %x, jTime = %x\n", cTime.LowPart, TIME_JAN_1_2003));
-        if(cTime.QuadPart < TIME_JAN_1_2003) {
-            KdPrint((KD_PREFIX "Eval time expired (1)\n"));
-            UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_UNREGISTERED;
-        }
-        cTime.LowPart -= TIME_JAN_1_2003;
-        KdPrint(("cTime = %x\n", cTime.LowPart));
-
-        UDFGlobalData.iTime = (*iTime) = cTime.LowPart;
-        return FALSE;
-    }
-    UDFGlobalData.iTime = (*iTime);
-    KdPrint((KD_PREFIX "ret val: %x\n", *iTime));
-    return TRUE;
-} // end UDFGetInstallTime()
-
-BOOLEAN
-UDFGetTrialEnd(
-    PULONG iTrial
-    )
-{
-    WCHAR RegPath[128];
-    WCHAR RegVal[64];
-    WCHAR Str[32];
-    ULONG i, j;
-    ULONG a, v;
-    ULONG type;
-    ULONG sz;
-
-    KdPrint((KD_PREFIX "UDFGetTrialEnd:\n"));
-
-    (*iTrial) = 0;
-    for(j=0; j<UDF_INSTALL_INFO_LOCATIONS; j++) {
-        RtlZeroMemory(Str, sizeof(Str));
-        switch(j) {
-        case 0: GET_TRIAL_REG_KEY_NAME(RegPath, 0); break;
-        case 1: GET_TRIAL_REG_KEY_NAME(RegPath, 1); break;
-        }
-        v = 0;
-        switch(j) {
-        case 0: GET_TRIAL_REG_VAL_NAME(RegVal, 0); break;
-        case 1: GET_TRIAL_REG_VAL_NAME(RegVal, 1); break;
-        }
-        type = 0;
-        if(j) {
-            type = GET_XXX_REG_VAL_TYPE(TRIAL, 1);
-        } else {
-            type = GET_XXX_REG_VAL_TYPE(TRIAL, 0);
-        }
-        if(!type &&
-           RegTGetDwordValue(NULL, RegPath, RegVal, &v)) {
-           // ok
-            KdPrint((KD_PREFIX "val: %x\n", v));
-            goto de_xor;
-        } else
-        if(type &&
-           (sz = 30) &&
-           RegTGetStringValue(NULL, RegPath, RegVal,
-                                         &Str[0], sz) &&
-           wcslen(Str) == 10)
-        {
-            for(i=2; i<10; i++) {
-                if(Str[i] >= 'a' && Str[i] <= 'f') {
-                    a = 10 + Str[i] - 'a';
-                } else {
-                    a = Str[i] - '0';
-                }
-                KdPrint((KD_PREFIX "val: %x\n", a));
-                v *= 16;
-                v += a;
-            }
-de_xor:
-            switch(j) {
-            case 0: v ^= XOR_VAR(TrialEnd, 0); break;
-            case 1: v ^= XOR_VAR(TrialEnd, 1); break;
-            }
-            if((*iTrial) < v) {
-                (*iTrial) = v;
-            }
-            if(UDFGlobalData.iTrial = (*iTrial)) {
-                return TRUE;
-            }
-        }
-    }
-    return FALSE;
-} // end UDFGetTrialEnd()
-
-#endif //EVALUATION_TRIAL_LIMIT
-
-
-
diff -uNrEZbwB /tmp/udffs/unload.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/unload.cpp
--- /tmp/udffs/unload.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/unload.cpp	2015-06-10 13:33:51.166094792 +0200
@@ -1,10 +1,12 @@
 ////////////////////////////////////////////////////////////////////
 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
 // All rights reserved
+// This file was released under the GPLv2 on June 2015.
 ////////////////////////////////////////////////////////////////////
 #include "udffs.h"
 
 VOID
+NTAPI
 UDFDriverUnload(
     IN PDRIVER_OBJECT DriverObject
     )
diff -uNrEZbwB /tmp/udffs/volinfo.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/volinfo.cpp
--- /tmp/udffs/volinfo.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/volinfo.cpp	2016-06-01 22:01:06.035634586 +0200
@@ -20,10 +21,6 @@
 // define the file specific bug-check id
 #define         UDF_BUG_CHECK_ID                UDF_FILE_VOL_INFORMATION
 
-#ifdef DEMO
-PWCHAR DemoVolIdent = UDF_DEMO_VOLUME_LABEL;
-#endif // DEMO
-
 //  Local support routines
 NTSTATUS
 UDFQueryFsVolumeInfo (
@@ -85,6 +82,7 @@
 
  */
 NTSTATUS
+NTAPI
 UDFQueryVolInfo(
     PDEVICE_OBJECT      DeviceObject,       // the logical volume device object
     PIRP                Irp                 // I/O Request Packet
@@ -311,11 +309,7 @@
     KdPrint(("  UDFQueryFsVolumeInfo: \n"));
     //  Fill in the data from the Vcb.
     Buffer->VolumeCreationTime.QuadPart = Vcb->VolCreationTime;
-#ifndef DEMO // release
     Buffer->VolumeSerialNumber = Vcb->PhSerialNumber;
-#else   // DEMO
-    Buffer->VolumeSerialNumber = 0xDE1770;
-#endif  // DEMO
     KdPrint(("  SN %x\n", Vcb->PhSerialNumber));
 
     Buffer->SupportsObjects = FALSE;
@@ -324,11 +318,7 @@
 
     //  Check if the buffer we're given is long enough
     if (*Length >= (ULONG) Vcb->VolIdent.Length) {
-#ifndef DEMO // release
         BytesToCopy = Vcb->VolIdent.Length;
-#else   // DEMO
-        BytesToCopy = sizeof(UDF_DEMO_VOLUME_LABEL) - sizeof(WCHAR);
-#endif  // DEMO
         Status = STATUS_SUCCESS;
     } else {
         BytesToCopy = *Length;
@@ -338,11 +328,7 @@
     Buffer->VolumeLabelLength = BytesToCopy;
 
     if (BytesToCopy)
-#ifndef DEMO // release
         RtlCopyMemory( &(Buffer->VolumeLabel[0]), Vcb->VolIdent.Buffer, BytesToCopy );
-#else   // DEMO
-        RtlCopyMemory( &(Buffer->VolumeLabel[0]), DemoVolIdent, BytesToCopy );
-#endif  // DEMO
     *Length -= BytesToCopy;
 
     return Status;
@@ -507,7 +493,7 @@
     ULONG BytesToCopy;
 
     NTSTATUS Status = STATUS_SUCCESS;
-    PWCHAR FsTypeTitle;
+    PCWSTR FsTypeTitle;
     ULONG FsTypeTitleLen;
 
     PAGED_CODE();
@@ -616,9 +601,9 @@
 
 
 #ifndef UDF_READ_ONLY_BUILD
-#ifndef DEMO // release
 
 NTSTATUS
+NTAPI
 UDFSetVolInfo(
     PDEVICE_OBJECT      DeviceObject,       // the logical volume device object
     PIRP                Irp                 // I/O Request Packet
@@ -824,5 +809,4 @@
     return STATUS_SUCCESS;
 } // end UDFSetLabelInfo ()
 
-#endif // DEMO
 #endif //UDF_READ_ONLY_BUILD
diff -uNrEZbwB /tmp/udffs/wcache.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/wcache.cpp
--- /tmp/udffs/wcache.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/wcache.cpp	2015-06-10 13:33:50.198092488 +0200
@@ -1,10 +1,11 @@
 ////////////////////////////////////////////////////////////////////
 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
 // All rights reserved
+// This file was released under the GPLv2 on June 2015.
 ////////////////////////////////////////////////////////////////////
 #include "udffs.h"
 
 // define the file specific bug-check id
 #define         UDF_BUG_CHECK_ID                UDF_FILE_WCACHE
 
-#include "..\Include\Wcache_lib.cpp"
+#include "Include/wcache_lib.cpp"
diff -uNrEZbwB /tmp/udffs/wcache.h /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/wcache.h
--- /tmp/udffs/wcache.h	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/wcache.h	2015-06-10 13:33:51.174094812 +0200
@@ -1,11 +1,12 @@
 ////////////////////////////////////////////////////////////////////
 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
 // All rights reserved
+// This file was released under the GPLv2 on June 2015.
 ////////////////////////////////////////////////////////////////////
 
 #ifndef __CDRW_WCACHE_H__
 #define __CDRW_WCACHE_H__
 
-#include "..\Include\Wcache_lib.h"
+#include "Include/wcache_lib.h"
 
 #endif // __CDRW_WCACHE_H__
diff -uNrEZbwB /tmp/udffs/write.cpp /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/write.cpp
--- /tmp/udffs/write.cpp	2013-07-24 19:32:04.000000000 +0200
+++ /home/schweitzer/ReactOS/trunk/reactos/drivers/filesystems/udfs/write.cpp	2015-06-10 13:33:51.170094802 +0200
@@ -37,6 +38,7 @@
 *
 *************************************************************************/
 NTSTATUS
+NTAPI
 UDFWrite(
     PDEVICE_OBJECT DeviceObject,       // the logical volume device object
     PIRP           Irp                 // I/O Request Packet
@@ -124,8 +126,8 @@
     PERESOURCE              PtrResourceAcquired = NULL;
     PERESOURCE              PtrResourceAcquired2 = NULL;
     PVOID                   SystemBuffer = NULL;
-    PVOID                   TmpBuffer = NULL;
-    uint32                  KeyValue = 0;
+//    PVOID                   TmpBuffer = NULL;
+//    uint32                  KeyValue = 0;
     PIRP                    TopIrp;
 
     LONGLONG                ASize;
@@ -227,14 +229,6 @@
         }
         Vcb->VCBFlags |= UDF_VCB_SKIP_EJECT_CHECK;
 
-#ifdef EVALUATION_TIME_LIMIT
-        // License Key check
-        if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-            Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-            try_return(RC = STATUS_ACCESS_DENIED);
-        }
-#endif //EVALUATION_TIME_LIMIT
-
         // Disk based file systems might decide to verify the logical volume
         //  (if required and only if removable media are supported) at this time
         // As soon as Tray is locked, we needn't call UDFVerifyVcb()
@@ -330,10 +324,13 @@
                 // flush system cache
                 UDFFlushLogicalVolume(NULL, NULL, Vcb, 0);
             }
+#ifdef _MSC_VER
+/* FIXME */
             if(PagingIo) {
                 CollectStatistics(Vcb, MetaDataWrites);
                 CollectStatisticsEx(Vcb, MetaDataWriteBytes, NumberBytesWritten);
             }
+#endif
             // Forward the request to the lower level driver
             // Lock the callers buffer
             if (!NT_SUCCESS(RC = UDFLockCallersBuffer(PtrIrpContext, Irp, TRUE, WriteLength))) {
@@ -415,7 +412,7 @@
         // Here is a special check that determines whether the caller wishes to
         // begin the write at current end-of-file (whatever the value of that
         // offset might be)
-        if(ByteOffset.HighPart == 0xFFFFFFFF) {
+        if(ByteOffset.HighPart == (LONG)0xFFFFFFFF) {
             if(ByteOffset.LowPart == FILE_WRITE_TO_END_OF_FILE) {
                 WriteToEOF = TRUE;
                 ByteOffset = NtReqFcb->CommonFCBHeader.FileSize;
@@ -431,14 +428,6 @@
             try_return(RC = STATUS_TOO_LATE);
         }
 
-#ifdef EVALUATION_TIME_LIMIT
-        // License Key check
-        if(UDFGlobalData.UDFFlags & UDF_DATA_FLAGS_UNREGISTERED) {
-            Vcb->VCBFlags |= UDF_VCB_FLAGS_VOLUME_READ_ONLY;
-            try_return(RC = STATUS_ACCESS_DENIED);
-        }
-#endif //EVALUATION_TIME_LIMIT
-
         // Paging I/O write operations are special. If paging i/o write
         // requests begin beyond end-of-file, the request should be no-oped
         // If paging i/o
@@ -455,10 +444,13 @@
             TruncatedLength = WriteLength;
         }
 
+#ifdef _MSC_VER
+/* FIXME */
         if(PagingIo) {
             CollectStatistics(Vcb, UserFileWrites);
             CollectStatisticsEx(Vcb, UserFileWriteBytes, NumberBytesWritten);
         }
+#endif
 
         // There are certain complications that arise when the same file stream
         // has been opened for cached and non-cached access. The FSD is then
@@ -914,11 +906,14 @@
 
             UDFUnlockCallersBuffer(PtrIrpContext, Irp, SystemBuffer);
 
+#ifdef _MSC_VER
+/* FIXME */
             if(PagingIo) {
                 CollectStatistics(Vcb, UserDiskWrites);
             } else {
                 CollectStatistics2(Vcb, NonCachedDiskWrites);
             }
+#endif
             WriteFileSizeToDirNdx = TRUE;
 
             try_return(RC);
@@ -1049,6 +1044,7 @@
 *
 *************************************************************************/
 VOID
+NTAPI
 UDFDeferredWriteCallBack(
     IN PVOID Context1,          // Should be PtrIrpContext
     IN PVOID Context2           // Should be Irp
@@ -1105,7 +1101,7 @@
             LONGLONG Offset0, OffsetX, VDL;
 
             Offset0 = Offset;
-            if(Off_l = ((ULONG)Offset0 & (PAGE_SIZE-1))) {
+            if((Off_l = ((ULONG)Offset0 & (PAGE_SIZE-1)))) {
                 //                 Offset, Offset0
                 //                 v
                 // ...|dddddddddddd00000|....
@@ -1144,7 +1140,7 @@
             }
             VDL = NtReqFcb->CommonFCBHeader.ValidDataLength.QuadPart;
             OffsetX = Offset+Length;
-            if( Off_l = ((ULONG)OffsetX & (PAGE_SIZE-1))) {
+            if((Off_l = ((ULONG)OffsetX & (PAGE_SIZE-1)))) {
 
                 if(OffsetX < VDL) {
 #ifndef USE_CcCopyWrite_TO_ZERO
@@ -1189,11 +1185,13 @@
                 if(PURGE_BLOCK_SZ > Length) {
                     CcPurgeCacheSection(SectionObject, (PLARGE_INTEGER)&Offset,
                                                 (ULONG)Length, FALSE);
-    /*                NtReqFcb->CommonFCBHeader.ValidDataLength.QuadPart += Length;
+    /*
+                    NtReqFcb->CommonFCBHeader.ValidDataLength.QuadPart += Length;
                     ASSERT(NtReqFcb->CommonFCBHeader.ValidDataLength.QuadPart <=
                            NtReqFcb->CommonFCBHeader.FileSize.QuadPart);
-        /*            MmPrint(("    CcFlushCache()\n"));
-                    CcFlushCache( SectionObject, (PLARGE_INTEGER)&Offset, (ULONG)Length, NULL );*/
+                    MmPrint(("    CcFlushCache()\n"));
+                    CcFlushCache( SectionObject, (PLARGE_INTEGER)&Offset, (ULONG)Length, NULL );
+    */
 #ifndef ALLOW_SPARSE
         //            UDFZeroFile__(
 #endif //ALLOW_SPARSE
@@ -1201,11 +1199,13 @@
                 } else {
                     CcPurgeCacheSection(SectionObject, (PLARGE_INTEGER)&Offset,
                                                 PURGE_BLOCK_SZ, FALSE);
-    /*                NtReqFcb->CommonFCBHeader.ValidDataLength.QuadPart += PURGE_BLOCK_SZ;
+    /* 
+                    NtReqFcb->CommonFCBHeader.ValidDataLength.QuadPart += PURGE_BLOCK_SZ;
                     ASSERT(NtReqFcb->CommonFCBHeader.ValidDataLength.QuadPart <=
                            NtReqFcb->CommonFCBHeader.FileSize.QuadPart);
-        /*            MmPrint(("    CcFlushCache()\n"));
-                    CcFlushCache( SectionObject, (PLARGE_INTEGER)&Offset, (ULONG)Length, NULL );*/
+                    MmPrint(("    CcFlushCache()\n"));
+                    CcFlushCache( SectionObject, (PLARGE_INTEGER)&Offset, (ULONG)Length, NULL );
+    */
 #ifndef ALLOW_SPARSE
         //            UDFZeroFile__(
 #endif //ALLOW_SPARSE

