implemented SetFileAttributesByHandle() and GetFileAttributesByHandle() Modified: trunk/reactos/lib/kernel32/file/file.c Modified: trunk/reactos/lib/kernel32/kernel32.def _____
Modified: trunk/reactos/lib/kernel32/file/file.c --- trunk/reactos/lib/kernel32/file/file.c 2005-08-24 23:44:27 UTC (rev 17529) +++ trunk/reactos/lib/kernel32/file/file.c 2005-08-24 23:59:03 UTC (rev 17530) @@ -964,7 +964,81 @@
return Result ? FileAttributeData.dwFileAttributes : INVALID_FILE_ATTRIBUTES; }
+ +/* + * @implemented + */ BOOL STDCALL +GetFileAttributesByHandle(IN HANDLE hFile, + OUT LPDWORD dwFileAttributes, + IN DWORD dwFlags) +{ + FILE_BASIC_INFORMATION FileBasic; + IO_STATUS_BLOCK IoStatusBlock; + NTSTATUS Status; + + UNREFERENCED_PARAMETER(dwFlags); + + Status = NtQueryInformationFile(hFile, + &IoStatusBlock, + &FileBasic, + sizeof(FileBasic), + FileBasicInformation); + if (NT_SUCCESS(Status)) + { + *dwFileAttributes = FileBasic.FileAttributes; + return TRUE; + } + + SetLastErrorByStatus(Status); + return FALSE; +} + + +/* + * @implemented + */ +BOOL STDCALL +SetFileAttributesByHandle(IN HANDLE hFile, + IN DWORD dwFileAttributes, + IN DWORD dwFlags) +{ + FILE_BASIC_INFORMATION FileBasic; + IO_STATUS_BLOCK IoStatusBlock; + NTSTATUS Status; + + UNREFERENCED_PARAMETER(dwFlags); + + Status = NtQueryInformationFile(hFile, + &IoStatusBlock, + &FileBasic, + sizeof(FileBasic), + FileBasicInformation); + if (NT_SUCCESS(Status)) + { + FileBasic.FileAttributes = dwFileAttributes; + + Status = NtSetInformationFile(hFile, + &IoStatusBlock, + &FileBasic, + sizeof(FileBasic), + FileBasicInformation); + } + + if (!NT_SUCCESS(Status)) + { + SetLastErrorByStatus(Status); + return FALSE; + } + + return TRUE; +} + + +/* + * @implemented + */ +BOOL STDCALL SetFileAttributesA( LPCSTR lpFileName, DWORD dwFileAttributes) _____
Modified: trunk/reactos/lib/kernel32/kernel32.def --- trunk/reactos/lib/kernel32/kernel32.def 2005-08-24 23:44:27 UTC (rev 17529) +++ trunk/reactos/lib/kernel32/kernel32.def 2005-08-24 23:59:03 UTC (rev 17530) @@ -372,6 +372,7 @@
GetExpandedNameW@8 GetFileAttributesA@4 GetFileAttributesW@4 +GetFileAttributesByHandle@12 GetFileAttributesExA@12 GetFileAttributesExW@12 GetFileInformationByHandle@8 @@ -805,6 +806,7 @@ SetFileApisToOEM@0 SetFileAttributesA@8 SetFileAttributesW@8 +SetFileAttributesByHandle@12 SetFilePointer@16 SetFilePointerEx@20 SetFileShortNameA@8