=?UTF-8?Q?Michael=20M=C3=BCller=20?=: kernel32: Improve stub for SetFileInformationByHandle.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jun 11 09:46:11 CDT 2015


Module: wine
Branch: master
Commit: fd8fae105b68a2af131b070adea0bfcaf582ace3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fd8fae105b68a2af131b070adea0bfcaf582ace3

Author: Michael Müller <michael at fds-team.de>
Date:   Thu Feb 26 06:08:58 2015 +0100

kernel32: Improve stub for SetFileInformationByHandle.

---

 dlls/kernel32/file.c       | 42 ++++++++++++++++++++++++++++++++++++++++--
 dlls/kernel32/tests/file.c |  4 ----
 include/winbase.h          |  1 +
 3 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 0b208a5..9cdcd8d 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -1040,12 +1040,50 @@ BOOL WINAPI SetEndOfFile( HANDLE hFile )
     return FALSE;
 }
 
+
+/***********************************************************************
+ *           SetFileInformationByHandle   (KERNEL32.@)
+ */
 BOOL WINAPI SetFileInformationByHandle( HANDLE file, FILE_INFO_BY_HANDLE_CLASS class, VOID *info, DWORD size )
 {
-    FIXME("%p %u %p %u - stub\n", file, class, info, size);
-    return FALSE;
+    TRACE( "%p %u %p %u\n", file, class, info, size );
+
+    switch (class)
+    {
+    case FileBasicInfo:
+    case FileNameInfo:
+    case FileRenameInfo:
+    case FileDispositionInfo:
+    case FileAllocationInfo:
+    case FileEndOfFileInfo:
+    case FileStreamInfo:
+    case FileIdBothDirectoryInfo:
+    case FileIdBothDirectoryRestartInfo:
+    case FileIoPriorityHintInfo:
+    case FileFullDirectoryInfo:
+    case FileFullDirectoryRestartInfo:
+    case FileStorageInfo:
+    case FileAlignmentInfo:
+    case FileIdInfo:
+    case FileIdExtdDirectoryInfo:
+    case FileIdExtdDirectoryRestartInfo:
+        FIXME( "%p, %u, %p, %u\n", file, class, info, size );
+        SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
+        return FALSE;
+
+    case FileStandardInfo:
+    case FileCompressionInfo:
+    case FileAttributeTagInfo:
+    case FileRemoteProtocolInfo:
+    default:
+        SetLastError( ERROR_INVALID_PARAMETER );
+        return FALSE;
+    }
+
+    return TRUE;
 }
 
+
 /***********************************************************************
  *           SetFilePointer   (KERNEL32.@)
  */
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 384dd8d..fb4cd9b 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -4614,18 +4614,15 @@ static void test_SetFileInformationByHandle(void)
     /* invalid classes */
     SetLastError(0xdeadbeef);
     ret = pSetFileInformationByHandle(file, FileStandardInfo, &stdinfo, sizeof(stdinfo));
-todo_wine
     ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
 
     memset(&compressinfo, 0, sizeof(compressinfo));
     SetLastError(0xdeadbeef);
     ret = pSetFileInformationByHandle(file, FileCompressionInfo, &compressinfo, sizeof(compressinfo));
-todo_wine
     ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
 
     SetLastError(0xdeadbeef);
     ret = pSetFileInformationByHandle(file, FileAttributeTagInfo, &fileattrinfo, sizeof(fileattrinfo));
-todo_wine
     ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
 
     memset(&protinfo, 0, sizeof(protinfo));
@@ -4633,7 +4630,6 @@ todo_wine
     protinfo.StructureSize = sizeof(protinfo);
     SetLastError(0xdeadbeef);
     ret = pSetFileInformationByHandle(file, FileRemoteProtocolInfo, &protinfo, sizeof(protinfo));
-todo_wine
     ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
 
     CloseHandle(file);
diff --git a/include/winbase.h b/include/winbase.h
index c558b21..e20a675 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -2460,6 +2460,7 @@ WINBASEAPI VOID        WINAPI SetFileApisToOEM(void);
 WINBASEAPI BOOL        WINAPI SetFileAttributesA(LPCSTR,DWORD);
 WINBASEAPI BOOL        WINAPI SetFileAttributesW(LPCWSTR,DWORD);
 #define                       SetFileAttributes WINELIB_NAME_AW(SetFileAttributes)
+WINBASEAPI BOOL        WINAPI SetFileInformationByHandle(HANDLE,FILE_INFO_BY_HANDLE_CLASS,LPVOID,DWORD);
 WINBASEAPI DWORD       WINAPI SetFilePointer(HANDLE,LONG,LPLONG,DWORD);
 WINBASEAPI BOOL        WINAPI SetFilePointerEx(HANDLE,LARGE_INTEGER,LARGE_INTEGER*,DWORD);
 WINADVAPI  BOOL        WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);




More information about the wine-cvs mailing list