[PATCH 2/2] kernel32: Implement a few more classes in GetFileInformationByHandleEx

Martin Storsjo martin at martin.st
Thu May 7 15:02:35 CDT 2015


---
 dlls/kernel32/file.c | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 006db1c..9bf318e 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -23,6 +23,7 @@
 #include "config.h"
 #include "wine/port.h"
 
+#include <assert.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <errno.h>
@@ -894,11 +895,10 @@ BOOL WINAPI GetFileInformationByHandleEx( HANDLE handle, FILE_INFO_BY_HANDLE_CLA
 {
     NTSTATUS status;
     IO_STATUS_BLOCK io;
+    FILE_INFORMATION_CLASS nt_class;
 
     switch (class)
     {
-    case FileBasicInfo:
-    case FileStandardInfo:
     case FileRenameInfo:
     case FileDispositionInfo:
     case FileAllocationInfo:
@@ -919,8 +919,24 @@ BOOL WINAPI GetFileInformationByHandleEx( HANDLE handle, FILE_INFO_BY_HANDLE_CLA
         SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
         return FALSE;
 
+    case FileBasicInfo:
+    case FileStandardInfo:
     case FileNameInfo:
-        status = NtQueryInformationFile( handle, &io, info, size, FileNameInformation );
+        switch (class) {
+        case FileBasicInfo:
+            nt_class = FileBasicInformation;
+            break;
+        case FileStandardInfo:
+            nt_class = FileStandardInformation;
+            break;
+        case FileNameInfo:
+            nt_class = FileNameInformation;
+            break;
+        default:
+            assert(0);
+            break;
+        }
+        status = NtQueryInformationFile( handle, &io, info, size, nt_class );
         if (status != STATUS_SUCCESS)
         {
             SetLastError( RtlNtStatusToDosError( status ) );
-- 
1.8.1.2




More information about the wine-patches mailing list