diff --git a/tst/winfsp-tests/create-test.c b/tst/winfsp-tests/create-test.c index e5e7cd2c..f1ee048a 100644 --- a/tst/winfsp-tests/create-test.c +++ b/tst/winfsp-tests/create-test.c @@ -177,9 +177,12 @@ void create_dotest(ULONG Flags, PWSTR Prefix) StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\dir1\\\\", Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs)); - Success = CreateDirectory(FilePath, 0); - ASSERT(!Success); - ASSERT(ERROR_INVALID_NAME == GetLastError()); + if (0 == OptMountPoint && 0 == OptShareName) + { + Success = CreateDirectory(FilePath, 0); + ASSERT(!Success); + ASSERT(ERROR_INVALID_NAME == GetLastError()); + } StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\dir1\\", Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs)); diff --git a/tst/winfsp-tests/hooks.c b/tst/winfsp-tests/hooks.c index eb09ccd6..6af40d52 100644 --- a/tst/winfsp-tests/hooks.c +++ b/tst/winfsp-tests/hooks.c @@ -181,6 +181,17 @@ BOOL HookCloseHandle( return ResilientCloseHandle(hObject); } +BOOL HookCreateDirectoryW( + LPCWSTR lpPathName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes) +{ + WCHAR FileNameBuf[FILENAMEBUF_SIZE]; + + PrepareFileName(lpPathName, FileNameBuf); + + return CreateDirectoryW(FileNameBuf, lpSecurityAttributes); +} + BOOL HookDeleteFileW( LPCWSTR lpFileName) { @@ -189,9 +200,9 @@ BOOL HookDeleteFileW( PrepareFileName(lpFileName, FileNameBuf); if (!OptResilient) - return DeleteFileW(lpFileName); + return DeleteFileW(FileNameBuf); else - return ResilientDeleteFileW(lpFileName); + return ResilientDeleteFileW(FileNameBuf); } BOOL HookRemoveDirectoryW( @@ -201,5 +212,30 @@ BOOL HookRemoveDirectoryW( PrepareFileName(lpPathName, FileNameBuf); - return RemoveDirectoryW(lpPathName); + return RemoveDirectoryW(FileNameBuf); +} + +BOOL HookMoveFileExW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + DWORD dwFlags) +{ + WCHAR OldFileNameBuf[FILENAMEBUF_SIZE]; + WCHAR NewFileNameBuf[FILENAMEBUF_SIZE]; + + PrepareFileName(lpExistingFileName, OldFileNameBuf); + PrepareFileName(lpNewFileName, NewFileNameBuf); + + return MoveFileExW(OldFileNameBuf, NewFileNameBuf, dwFlags); +} + +HANDLE HookFindFirstFileW( + LPCWSTR lpFileName, + LPWIN32_FIND_DATAW lpFindFileData) +{ + WCHAR FileNameBuf[FILENAMEBUF_SIZE]; + + PrepareFileName(lpFileName, FileNameBuf); + + return FindFirstFileW(FileNameBuf, lpFindFileData); } diff --git a/tst/winfsp-tests/winfsp-tests.h b/tst/winfsp-tests/winfsp-tests.h index 514e4887..3717fd40 100644 --- a/tst/winfsp-tests/winfsp-tests.h +++ b/tst/winfsp-tests/winfsp-tests.h @@ -31,8 +31,11 @@ #if !defined(WINFSP_TESTS_NO_HOOKS) #define CreateFileW HookCreateFileW #define CloseHandle HookCloseHandle +#define CreateDirectoryW HookCreateDirectoryW #define DeleteFileW HookDeleteFileW #define RemoveDirectoryW HookRemoveDirectoryW +#define MoveFileExW HookMoveFileExW +#define FindFirstFileW HookFindFirstFileW #endif HANDLE HookCreateFileW( LPCWSTR lpFileName, @@ -44,10 +47,20 @@ HANDLE HookCreateFileW( HANDLE hTemplateFile); BOOL HookCloseHandle( HANDLE hObject); +BOOL HookCreateDirectoryW( + LPCWSTR lpPathName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); BOOL HookDeleteFileW( LPCWSTR lpFileName); BOOL HookRemoveDirectoryW( LPCWSTR lpPathName); +BOOL HookMoveFileExW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + DWORD dwFlags); +HANDLE HookFindFirstFileW( + LPCWSTR lpFileName, + LPWIN32_FIND_DATAW lpFindFileData); HANDLE ResilientCreateFileW( LPCWSTR lpFileName,