diff --git a/reactos/lib/kernel32/file/file.c b/reactos/lib/kernel32/file/file.c index 2e73b1c3970..cd71a4903d7 100644 --- a/reactos/lib/kernel32/file/file.c +++ b/reactos/lib/kernel32/file/file.c @@ -1,4 +1,4 @@ -/* $Id: file.c,v 1.27 2001/08/06 18:35:15 hbirr Exp $ +/* $Id: file.c,v 1.28 2001/11/01 10:35:15 hbirr Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -388,31 +388,35 @@ WINBOOL STDCALL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation) { - FILE_DIRECTORY_INFORMATION FileDirectory; + struct + { + FILE_FS_VOLUME_INFORMATION FileFsVolume; + WCHAR Name[255]; + } + FileFsVolume; + + FILE_BASIC_INFORMATION FileBasic; FILE_INTERNAL_INFORMATION FileInternal; - FILE_FS_VOLUME_INFORMATION FileFsVolume; FILE_STANDARD_INFORMATION FileStandard; NTSTATUS errCode; IO_STATUS_BLOCK IoStatusBlock; - + errCode = NtQueryInformationFile(hFile, &IoStatusBlock, - &FileDirectory, - sizeof(FILE_DIRECTORY_INFORMATION), - FileDirectoryInformation); + &FileBasic, + sizeof(FILE_BASIC_INFORMATION), + FileBasicInformation); if (!NT_SUCCESS(errCode)) { SetLastErrorByStatus(errCode); return FALSE; } - lpFileInformation->dwFileAttributes = (DWORD)FileDirectory.FileAttributes; - memcpy(&lpFileInformation->ftCreationTime,&FileDirectory.CreationTime,sizeof(LARGE_INTEGER)); - memcpy(&lpFileInformation->ftLastAccessTime,&FileDirectory.LastAccessTime,sizeof(LARGE_INTEGER)); - memcpy(&lpFileInformation->ftLastWriteTime, &FileDirectory.LastWriteTime,sizeof(LARGE_INTEGER)); - lpFileInformation->nFileSizeHigh = FileDirectory.AllocationSize.u.HighPart; - lpFileInformation->nFileSizeLow = FileDirectory.AllocationSize.u.LowPart; - + lpFileInformation->dwFileAttributes = (DWORD)FileBasic.FileAttributes; + memcpy(&lpFileInformation->ftCreationTime,&FileBasic.CreationTime,sizeof(LARGE_INTEGER)); + memcpy(&lpFileInformation->ftLastAccessTime,&FileBasic.LastAccessTime,sizeof(LARGE_INTEGER)); + memcpy(&lpFileInformation->ftLastWriteTime, &FileBasic.LastWriteTime,sizeof(LARGE_INTEGER)); + errCode = NtQueryInformationFile(hFile, &IoStatusBlock, &FileInternal, @@ -426,11 +430,11 @@ GetFileInformationByHandle(HANDLE hFile, lpFileInformation->nFileIndexHigh = FileInternal.IndexNumber.u.HighPart; lpFileInformation->nFileIndexLow = FileInternal.IndexNumber.u.LowPart; - + errCode = NtQueryVolumeInformationFile(hFile, &IoStatusBlock, &FileFsVolume, - sizeof(FILE_FS_VOLUME_INFORMATION), + sizeof(FileFsVolume), FileFsVolumeInformation); if (!NT_SUCCESS(errCode)) { @@ -438,8 +442,8 @@ GetFileInformationByHandle(HANDLE hFile, return FALSE; } - lpFileInformation->dwVolumeSerialNumber = FileFsVolume.VolumeSerialNumber; - + lpFileInformation->dwVolumeSerialNumber = FileFsVolume.FileFsVolume.VolumeSerialNumber; + errCode = NtQueryInformationFile(hFile, &IoStatusBlock, &FileStandard, @@ -452,6 +456,8 @@ GetFileInformationByHandle(HANDLE hFile, } lpFileInformation->nNumberOfLinks = FileStandard.NumberOfLinks; + lpFileInformation->nFileSizeHigh = FileStandard.AllocationSize.u.HighPart; + lpFileInformation->nFileSizeLow = FileStandard.AllocationSize.u.LowPart; return TRUE; }