Dump FileObject attrs also on leave from IRP_MJ_*.
[captive.git] / src / TraceFS / TraceFS-W32 / TraceFS.c
index 72cb138..438c5e6 100644 (file)
@@ -296,7 +296,7 @@ static void dump_FileObject(FILE_OBJECT *FileObject)
        SectionObjectPointer_set(FileObject);\r
 }\r
 \r
-static void dump_irp_mj(struct _DEVICE_OBJECT *DeviceObject,struct _IRP *Irp)\r
+static void dump_irp_mj(struct _DEVICE_OBJECT *DeviceObject,struct _IRP *Irp,BOOLEAN restricted)\r
 {\r
 IO_STACK_LOCATION *IoStackLocation;\r
 \r
@@ -310,6 +310,9 @@ IO_STACK_LOCATION *IoStackLocation;
                return;\r
                }\r
        dump_FileObject(IoStackLocation->FileObject);\r
+\r
+       if (restricted)\r
+               return;\r
        \r
        switch (IoStackLocation->MajorFunction) {\r
                case IRP_MJ_READ:\r
@@ -390,13 +393,14 @@ NTSTATUS r; \
 int locked; \\r
  \\r
        DBGSINGLEENTER0( #irp_mj_name ); \\r
-       dump_irp_mj(DeviceObject,Irp); \\r
+       dump_irp_mj(DeviceObject,Irp,FALSE); \\r
        /* Prevent deadlock during display of File Explorer directory listing. \\r
         * Needed at least for IRP_MJ_DIRECTORY_CONTROL and IRP_MJ_CLOSE. \\r
         */ \\r
        locked=unlock_full(); \\r
        r=(*tracefs_major_##irp_mj_name##_orig)(DeviceObject,Irp); \\r
        lock_full(locked); \\r
+       dump_irp_mj(DeviceObject,Irp,TRUE); \\r
        DBGSINGLELEAVE1( #irp_mj_name ": r=0x%lX",(long)r); \\r
        return r; \\r
 }\r