https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8294118174b28a10daec3f763d8b5ab64104d1fa

commit 8294118174b28a10daec3f763d8b5ab64104d1fa
Author: Pierre Schweitzer <[email protected]>
AuthorDate: Sun Jan 7 14:16:11 2018 +0100

    [FASTFAT] Add a wrapper around FsRtlNotifyFullReportChange
---
 drivers/filesystems/fastfat/cleanup.c |  15 ++--
 drivers/filesystems/fastfat/create.c  |  28 +++-----
 drivers/filesystems/fastfat/finfo.c   | 130 ++++++++++++----------------------
 drivers/filesystems/fastfat/misc.c    |   2 +-
 drivers/filesystems/fastfat/rw.c      |  10 +--
 drivers/filesystems/fastfat/vfat.h    |  22 ++++++
 6 files changed, 82 insertions(+), 125 deletions(-)

diff --git a/drivers/filesystems/fastfat/cleanup.c 
b/drivers/filesystems/fastfat/cleanup.c
index d584dee859..abdeb0b0c6 100644
--- a/drivers/filesystems/fastfat/cleanup.c
+++ b/drivers/filesystems/fastfat/cleanup.c
@@ -124,16 +124,11 @@ VfatCleanupFile(
         {
             VfatDelEntry(DeviceExt, pFcb, NULL);
 
-            FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                        &(DeviceExt->NotifyList),
-                                        (PSTRING)&pFcb->PathNameU,
-                                        pFcb->PathNameU.Length - 
pFcb->LongNameU.Length,
-                                        NULL,
-                                        NULL,
-                                        vfatFCBIsDirectory(pFcb) ?
-                                        FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME,
-                                        FILE_ACTION_REMOVED,
-                                        NULL);
+            vfatReportChange(DeviceExt,
+                             pFcb,
+                             vfatFCBIsDirectory(pFcb) ?
+                             FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME,
+                             FILE_ACTION_REMOVED);
         }
 
         if (pFcb->OpenHandleCount != 0)
diff --git a/drivers/filesystems/fastfat/create.c 
b/drivers/filesystems/fastfat/create.c
index 1ba61fdd38..7ecc0ffae1 100644
--- a/drivers/filesystems/fastfat/create.c
+++ b/drivers/filesystems/fastfat/create.c
@@ -1002,29 +1002,19 @@ VfatCreateFile(
 
     if (Irp->IoStatus.Information == FILE_CREATED)
     {
-        FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                    &(DeviceExt->NotifyList),
-                                    (PSTRING)&pFcb->PathNameU,
-                                    pFcb->PathNameU.Length - 
pFcb->LongNameU.Length,
-                                    NULL,
-                                    NULL,
-                                    (vfatFCBIsDirectory(pFcb) ?
-                                    FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
-                                    FILE_ACTION_ADDED,
-                                    NULL);
+        vfatReportChange(DeviceExt,
+                         pFcb,
+                         (vfatFCBIsDirectory(pFcb) ?
+                          FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
+                         FILE_ACTION_ADDED);
     }
     else if (Irp->IoStatus.Information == FILE_OVERWRITTEN ||
              Irp->IoStatus.Information == FILE_SUPERSEDED)
     {
-        FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                    &(DeviceExt->NotifyList),
-                                    (PSTRING)&pFcb->PathNameU,
-                                    pFcb->PathNameU.Length - 
pFcb->LongNameU.Length,
-                                    NULL,
-                                    NULL,
-                                    FILE_NOTIFY_CHANGE_LAST_WRITE | 
FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SIZE,
-                                    FILE_ACTION_MODIFIED,
-                                    NULL);
+        vfatReportChange(DeviceExt,
+                         pFcb,
+                         FILE_NOTIFY_CHANGE_LAST_WRITE | 
FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SIZE,
+                         FILE_ACTION_MODIFIED);
     }
 
     pFcb->OpenHandleCount++;
diff --git a/drivers/filesystems/fastfat/finfo.c 
b/drivers/filesystems/fastfat/finfo.c
index 03b7d3cc93..1befeebe00 100644
--- a/drivers/filesystems/fastfat/finfo.c
+++ b/drivers/filesystems/fastfat/finfo.c
@@ -269,12 +269,10 @@ VfatSetBasicInformation(
 
     if (NotifyFilter != 0)
     {
-        FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                    &(DeviceExt->NotifyList),
-                                    (PSTRING)&FCB->PathNameU,
-                                    FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                    NULL, NULL, NotifyFilter, 
FILE_ACTION_MODIFIED,
-                                    NULL);
+        vfatReportChange(DeviceExt,
+                         FCB,
+                         NotifyFilter,
+                         FILE_ACTION_MODIFIED);
     }
 
     return STATUS_SUCCESS;
@@ -822,29 +820,19 @@ VfatSetRenameInformation(
 
         if (FsRtlAreNamesEqual(&SourceFile, &NewFile, TRUE, NULL))
         {
-            FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                        &(DeviceExt->NotifyList),
-                                        (PSTRING)&FCB->PathNameU,
-                                        FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                        NULL,
-                                        NULL,
-                                        (vfatFCBIsDirectory(FCB) ?
-                                        FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
-                                        FILE_ACTION_RENAMED_OLD_NAME,
-                                        NULL);
+            vfatReportChange(DeviceExt,
+                             FCB,
+                             (vfatFCBIsDirectory(FCB) ?
+                              FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
+                             FILE_ACTION_RENAMED_OLD_NAME);
             Status = vfatRenameEntry(DeviceExt, FCB, &NewFile, TRUE);
             if (NT_SUCCESS(Status))
             {
-                FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                            &(DeviceExt->NotifyList),
-                                            (PSTRING)&FCB->PathNameU,
-                                            FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                            NULL,
-                                            NULL,
-                                            (vfatFCBIsDirectory(FCB) ?
-                                            FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
-                                            FILE_ACTION_RENAMED_NEW_NAME,
-                                            NULL);
+                vfatReportChange(DeviceExt,
+                                 FCB,
+                                 (vfatFCBIsDirectory(FCB) ?
+                                  FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
+                                 FILE_ACTION_RENAMED_NEW_NAME);
             }
         }
         else
@@ -865,44 +853,29 @@ VfatSetRenameInformation(
                 goto Cleanup;
             }
 
-            FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                        &(DeviceExt->NotifyList),
-                                        (PSTRING)&FCB->PathNameU,
-                                        FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                        NULL,
-                                        NULL,
-                                        (vfatFCBIsDirectory(FCB) ?
-                                        FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
-                                        (DeletedTarget ? FILE_ACTION_REMOVED : 
FILE_ACTION_RENAMED_OLD_NAME),
-                                        NULL);
+            vfatReportChange(DeviceExt,
+                             FCB,
+                             (vfatFCBIsDirectory(FCB) ?
+                              FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
+                             (DeletedTarget ? FILE_ACTION_REMOVED : 
FILE_ACTION_RENAMED_OLD_NAME));
             Status = vfatRenameEntry(DeviceExt, FCB, &NewFile, FALSE);
             if (NT_SUCCESS(Status))
             {
                 if (DeletedTarget)
                 {
-                    FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                                &(DeviceExt->NotifyList),
-                                                (PSTRING)&FCB->PathNameU,
-                                                FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                                NULL,
-                                                NULL,
-                                                FILE_NOTIFY_CHANGE_ATTRIBUTES 
| FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE
-                                                | 
FILE_NOTIFY_CHANGE_LAST_ACCESS | FILE_NOTIFY_CHANGE_CREATION | 
FILE_NOTIFY_CHANGE_EA,
-                                                FILE_ACTION_MODIFIED,
-                                                NULL);
+                    vfatReportChange(DeviceExt,
+                                     FCB,
+                                     FILE_NOTIFY_CHANGE_ATTRIBUTES | 
FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE
+                                     | FILE_NOTIFY_CHANGE_LAST_ACCESS | 
FILE_NOTIFY_CHANGE_CREATION | FILE_NOTIFY_CHANGE_EA,
+                                     FILE_ACTION_MODIFIED);
                 }
                 else
                 {
-                    FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                                &(DeviceExt->NotifyList),
-                                                (PSTRING)&FCB->PathNameU,
-                                                FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                                NULL,
-                                                NULL,
-                                                (vfatFCBIsDirectory(FCB) ?
-                                                FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
-                                                FILE_ACTION_RENAMED_NEW_NAME,
-                                                NULL);
+                    vfatReportChange(DeviceExt,
+                                     FCB,
+                                     (vfatFCBIsDirectory(FCB) ?
+                                      FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
+                                     FILE_ACTION_RENAMED_NEW_NAME);
                 }
             }
         }
@@ -936,44 +909,29 @@ VfatSetRenameInformation(
         UNREFERENCED_PARAMETER(NewReferences);
 #endif
 
-        FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                    &(DeviceExt->NotifyList),
-                                    (PSTRING)&FCB->PathNameU,
-                                    FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                    NULL,
-                                    NULL,
-                                    (vfatFCBIsDirectory(FCB) ?
-                                    FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
-                                    FILE_ACTION_REMOVED,
-                                    NULL);
+        vfatReportChange(DeviceExt,
+                         FCB,
+                         (vfatFCBIsDirectory(FCB) ?
+                          FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
+                         FILE_ACTION_REMOVED);
         Status = VfatMoveEntry(DeviceExt, FCB, &NewFile, ParentFCB);
         if (NT_SUCCESS(Status))
         {
             if (DeletedTarget)
             {
-                FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                            &(DeviceExt->NotifyList),
-                                            (PSTRING)&FCB->PathNameU,
-                                            FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                            NULL,
-                                            NULL,
-                                            FILE_NOTIFY_CHANGE_ATTRIBUTES | 
FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE
-                                            | FILE_NOTIFY_CHANGE_LAST_ACCESS | 
FILE_NOTIFY_CHANGE_CREATION | FILE_NOTIFY_CHANGE_EA,
-                                            FILE_ACTION_MODIFIED,
-                                            NULL);
+                vfatReportChange(DeviceExt,
+                                 FCB,
+                                 FILE_NOTIFY_CHANGE_ATTRIBUTES | 
FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE
+                                 | FILE_NOTIFY_CHANGE_LAST_ACCESS | 
FILE_NOTIFY_CHANGE_CREATION | FILE_NOTIFY_CHANGE_EA,
+                                 FILE_ACTION_MODIFIED);
             }
             else
             {
-                FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
-                                            &(DeviceExt->NotifyList),
-                                            (PSTRING)&FCB->PathNameU,
-                                            FCB->PathNameU.Length - 
FCB->LongNameU.Length,
-                                            NULL,
-                                            NULL,
-                                            (vfatFCBIsDirectory(FCB) ?
-                                            FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
-                                            FILE_ACTION_ADDED,
-                                            NULL);
+                vfatReportChange(DeviceExt,
+                                 FCB,
+                                 (vfatFCBIsDirectory(FCB) ?
+                                  FILE_NOTIFY_CHANGE_DIR_NAME : 
FILE_NOTIFY_CHANGE_FILE_NAME),
+                                 FILE_ACTION_ADDED);
             }
         }
     }
diff --git a/drivers/filesystems/fastfat/misc.c 
b/drivers/filesystems/fastfat/misc.c
index d16507dd2a..7797f37ab2 100644
--- a/drivers/filesystems/fastfat/misc.c
+++ b/drivers/filesystems/fastfat/misc.c
@@ -468,4 +468,4 @@ VfatCheckForDismount(
     }
 
     return Delete;
-}        
+}
diff --git a/drivers/filesystems/fastfat/rw.c b/drivers/filesystems/fastfat/rw.c
index c945ee6044..25114f25cf 100644
--- a/drivers/filesystems/fastfat/rw.c
+++ b/drivers/filesystems/fastfat/rw.c
@@ -1070,15 +1070,7 @@ Metadata:
             Filter = FILE_NOTIFY_CHANGE_LAST_WRITE | 
FILE_NOTIFY_CHANGE_ATTRIBUTES;
             if (ByteOffset.QuadPart != OldFileSize.QuadPart) Filter |= 
FILE_NOTIFY_CHANGE_SIZE;
 
-            FsRtlNotifyFullReportChange(IrpContext->DeviceExt->NotifySync,
-                                        &(IrpContext->DeviceExt->NotifyList),
-                                        (PSTRING)&Fcb->PathNameU,
-                                        Fcb->PathNameU.Length - 
Fcb->LongNameU.Length,
-                                        NULL,
-                                        NULL,
-                                        Filter,
-                                        FILE_ACTION_MODIFIED,
-                                        NULL);
+            vfatReportChange(IrpContext->DeviceExt, Fcb, Filter, 
FILE_ACTION_MODIFIED);
         }
     }
 
diff --git a/drivers/filesystems/fastfat/vfat.h 
b/drivers/filesystems/fastfat/vfat.h
index b84b320573..f6e2aa6452 100644
--- a/drivers/filesystems/fastfat/vfat.h
+++ b/drivers/filesystems/fastfat/vfat.h
@@ -602,6 +602,21 @@ vfatVolumeIsFatX(PDEVICE_EXTENSION DeviceExt)
     return BooleanFlagOn(DeviceExt->Flags, VCB_IS_FATX);
 }
 
+FORCEINLINE
+VOID
+vfatReportChange(
+    IN PDEVICE_EXTENSION DeviceExt,
+    IN PVFATFCB Fcb,
+    IN ULONG FilterMatch,
+    IN ULONG Action)
+{
+    FsRtlNotifyFullReportChange(DeviceExt->NotifySync,
+                                &(DeviceExt->NotifyList),
+                                (PSTRING)&Fcb->PathNameU,
+                                Fcb->PathNameU.Length - Fcb->LongNameU.Length,
+                                NULL, NULL, FilterMatch, Action, NULL);
+}
+
 #define vfatAddToStat(Vcb, Stat, Inc)                                          
                               \
 {                                                                              
                               \
     PSTATISTICS Stats = &(Vcb)->Statistics[KeGetCurrentProcessorNumber() % 
VfatGlobalData->NumberProcessors]; \
@@ -1033,6 +1048,13 @@ VfatCheckForDismount(
     IN PDEVICE_EXTENSION DeviceExt,
     IN BOOLEAN Create);
 
+VOID
+vfatReportChange(
+    IN PDEVICE_EXTENSION DeviceExt,
+    IN PVFATFCB Fcb,
+    IN ULONG FilterMatch,
+    IN ULONG Action);
+
 /* pnp.c */
 
 NTSTATUS

Reply via email to