mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-08 04:52:10 -05:00
tst: winfsp-tests: --resilient command line option
This commit is contained in:
parent
319e5d4ee6
commit
3f79b2e46d
@ -206,26 +206,35 @@ HANDLE HookCreateFileW(
|
|||||||
BOOL HookDeleteFileW(
|
BOOL HookDeleteFileW(
|
||||||
LPCWSTR lpFileName)
|
LPCWSTR lpFileName)
|
||||||
{
|
{
|
||||||
|
ULONG MaxTries = 30;
|
||||||
|
ULONG SleepTimeout = 300;
|
||||||
BOOL Success;
|
BOOL Success;
|
||||||
DWORD LastError;
|
DWORD LastError;
|
||||||
|
|
||||||
Success = DeleteFileW(lpFileName);
|
Success = DeleteFileW(lpFileName);
|
||||||
LastError = GetLastError();
|
LastError = GetLastError();
|
||||||
if (OptResilient && !Success)
|
if (OptResilient)
|
||||||
{
|
{
|
||||||
ULONG MaxTries = 10;
|
if (!Success)
|
||||||
while (!Success && ERROR_SHARING_VIOLATION == LastError && 0 != MaxTries--)
|
|
||||||
{
|
{
|
||||||
Sleep(300);
|
while (!Success && ERROR_SHARING_VIOLATION == GetLastError() && 0 != MaxTries--)
|
||||||
|
{
|
||||||
|
Sleep(SleepTimeout);
|
||||||
Success = DeleteFileW(lpFileName);
|
Success = DeleteFileW(lpFileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ULONG MaxTries = 3;
|
while (0 != MaxTries--)
|
||||||
while (INVALID_FILE_ATTRIBUTES != GetFileAttributes(lpFileName) && 0 != MaxTries--)
|
|
||||||
{
|
{
|
||||||
Sleep(300);
|
HANDLE Handle = CreateFileW(lpFileName, FILE_READ_ATTRIBUTES, 0, 0, OPEN_EXISTING, 0, 0);
|
||||||
|
if (INVALID_HANDLE_VALUE != Handle)
|
||||||
|
CloseHandle(Handle); /* should never happen! */
|
||||||
|
else if (ERROR_ACCESS_DENIED == GetLastError())
|
||||||
|
Sleep(SleepTimeout);
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user