- COMPUTE_PAGES_SPANNED is deprecated, use ADDRESS_AND_SIZE_TO_SPAN_PAGES instead
[reactos.git] / reactos / ntoskrnl / fsrtl / fastio.c
index d649087..76f5ff8 100644 (file)
@@ -54,20 +54,6 @@ FsRtlIncrementCcFastReadNoWait(VOID)
     CcFastReadNoWait++;\r
 }\r
 \r
-_SEH_FILTER(FsRtlCcCopyFilter)\r
-{\r
-   LONG ExceptionDisposition;\r
-\r
-   /* Check if this was an expected exception */\r
-   ExceptionDisposition = FsRtlIsNtstatusExpected(_SEH_GetExceptionCode() ?\r
-                                                  EXCEPTION_EXECUTE_HANDLER :\r
-                                                  EXCEPTION_CONTINUE_SEARCH);\r
-\r
-   /* Continue execution if we expected it, otherwise fail the call */\r
-   return ExceptionDisposition;\r
-}\r
-\r
-\r
 /*\r
  * @implemented\r
  */\r
@@ -88,7 +74,7 @@ FsRtlCopyRead(IN PFILE_OBJECT FileObject,
     PFAST_IO_DISPATCH FastIoDispatch;\r
     PDEVICE_OBJECT Device;\r
     BOOLEAN Result = TRUE;\r
-       ULONG PageCount = COMPUTE_PAGES_SPANNED(FileOffset,Length);\r
+       ULONG PageCount = ADDRESS_AND_SIZE_TO_SPAN_PAGES(FileOffset,Length);\r
 \r
        PAGED_CODE();\r
     ASSERT(FileObject);\r
@@ -187,7 +173,7 @@ FsRtlCopyRead(IN PFILE_OBJECT FileObject,
     /* Set this as top-level IRP */\r
        PsGetCurrentThread()->TopLevelIrp = FSRTL_FAST_IO_TOP_LEVEL_IRP;\r
 \r
-       _SEH_TRY\r
+       _SEH2_TRY\r
        {\r
            /* Make sure the IO and file size is below 4GB */\r
                if (Wait && !(Offset.HighPart | FcbHeader->FileSize.HighPart )) {\r
@@ -218,10 +204,10 @@ FsRtlCopyRead(IN PFILE_OBJECT FileObject,
                        FileObject->CurrentByteOffset.QuadPart += IoStatus->Information;\r
                }\r
        }\r
-       _SEH_EXCEPT(FsRtlCcCopyFilter)\r
+       _SEH2_EXCEPT(FsRtlIsNtstatusExpected(_SEH2_GetExceptionCode()) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)\r
        {\r
                Result = FALSE;\r
-    } _SEH_END;\r
+    } _SEH2_END;\r
 \r
        PsGetCurrentThread()->TopLevelIrp = 0;\r
 \r
@@ -261,7 +247,7 @@ FsRtlCopyWrite(IN PFILE_OBJECT FileObject,
     PFSRTL_COMMON_FCB_HEADER FcbHeader;\r
 \r
     /* WDK doc. Offset=0xffffffffffffffff indicates append to the end of file */\r
-    BOOLEAN FileOffsetAppend = ((FileOffset->HighPart == 0xffffffff) && (FileOffset->LowPart == 0xffffffff));\r
+    BOOLEAN FileOffsetAppend = ((FileOffset->HighPart == (LONG)0xffffffff) && (FileOffset->LowPart == 0xffffffff));\r
     BOOLEAN ResourceAquiredShared = FALSE;\r
 \r
     BOOLEAN b_4GB = FALSE;\r
@@ -415,7 +401,7 @@ FsRtlCopyWrite(IN PFILE_OBJECT FileObject,
            /* Set this as top-level IRP */\r
            PsGetCurrentThread()->TopLevelIrp = FSRTL_FAST_IO_TOP_LEVEL_IRP;\r
 \r
-               _SEH_TRY\r
+               _SEH2_TRY\r
                {\r
                        if (Offset.LowPart > FcbHeader->ValidDataLength.LowPart) {\r
                                LARGE_INTEGER OffsetVar;\r
@@ -427,10 +413,10 @@ FsRtlCopyWrite(IN PFILE_OBJECT FileObject,
                        /* Call the cache manager */\r
                        CcFastCopyWrite(FileObject,Offset.LowPart,Length,Buffer);\r
                }\r
-               _SEH_EXCEPT(FsRtlCcCopyFilter)\r
+               _SEH2_EXCEPT(FsRtlIsNtstatusExpected(_SEH2_GetExceptionCode()) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)\r
                {\r
                        Result = FALSE;\r
-           } _SEH_END;\r
+           } _SEH2_END;\r
 \r
         /* Remove ourselves at the top level component after the IO is done */\r
            PsGetCurrentThread()->TopLevelIrp = 0;\r
@@ -600,7 +586,7 @@ FsRtlCopyWrite(IN PFILE_OBJECT FileObject,
             /* Nagar p.544 */\r
             /* Set ourselves as top component */\r
                    PsGetCurrentThread()->TopLevelIrp = FSRTL_FAST_IO_TOP_LEVEL_IRP;\r
-                       _SEH_TRY\r
+                       _SEH2_TRY\r
                        {\r
                                BOOLEAN CallCc = TRUE;\r
                 /*  Check if there is a gap between the end of the file and the offset\r
@@ -620,10 +606,10 @@ FsRtlCopyWrite(IN PFILE_OBJECT FileObject,
                                if (CallCc) {\r
                                        Result = CcCopyWrite(FileObject,&Offset,Length, Wait, Buffer);\r
                                }\r
-                       }_SEH_EXCEPT(FsRtlCcCopyFilter)\r
+                       }_SEH2_EXCEPT(FsRtlIsNtstatusExpected(_SEH2_GetExceptionCode()) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)\r
                        {\r
                                Result = FALSE;\r
-                   } _SEH_END;\r
+                   } _SEH2_END;\r
 \r
             /* Reset the top component */\r
                    PsGetCurrentThread()->TopLevelIrp = FSRTL_FAST_IO_TOP_LEVEL_IRP;\r
@@ -1003,16 +989,16 @@ FsRtlMdlReadDev(IN PFILE_OBJECT FileObject,
     /* Set this as top-level IRP */\r
     PsGetCurrentThread()->TopLevelIrp = FSRTL_FAST_IO_TOP_LEVEL_IRP;\r
 \r
-    _SEH_TRY\r
+    _SEH2_TRY\r
     {\r
         /* Attempt a read */\r
         CcMdlRead(FileObject, FileOffset, Length, MdlChain, IoStatus);\r
         FileObject->Flags |= FO_FILE_FAST_IO_READ;\r
     }\r
-       _SEH_EXCEPT(FsRtlCcCopyFilter)\r
+       _SEH2_EXCEPT(FsRtlIsNtstatusExpected(_SEH2_GetExceptionCode()) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)\r
        {\r
                Result = FALSE;\r
-    } _SEH_END;\r
+    } _SEH2_END;\r
 \r
 \r
     /* Remove the top-level IRP flag */\r
@@ -1167,7 +1153,7 @@ FsRtlPrepareMdlWriteDev(IN PFILE_OBJECT FileObject,
     LARGE_INTEGER Offset;\r
 \r
     /* WDK doc. Offset=0xffffffffffffffff indicates append to the end of file */\r
-    BOOLEAN FileOffsetAppend = ((FileOffset->HighPart == 0xffffffff) && (FileOffset->LowPart == 0xffffffff));\r
+    BOOLEAN FileOffsetAppend = ((FileOffset->HighPart == (LONG)0xffffffff) && (FileOffset->LowPart == 0xffffffff));\r
     BOOLEAN FileSizeModified = FALSE;\r
     BOOLEAN ResourceAquiredShared = FALSE;\r
 \r
@@ -1300,7 +1286,7 @@ FsRtlPrepareMdlWriteDev(IN PFILE_OBJECT FileObject,
         /* Nagar p.544 */\r
         /* Set ourselves as top component */\r
            PsGetCurrentThread()->TopLevelIrp = FSRTL_FAST_IO_TOP_LEVEL_IRP;\r
-               _SEH_TRY\r
+               _SEH2_TRY\r
                {\r
             /*  Check if there is a gap between the end of the file and the offset\r
                 If yes, then we have to zero the data\r
@@ -1315,10 +1301,10 @@ FsRtlPrepareMdlWriteDev(IN PFILE_OBJECT FileObject,
                                    CcPrepareMdlWrite(FileObject,&Offset,Length,MdlChain,IoStatus);\r
                    }\r
 \r
-               }_SEH_EXCEPT(FsRtlCcCopyFilter)\r
+               }_SEH2_EXCEPT(FsRtlIsNtstatusExpected(_SEH2_GetExceptionCode()) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)\r
                {\r
                        Result = FALSE;\r
-           } _SEH_END;\r
+           } _SEH2_END;\r
 \r
         /* Reset the top component */\r
            PsGetCurrentThread()->TopLevelIrp = 0;\r