tst: winfsp-tests: HookCreateDirectoryW, HookMoveFileExW, HookFindFirstFileW

This commit is contained in:
Bill Zissimopoulos 2016-10-26 12:37:36 -07:00
parent e07ef0712e
commit b19621233a
3 changed files with 58 additions and 6 deletions

View File

@ -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));

View File

@ -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);
}

View File

@ -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,