Module: wine Branch: master Commit: fd8fae105b68a2af131b070adea0bfcaf582ace3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd8fae105b68a2af131b070ade...
Author: Michael Müller michael@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);