[NTOSKRNL]
authorEric Kohl <eric.kohl@reactos.org>
Sat, 21 Feb 2015 14:19:16 +0000 (14:19 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 21 Feb 2015 14:19:16 +0000 (14:19 +0000)
NtQueryInformationFile: Implement the FileAllInformation case according to 'File System Internals' page 485.

svn path=/trunk/; revision=66385

reactos/ntoskrnl/io/iomgr/iofunc.c

index d243711..885a60c 100644 (file)
@@ -1896,6 +1896,7 @@ NtQueryInformationFile(IN HANDLE FileHandle,
     PFILE_ACCESS_INFORMATION AccessBuffer;
     PFILE_MODE_INFORMATION ModeBuffer;
     PFILE_ALIGNMENT_INFORMATION AlignmentBuffer;
+    PFILE_ALL_INFORMATION AllBuffer;
     PAGED_CODE();
     IOTRACE(IO_API_DEBUG, "FileHandle: %p\n", FileHandle);
 
@@ -2099,6 +2100,16 @@ NtQueryInformationFile(IN HANDLE FileHandle,
         Irp->IoStatus.Information = sizeof(FILE_ALIGNMENT_INFORMATION);
         CallDriver = FALSE;
     }
+    else if (FileInformationClass == FileAllInformation)
+    {
+        AllBuffer = Irp->AssociatedIrp.SystemBuffer;
+        AllBuffer->AccessInformation.AccessFlags = HandleInformation.GrantedAccess;
+        AllBuffer->ModeInformation.Mode = IopGetFileMode(FileObject);
+        AllBuffer->AlignmentInformation.AlignmentRequirement = DeviceObject->AlignmentRequirement;
+        Irp->IoStatus.Information = sizeof(FILE_ACCESS_INFORMATION) +
+                                    sizeof(FILE_MODE_INFORMATION) +
+                                    sizeof(FILE_ALIGNMENT_INFORMATION);
+    }
 
     /* Call the Driver */
     if (CallDriver)