mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 08:53:01 -05:00
tst: winfsp-tests: ResilientRemoveDirectoryW
This commit is contained in:
parent
8f54152096
commit
205a59dbc6
@ -208,7 +208,8 @@ BOOL HookRemoveDirectoryW(
|
|||||||
PrepareFileName(lpPathName, FileNameBuf);
|
PrepareFileName(lpPathName, FileNameBuf);
|
||||||
|
|
||||||
MaybeAdjustTraversePrivilege(FALSE);
|
MaybeAdjustTraversePrivilege(FALSE);
|
||||||
Success = RemoveDirectoryW(FileNameBuf);
|
Success = (OptResilient ? ResilientRemoveDirectoryW : RemoveDirectoryW)(
|
||||||
|
FileNameBuf);
|
||||||
MaybeAdjustTraversePrivilege(TRUE);
|
MaybeAdjustTraversePrivilege(TRUE);
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
@ -116,6 +116,32 @@ BOOL ResilientDeleteFileW(
|
|||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL ResilientRemoveDirectoryW(
|
||||||
|
LPCWSTR lpPathName)
|
||||||
|
{
|
||||||
|
BOOL Success;
|
||||||
|
DWORD LastError;
|
||||||
|
|
||||||
|
Success = RemoveDirectoryW(lpPathName);
|
||||||
|
LastError = GetLastError();
|
||||||
|
|
||||||
|
if (Success)
|
||||||
|
WaitDeletePending(lpPathName);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (ULONG MaxTries = DeleteMaxTries;
|
||||||
|
!Success && ERROR_SHARING_VIOLATION == GetLastError() && 0 != MaxTries;
|
||||||
|
MaxTries--)
|
||||||
|
{
|
||||||
|
Sleep(DeleteSleepTimeout);
|
||||||
|
Success = RemoveDirectoryW(lpPathName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SetLastError(LastError);
|
||||||
|
return Success;
|
||||||
|
}
|
||||||
|
|
||||||
static VOID WaitDeletePending(PCWSTR FileName)
|
static VOID WaitDeletePending(PCWSTR FileName)
|
||||||
{
|
{
|
||||||
for (ULONG MaxTries = DeleteMaxTries; 0 != MaxTries; MaxTries--)
|
for (ULONG MaxTries = DeleteMaxTries; 0 != MaxTries; MaxTries--)
|
||||||
|
@ -105,6 +105,8 @@ BOOL ResilientCloseHandle(
|
|||||||
HANDLE hObject);
|
HANDLE hObject);
|
||||||
BOOL ResilientDeleteFileW(
|
BOOL ResilientDeleteFileW(
|
||||||
LPCWSTR lpFileName);
|
LPCWSTR lpFileName);
|
||||||
|
BOOL ResilientRemoveDirectoryW(
|
||||||
|
LPCWSTR lpPathName);
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user