mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 08:53:01 -05:00
tst: winfsp-tests: stream_setfileinfo_test
This commit is contained in:
parent
92dc2feecd
commit
e4cabc50c5
@ -956,7 +956,7 @@ static void stream_setfileinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoT
|
|||||||
{
|
{
|
||||||
void *memfs = memfs_start_ex(Flags, FileInfoTimeout);
|
void *memfs = memfs_start_ex(Flags, FileInfoTimeout);
|
||||||
|
|
||||||
HANDLE Handle;
|
HANDLE Handle, StreamHandle;
|
||||||
BOOL Success;
|
BOOL Success;
|
||||||
WCHAR FilePath[MAX_PATH];
|
WCHAR FilePath[MAX_PATH];
|
||||||
BY_HANDLE_FILE_INFORMATION FileInfo0, FileInfo;
|
BY_HANDLE_FILE_INFORMATION FileInfo0, FileInfo;
|
||||||
@ -969,46 +969,46 @@ static void stream_setfileinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoT
|
|||||||
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0:foo",
|
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0:foo",
|
||||||
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
|
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
|
||||||
|
|
||||||
Handle = CreateFileW(FilePath,
|
StreamHandle = CreateFileW(FilePath,
|
||||||
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
|
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0,
|
||||||
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
|
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
|
||||||
ASSERT(INVALID_HANDLE_VALUE != Handle);
|
ASSERT(INVALID_HANDLE_VALUE != StreamHandle);
|
||||||
|
|
||||||
Success = GetFileInformationByHandle(Handle, &FileInfo0);
|
Success = GetFileInformationByHandle(StreamHandle, &FileInfo0);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
//ASSERT(FILE_ATTRIBUTE_ARCHIVE == FileInfo0.dwFileAttributes);
|
//ASSERT(FILE_ATTRIBUTE_ARCHIVE == FileInfo0.dwFileAttributes);
|
||||||
|
|
||||||
Success = SetFileAttributesW(FilePath, FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_HIDDEN);
|
Success = SetFileAttributesW(FilePath, FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_HIDDEN);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
|
|
||||||
Success = GetFileInformationByHandle(Handle, &FileInfo);
|
Success = GetFileInformationByHandle(StreamHandle, &FileInfo);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
ASSERT(FILE_ATTRIBUTE_HIDDEN == FileInfo.dwFileAttributes);
|
ASSERT(FILE_ATTRIBUTE_HIDDEN == FileInfo.dwFileAttributes);
|
||||||
|
|
||||||
*(PUINT64)&FileTime = 0x4200000042ULL;
|
*(PUINT64)&FileTime = 0x4200000042ULL;
|
||||||
Success = SetFileTime(Handle, 0, &FileTime, &FileTime);
|
Success = SetFileTime(StreamHandle, 0, &FileTime, &FileTime);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
|
|
||||||
Success = GetFileInformationByHandle(Handle, &FileInfo);
|
Success = GetFileInformationByHandle(StreamHandle, &FileInfo);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
ASSERT(*(PUINT64)&FileInfo0.ftCreationTime == *(PUINT64)&FileInfo.ftCreationTime);
|
ASSERT(*(PUINT64)&FileInfo0.ftCreationTime == *(PUINT64)&FileInfo.ftCreationTime);
|
||||||
ASSERT(0x4200000042ULL == *(PUINT64)&FileInfo.ftLastAccessTime);
|
ASSERT(0x4200000042ULL == *(PUINT64)&FileInfo.ftLastAccessTime);
|
||||||
ASSERT(0x4200000042ULL == *(PUINT64)&FileInfo.ftLastWriteTime);
|
ASSERT(0x4200000042ULL == *(PUINT64)&FileInfo.ftLastWriteTime);
|
||||||
|
|
||||||
Success = SetFileTime(Handle, &FileTime, 0, 0);
|
Success = SetFileTime(StreamHandle, &FileTime, 0, 0);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
|
|
||||||
Success = GetFileInformationByHandle(Handle, &FileInfo);
|
Success = GetFileInformationByHandle(StreamHandle, &FileInfo);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
ASSERT(0x4200000042ULL == *(PUINT64)&FileInfo.ftCreationTime);
|
ASSERT(0x4200000042ULL == *(PUINT64)&FileInfo.ftCreationTime);
|
||||||
|
|
||||||
Offset = SetFilePointer(Handle, 42, 0, 0);
|
Offset = SetFilePointer(StreamHandle, 42, 0, 0);
|
||||||
ASSERT(42 == Offset);
|
ASSERT(42 == Offset);
|
||||||
|
|
||||||
Success = SetEndOfFile(Handle);
|
Success = SetEndOfFile(StreamHandle);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
|
|
||||||
Success = GetFileInformationByHandle(Handle, &FileInfo);
|
Success = GetFileInformationByHandle(StreamHandle, &FileInfo);
|
||||||
ASSERT(Success);
|
ASSERT(Success);
|
||||||
ASSERT(42 == FileInfo.nFileSizeLow);
|
ASSERT(42 == FileInfo.nFileSizeLow);
|
||||||
ASSERT(0 == FileInfo.nFileSizeHigh);
|
ASSERT(0 == FileInfo.nFileSizeHigh);
|
||||||
@ -1016,15 +1016,13 @@ static void stream_setfileinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoT
|
|||||||
nFileIndexHigh = FileInfo.nFileIndexHigh;
|
nFileIndexHigh = FileInfo.nFileIndexHigh;
|
||||||
nFileIndexLow = FileInfo.nFileIndexLow;
|
nFileIndexLow = FileInfo.nFileIndexLow;
|
||||||
|
|
||||||
CloseHandle(Handle);
|
|
||||||
|
|
||||||
/* test main file */
|
/* test main file */
|
||||||
|
|
||||||
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0",
|
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0",
|
||||||
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
|
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
|
||||||
|
|
||||||
Handle = CreateFileW(FilePath,
|
Handle = CreateFileW(FilePath,
|
||||||
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
|
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0,
|
||||||
OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, 0);
|
OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, 0);
|
||||||
ASSERT(INVALID_HANDLE_VALUE != Handle);
|
ASSERT(INVALID_HANDLE_VALUE != Handle);
|
||||||
|
|
||||||
@ -1040,6 +1038,29 @@ static void stream_setfileinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoT
|
|||||||
ASSERT(nFileIndexHigh == FileInfo.nFileIndexHigh);
|
ASSERT(nFileIndexHigh == FileInfo.nFileIndexHigh);
|
||||||
ASSERT(nFileIndexLow == FileInfo.nFileIndexLow);
|
ASSERT(nFileIndexLow == FileInfo.nFileIndexLow);
|
||||||
|
|
||||||
|
/* test mixed */
|
||||||
|
|
||||||
|
*(PUINT64)&FileTime = 0x4100000041ULL;
|
||||||
|
Success = SetFileTime(StreamHandle, &FileTime, &FileTime, &FileTime);
|
||||||
|
ASSERT(Success);
|
||||||
|
|
||||||
|
Success = GetFileInformationByHandle(Handle, &FileInfo);
|
||||||
|
ASSERT(Success);
|
||||||
|
ASSERT(0x4100000041ULL == *(PUINT64)&FileInfo.ftLastAccessTime);
|
||||||
|
ASSERT(0x4100000041ULL == *(PUINT64)&FileInfo.ftLastWriteTime);
|
||||||
|
ASSERT(0x4100000041ULL == *(PUINT64)&FileInfo.ftCreationTime);
|
||||||
|
|
||||||
|
*(PUINT64)&FileTime = 0x4300000043ULL;
|
||||||
|
Success = SetFileTime(Handle, &FileTime, &FileTime, &FileTime);
|
||||||
|
ASSERT(Success);
|
||||||
|
|
||||||
|
Success = GetFileInformationByHandle(StreamHandle, &FileInfo);
|
||||||
|
ASSERT(Success);
|
||||||
|
ASSERT(0x4300000043ULL == *(PUINT64)&FileInfo.ftLastAccessTime);
|
||||||
|
ASSERT(0x4300000043ULL == *(PUINT64)&FileInfo.ftLastWriteTime);
|
||||||
|
ASSERT(0x4300000043ULL == *(PUINT64)&FileInfo.ftCreationTime);
|
||||||
|
|
||||||
|
CloseHandle(StreamHandle);
|
||||||
CloseHandle(Handle);
|
CloseHandle(Handle);
|
||||||
|
|
||||||
memfs_stop(memfs);
|
memfs_stop(memfs);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user