=?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