mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 16:33:02 -05:00
Speed up mount operation by putting winfsp network provider at the head of network providers
This commit is contained in:
parent
d9c450ecf4
commit
68d8ade667
12
src/dll/np.c
12
src/dll/np.c
@ -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++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user