mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -05:00
tst: originating process id
This commit is contained in:
parent
26485ffbd6
commit
193d5f4e91
@ -1082,6 +1082,57 @@ void create_namelen_test(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FSP_FILE_SYSTEM_OPERATION *create_pid_CreateOp;
|
||||||
|
UINT32 create_pid_Pass, create_pid_Fail;
|
||||||
|
|
||||||
|
NTSTATUS create_pid_Create(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||||
|
{
|
||||||
|
if (FspFileSystemOperationProcessId() == GetCurrentProcessId())
|
||||||
|
InterlockedIncrement(&create_pid_Pass);
|
||||||
|
else
|
||||||
|
InterlockedIncrement(&create_pid_Fail);
|
||||||
|
return create_pid_CreateOp(FileSystem, Request, Response);
|
||||||
|
}
|
||||||
|
|
||||||
|
void create_pid_dotest(ULONG Flags, PWSTR Prefix)
|
||||||
|
{
|
||||||
|
create_pid_Pass = create_pid_Fail = 0;
|
||||||
|
|
||||||
|
void *memfs = memfs_start(Flags);
|
||||||
|
|
||||||
|
FSP_FILE_SYSTEM *FileSystem = MemfsFileSystem(memfs);
|
||||||
|
create_pid_CreateOp = FileSystem->Operations[FspFsctlTransactCreateKind];
|
||||||
|
FileSystem->Operations[FspFsctlTransactCreateKind] = create_pid_Create;
|
||||||
|
|
||||||
|
HANDLE Handle;
|
||||||
|
WCHAR FilePath[MAX_PATH];
|
||||||
|
|
||||||
|
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0",
|
||||||
|
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
|
||||||
|
|
||||||
|
Handle = CreateFileW(FilePath,
|
||||||
|
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW,
|
||||||
|
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0);
|
||||||
|
ASSERT(INVALID_HANDLE_VALUE != Handle);
|
||||||
|
CloseHandle(Handle);
|
||||||
|
|
||||||
|
memfs_stop(memfs);
|
||||||
|
|
||||||
|
ASSERT(0 < create_pid_Pass && 0 == create_pid_Fail);
|
||||||
|
}
|
||||||
|
|
||||||
|
void create_pid_test(void)
|
||||||
|
{
|
||||||
|
if (NtfsTests)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (WinFspDiskTests)
|
||||||
|
create_pid_dotest(MemfsDisk, 0);
|
||||||
|
if (WinFspNetTests)
|
||||||
|
create_pid_dotest(MemfsNet, L"\\\\memfs\\share");
|
||||||
|
}
|
||||||
|
|
||||||
void create_tests(void)
|
void create_tests(void)
|
||||||
{
|
{
|
||||||
TEST(create_test);
|
TEST(create_test);
|
||||||
@ -1096,4 +1147,6 @@ void create_tests(void)
|
|||||||
TEST(create_curdir_test);
|
TEST(create_curdir_test);
|
||||||
if (!OptShareName && !OptMountPoint)
|
if (!OptShareName && !OptMountPoint)
|
||||||
TEST(create_namelen_test);
|
TEST(create_namelen_test);
|
||||||
|
if (!NtfsTests)
|
||||||
|
TEST(create_pid_test);
|
||||||
}
|
}
|
||||||
|
@ -1512,6 +1512,78 @@ void rename_standby_test(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FSP_FILE_SYSTEM_OPERATION *rename_pid_SetInformationOp;
|
||||||
|
UINT32 rename_pid_Pass, rename_pid_Fail;
|
||||||
|
|
||||||
|
NTSTATUS rename_pid_SetInformation(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||||
|
{
|
||||||
|
if (10/*FileRenameInformation*/ == Request->Req.SetInformation.FileInformationClass)
|
||||||
|
{
|
||||||
|
if (FspFileSystemOperationProcessId() == GetCurrentProcessId())
|
||||||
|
InterlockedIncrement(&rename_pid_Pass);
|
||||||
|
else
|
||||||
|
InterlockedIncrement(&rename_pid_Fail);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (FspFileSystemOperationProcessId() == 0)
|
||||||
|
InterlockedIncrement(&rename_pid_Pass);
|
||||||
|
else
|
||||||
|
InterlockedIncrement(&rename_pid_Fail);
|
||||||
|
}
|
||||||
|
return rename_pid_SetInformationOp(FileSystem, Request, Response);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rename_pid_dotest(ULONG Flags, PWSTR Prefix)
|
||||||
|
{
|
||||||
|
rename_pid_Pass = rename_pid_Fail = 0;
|
||||||
|
|
||||||
|
void *memfs = memfs_start(Flags);
|
||||||
|
|
||||||
|
FSP_FILE_SYSTEM *FileSystem = MemfsFileSystem(memfs);
|
||||||
|
rename_pid_SetInformationOp = FileSystem->Operations[FspFsctlTransactSetInformationKind];
|
||||||
|
FileSystem->Operations[FspFsctlTransactSetInformationKind] = rename_pid_SetInformation;
|
||||||
|
|
||||||
|
HANDLE Handle;
|
||||||
|
BOOL Success;
|
||||||
|
WCHAR File0Path[MAX_PATH];
|
||||||
|
WCHAR File1Path[MAX_PATH];
|
||||||
|
|
||||||
|
StringCbPrintfW(File0Path, sizeof File0Path, L"%s%s\\file0",
|
||||||
|
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
|
||||||
|
|
||||||
|
StringCbPrintfW(File1Path, sizeof File1Path, L"%s%s\\file1",
|
||||||
|
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
|
||||||
|
|
||||||
|
Handle = CreateFileW(File0Path,
|
||||||
|
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
|
||||||
|
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
|
||||||
|
ASSERT(INVALID_HANDLE_VALUE != Handle);
|
||||||
|
CloseHandle(Handle);
|
||||||
|
|
||||||
|
Success = MoveFileExW(File0Path, File1Path, MOVEFILE_REPLACE_EXISTING);
|
||||||
|
ASSERT(Success);
|
||||||
|
|
||||||
|
Success = DeleteFileW(File1Path);
|
||||||
|
ASSERT(Success);
|
||||||
|
|
||||||
|
memfs_stop(memfs);
|
||||||
|
|
||||||
|
ASSERT(0 < rename_pid_Pass && 0 == rename_pid_Fail);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rename_pid_test(void)
|
||||||
|
{
|
||||||
|
if (NtfsTests)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (WinFspDiskTests)
|
||||||
|
rename_pid_dotest(MemfsDisk, 0);
|
||||||
|
if (WinFspNetTests)
|
||||||
|
rename_pid_dotest(MemfsNet, L"\\\\memfs\\share");
|
||||||
|
}
|
||||||
|
|
||||||
void getvolinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoTimeout)
|
void getvolinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoTimeout)
|
||||||
{
|
{
|
||||||
void *memfs = memfs_start_ex(Flags, FileInfoTimeout);
|
void *memfs = memfs_start_ex(Flags, FileInfoTimeout);
|
||||||
@ -1736,6 +1808,8 @@ void info_tests(void)
|
|||||||
if (!OptShareName)
|
if (!OptShareName)
|
||||||
TEST(rename_mmap_test);
|
TEST(rename_mmap_test);
|
||||||
TEST(rename_standby_test);
|
TEST(rename_standby_test);
|
||||||
|
if (!NtfsTests)
|
||||||
|
TEST(rename_pid_test);
|
||||||
TEST(getvolinfo_test);
|
TEST(getvolinfo_test);
|
||||||
TEST(setvolinfo_test);
|
TEST(setvolinfo_test);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user