Speed up mount operation by putting winfsp network provider at the head of network providers

This commit is contained in:
Fritz Elfert 2017-12-29 18:56:11 +01:00
parent d9c450ecf4
commit 68d8ade667

View File

@ -1016,7 +1016,7 @@ NTSTATUS FspNpRegister(VOID)
WCHAR ProviderPath[MAX_PATH];
WCHAR RegBuffer[1024];
PWSTR P, Part;
DWORD RegResult, RegType, RegBufferSize;
DWORD RegResult, RegType, RegBufferSize, RegBufferOffset;
HKEY RegKey;
BOOLEAN FoundProvider;
@ -1082,15 +1082,16 @@ NTSTATUS FspNpRegister(VOID)
return FspNtStatusFromWin32(RegResult);
RegBufferSize = sizeof RegBuffer - sizeof L"," FSP_NP_NAME;
RegBufferOffset = lstrlenW(L"," FSP_NP_NAME);
RegResult = RegQueryValueExW(RegKey,
L"ProviderOrder", 0, &RegType, (PVOID)RegBuffer, &RegBufferSize);
L"ProviderOrder", 0, &RegType, (PVOID)&RegBuffer[RegBufferOffset], &RegBufferSize);
if (ERROR_SUCCESS != RegResult)
goto close_and_exit;
RegBufferSize /= sizeof(WCHAR);
FoundProvider = FALSE;
RegBuffer[RegBufferSize] = L'\0';
P = RegBuffer, Part = P;
RegBuffer[RegBufferSize + RegBufferOffset] = L'\0';
P = &RegBuffer[RegBufferOffset], Part = P;
do
{
if (L',' == *P || '\0' == *P)
@ -1107,8 +1108,7 @@ NTSTATUS FspNpRegister(VOID)
if (!FoundProvider)
{
P--;
memcpy(P, L"," FSP_NP_NAME, sizeof L"," FSP_NP_NAME);
memcpy((PWSTR)RegBuffer, L"" FSP_NP_NAME ",", sizeof L"" FSP_NP_NAME);
RegBufferSize = lstrlenW(RegBuffer);
RegBufferSize++;