mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-29 19:18:39 -05:00 
			
		
		
		
	tst: passthrough, passthrough-fuse: WinFspLoad: eliminate RRF_SUBKEY_WOW6432KEY
This commit is contained in:
		| @@ -523,7 +523,7 @@ static int maperror(int winerrno) | ||||
|     } | ||||
| } | ||||
|  | ||||
| NTSTATUS WinFspLoad(VOID) | ||||
| static NTSTATUS WinFspLoad(VOID) | ||||
| { | ||||
| #if defined(_WIN64) | ||||
| #define FSP_DLLNAME                     "winfsp-x64.dll" | ||||
| @@ -532,29 +532,34 @@ NTSTATUS WinFspLoad(VOID) | ||||
| #endif | ||||
| #define FSP_DLLPATH                     "bin\\" FSP_DLLNAME | ||||
|  | ||||
|     WCHAR PathBuf[MAX_PATH - (sizeof L"" FSP_DLLPATH / sizeof(WCHAR) - 1)]; | ||||
|     WCHAR PathBuf[MAX_PATH]; | ||||
|     DWORD Size; | ||||
|     HKEY RegKey; | ||||
|     LONG Result; | ||||
|     HMODULE Module; | ||||
|  | ||||
|     Module = LoadLibraryW(L"" FSP_DLLNAME); | ||||
|     if (0 == Module) | ||||
|     { | ||||
|         Size = sizeof PathBuf; | ||||
|         Result = RegGetValueW( | ||||
|             HKEY_LOCAL_MACHINE, L"Software\\WinFsp", L"InstallDir", | ||||
|             RRF_RT_REG_SZ | 0x00020000/*RRF_SUBKEY_WOW6432KEY*/, | ||||
|             0, PathBuf, &Size); | ||||
|         Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\WinFsp", | ||||
|             0, KEY_READ | KEY_WOW64_32KEY, &RegKey); | ||||
|         if (ERROR_SUCCESS == Result) | ||||
|         { | ||||
|             Size = sizeof PathBuf - sizeof L"" FSP_DLLPATH + sizeof(WCHAR); | ||||
|             Result = RegGetValueW(RegKey, 0, L"InstallDir", | ||||
|                 RRF_RT_REG_SZ, 0, PathBuf, &Size); | ||||
|             RegCloseKey(RegKey); | ||||
|         } | ||||
|         if (ERROR_SUCCESS != Result) | ||||
|             return 0xC0000034L/*STATUS_OBJECT_NAME_NOT_FOUND*/; | ||||
|             return STATUS_OBJECT_NAME_NOT_FOUND; | ||||
|  | ||||
|         RtlCopyMemory(PathBuf + (Size / sizeof(WCHAR) - 1), L"" FSP_DLLPATH, sizeof L"" FSP_DLLPATH); | ||||
|         Module = LoadLibraryW(PathBuf); | ||||
|         if (0 == Module) | ||||
|             return 0xC0000135L/*STATUS_DLL_NOT_FOUND*/; | ||||
|             return STATUS_DLL_NOT_FOUND; | ||||
|     } | ||||
|  | ||||
|     return 0/*STATUS_SUCCESS*/; | ||||
|     return STATUS_SUCCESS; | ||||
|  | ||||
| #undef FSP_DLLNAME | ||||
| #undef FSP_DLLPATH | ||||
|   | ||||
| @@ -925,19 +925,24 @@ static NTSTATUS WinFspLoad(VOID) | ||||
| #endif | ||||
| #define FSP_DLLPATH                     "bin\\" FSP_DLLNAME | ||||
|  | ||||
|     WCHAR PathBuf[MAX_PATH - (sizeof L"" FSP_DLLPATH / sizeof(WCHAR) - 1)]; | ||||
|     WCHAR PathBuf[MAX_PATH]; | ||||
|     DWORD Size; | ||||
|     HKEY RegKey; | ||||
|     LONG Result; | ||||
|     HMODULE Module; | ||||
|  | ||||
|     Module = LoadLibraryW(L"" FSP_DLLNAME); | ||||
|     if (0 == Module) | ||||
|     { | ||||
|         Size = sizeof PathBuf; | ||||
|         Result = RegGetValueW( | ||||
|             HKEY_LOCAL_MACHINE, L"Software\\WinFsp", L"InstallDir", | ||||
|             RRF_RT_REG_SZ | 0x00020000/*RRF_SUBKEY_WOW6432KEY*/, | ||||
|             0, PathBuf, &Size); | ||||
|         Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\WinFsp", | ||||
|             0, KEY_READ | KEY_WOW64_32KEY, &RegKey); | ||||
|         if (ERROR_SUCCESS == Result) | ||||
|         { | ||||
|             Size = sizeof PathBuf - sizeof L"" FSP_DLLPATH + sizeof(WCHAR); | ||||
|             Result = RegGetValueW(RegKey, 0, L"InstallDir", | ||||
|                 RRF_RT_REG_SZ, 0, PathBuf, &Size); | ||||
|             RegCloseKey(RegKey); | ||||
|         } | ||||
|         if (ERROR_SUCCESS != Result) | ||||
|             return STATUS_OBJECT_NAME_NOT_FOUND; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user