mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 19:48:38 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			165 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * @file winfsp-tests.h
 | |
|  *
 | |
|  * @copyright 2015-2017 Bill Zissimopoulos
 | |
|  */
 | |
| /*
 | |
|  * This file is part of WinFsp.
 | |
|  *
 | |
|  * You can redistribute it and/or modify it under the terms of the GNU
 | |
|  * General Public License version 3 as published by the Free Software
 | |
|  * Foundation.
 | |
|  *
 | |
|  * Licensees holding a valid commercial license may use this file in
 | |
|  * accordance with the commercial license agreement provided with the
 | |
|  * software.
 | |
|  */
 | |
| 
 | |
| #include <windows.h>
 | |
| 
 | |
| #define ABORT(s)\
 | |
|     do\
 | |
|     {\
 | |
|         void tlib_printf(const char *fmt, ...);\
 | |
|         tlib_printf("ABORT: %s: %s\n", __func__, s);\
 | |
|         abort();\
 | |
|     } while (0,0)
 | |
| 
 | |
| #define testalpha(c)                    ('a' <= ((c) | 0x20) && ((c) | 0x20) <= 'z')
 | |
| #define togglealpha(c)                  ((c) ^ 0x20)
 | |
| 
 | |
| HANDLE WINAPI HookCreateFileW(
 | |
|     LPCWSTR lpFileName,
 | |
|     DWORD dwDesiredAccess,
 | |
|     DWORD dwShareMode,
 | |
|     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
 | |
|     DWORD dwCreationDisposition,
 | |
|     DWORD dwFlagsAndAttributes,
 | |
|     HANDLE hTemplateFile);
 | |
| BOOL WINAPI HookCloseHandle(
 | |
|     HANDLE hObject);
 | |
| BOOL WINAPI HookSetFileAttributesW(
 | |
|     LPCWSTR lpFileName,
 | |
|     DWORD dwFileAttributes);
 | |
| BOOL WINAPI HookCreateDirectoryW(
 | |
|     LPCWSTR lpPathName,
 | |
|     LPSECURITY_ATTRIBUTES lpSecurityAttributes);
 | |
| BOOL WINAPI HookDeleteFileW(
 | |
|     LPCWSTR lpFileName);
 | |
| BOOL WINAPI HookRemoveDirectoryW(
 | |
|     LPCWSTR lpPathName);
 | |
| BOOL WINAPI HookMoveFileExW(
 | |
|     LPCWSTR lpExistingFileName,
 | |
|     LPCWSTR lpNewFileName,
 | |
|     DWORD dwFlags);
 | |
| HANDLE WINAPI HookFindFirstFileW(
 | |
|     LPCWSTR lpFileName,
 | |
|     LPWIN32_FIND_DATAW lpFindFileData);
 | |
| HANDLE WINAPI HookFindFirstStreamW(
 | |
|     LPCWSTR lpFileName,
 | |
|     STREAM_INFO_LEVELS InfoLevel,
 | |
|     LPVOID lpFindStreamData,
 | |
|     DWORD dwFlags);
 | |
| BOOL WINAPI HookGetDiskFreeSpaceW(
 | |
|     LPCWSTR lpRootPathName,
 | |
|     LPDWORD lpSectorsPerCluster,
 | |
|     LPDWORD lpBytesPerSector,
 | |
|     LPDWORD lpNumberOfFreeClusters,
 | |
|     LPDWORD lpTotalNumberOfClusters);
 | |
| BOOL WINAPI HookGetVolumeInformationW(
 | |
|     LPCWSTR lpRootPathName,
 | |
|     LPWSTR lpVolumeNameBuffer,
 | |
|     DWORD nVolumeNameSize,
 | |
|     LPDWORD lpVolumeSerialNumber,
 | |
|     LPDWORD lpMaximumComponentLength,
 | |
|     LPDWORD lpFileSystemFlags,
 | |
|     LPWSTR lpFileSystemNameBuffer,
 | |
|     DWORD nFileSystemNameSize);
 | |
| BOOL WINAPI HookSetVolumeLabelW(
 | |
|     LPCWSTR lpRootPathName,
 | |
|     LPCWSTR lpVolumeName);
 | |
| BOOL WINAPI HookSetCurrentDirectoryW(
 | |
|     LPCWSTR lpPathName);
 | |
| static inline BOOL RealSetCurrentDirectoryW(
 | |
|     LPCWSTR lpPathName)
 | |
| {
 | |
|     return SetCurrentDirectoryW(lpPathName);
 | |
| }
 | |
| BOOL WINAPI HookCreateProcessW(
 | |
|     LPCWSTR lpApplicationName,
 | |
|     LPWSTR lpCommandLine,
 | |
|     LPSECURITY_ATTRIBUTES lpProcessAttributes,
 | |
|     LPSECURITY_ATTRIBUTES lpThreadAttributes,
 | |
|     BOOL bInheritHandles,
 | |
|     DWORD dwCreationFlags,
 | |
|     LPVOID lpEnvironment,
 | |
|     LPCWSTR lpCurrentDirectory,
 | |
|     LPSTARTUPINFOW lpStartupInfo,
 | |
|     LPPROCESS_INFORMATION lpProcessInformation);
 | |
| #if !defined(WINFSP_TESTS_NO_HOOKS)
 | |
| #define CreateFileW HookCreateFileW
 | |
| #define CloseHandle HookCloseHandle
 | |
| #define SetFileAttributesW HookSetFileAttributesW
 | |
| #define CreateDirectoryW HookCreateDirectoryW
 | |
| #define DeleteFileW HookDeleteFileW
 | |
| #define RemoveDirectoryW HookRemoveDirectoryW
 | |
| #define MoveFileExW HookMoveFileExW
 | |
| #define FindFirstFileW HookFindFirstFileW
 | |
| #define FindFirstStreamW HookFindFirstStreamW
 | |
| #define GetDiskFreeSpaceW HookGetDiskFreeSpaceW
 | |
| #define GetVolumeInformationW HookGetVolumeInformationW
 | |
| #define SetVolumeLabelW HookSetVolumeLabelW
 | |
| #define SetCurrentDirectoryW HookSetCurrentDirectoryW
 | |
| #define CreateProcessW HookCreateProcessW
 | |
| #endif
 | |
| 
 | |
| HANDLE WINAPI ResilientCreateFileW(
 | |
|     LPCWSTR lpFileName,
 | |
|     DWORD dwDesiredAccess,
 | |
|     DWORD dwShareMode,
 | |
|     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
 | |
|     DWORD dwCreationDisposition,
 | |
|     DWORD dwFlagsAndAttributes,
 | |
|     HANDLE hTemplateFile);
 | |
| BOOL WINAPI ResilientCloseHandle(
 | |
|     HANDLE hObject);
 | |
| BOOL WINAPI ResilientDeleteFileW(
 | |
|     LPCWSTR lpFileName);
 | |
| BOOL WINAPI ResilientRemoveDirectoryW(
 | |
|     LPCWSTR lpPathName);
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     BOOLEAN Disposition;
 | |
| } MY_FILE_DISPOSITION_INFO;
 | |
| 
 | |
| void *memfs_start_ex(ULONG Flags, ULONG FileInfoTimeout);
 | |
| void *memfs_start(ULONG Flags);
 | |
| void memfs_stop(void *data);
 | |
| PWSTR memfs_volumename(void *data);
 | |
| 
 | |
| int mywcscmp(PWSTR a, int alen, PWSTR b, int blen);
 | |
| int myrand(void);
 | |
| 
 | |
| #define GetTestDirectory(D)             GetTestDirectoryEx(DirBuf, sizeof DirBuf, 0)
 | |
| #define GetTestDirectoryAndDrive(D,V)   GetTestDirectoryEx(DirBuf, sizeof DirBuf, V)
 | |
| VOID GetTestDirectoryEx(PWSTR DirBuf, ULONG DirBufSize, PWSTR DriveBuf);
 | |
| 
 | |
| extern int NtfsTests;
 | |
| extern int WinFspDiskTests;
 | |
| extern int WinFspNetTests;
 | |
| 
 | |
| extern BOOLEAN OptResilient;
 | |
| extern BOOLEAN OptCaseInsensitiveCmp;
 | |
| extern BOOLEAN OptCaseInsensitive;
 | |
| extern BOOLEAN OptCaseRandomize;
 | |
| extern WCHAR OptOplock;
 | |
| extern WCHAR OptMountPointBuf[], *OptMountPoint;
 | |
| extern WCHAR OptShareNameBuf[], *OptShareName, *OptShareTarget;
 | |
|     extern WCHAR OptShareComputer[];
 | |
|     extern ULONG OptSharePrefixLength;
 | |
| extern HANDLE OptNoTraverseToken;
 | |
|     extern LUID OptNoTraverseLuid;
 | |
| 
 | |
| extern int memfs_running;
 |