TRACE("(%p, %s)\n", This, debugstr_w(szFileName));
if (s->EnumeratorCount != 0)
- return E_FAIL;
+ return HRESULT_FROM_WIN32(ERROR_SHARING_VIOLATION);
/* Get full file name */
while (TRUE)
TRACE("(%p, %s, %p)\n", This, debugstr_w(pDeletedFileName), pDeletedFile);
if (s->EnumeratorCount != 0)
- return E_FAIL;
+ return HRESULT_FROM_WIN32(ERROR_SHARING_VIOLATION);
pHeader = MapViewOfFile(s->hInfoMapped, FILE_MAP_WRITE, 0, 0, 0);
if (!pHeader)
PINFO2_HEADER pHeader;
DELETED_FILE_RECORD *pRecord, *pLast;
DWORD dwEntries, i;
+ SHFILEOPSTRUCTW op;
TRACE("(%p, %s, %p)\n", This, debugstr_w(pDeletedFileName), pDeletedFile);
if (s->EnumeratorCount != 0)
- return E_FAIL;
+ return HRESULT_FROM_WIN32(ERROR_SHARING_VIOLATION);
pHeader = MapViewOfFile(s->hInfoMapped, FILE_MAP_WRITE, 0, 0, 0);
if (!pHeader)
if (pRecord->dwRecordUniqueId == pDeletedFile->dwRecordUniqueId)
{
/* Restore file */
- if (!MoveFileW(pDeletedFileName, pDeletedFile->FileNameW))
+ ZeroMemory(&op, sizeof(op));
+ op.wFunc = FO_COPY;
+ op.pFrom = pDeletedFileName;
+ op.pTo = pDeletedFile->FileNameW;
+
+ if (!SHFileOperationW(&op))
{
UnmapViewOfFile(pHeader);
return HRESULT_FROM_WIN32(GetLastError());
LPWSTR FileName; /* Pointer into BufferName buffer */
LPCSTR DesktopIniContents = "[.ShellClassInfo]\r\nCLSID={645FF040-5081-101B-9F08-00AA002F954E}\r\n";
INFO2_HEADER Info2Contents[] = { { 5, 0, 0, 0x320, 0 } };
- SIZE_T BytesToWrite, BytesWritten, Needed;
+ DWORD BytesToWrite, BytesWritten, Needed;
HANDLE hFile = INVALID_HANDLE_VALUE;
HRESULT hr;
HANDLE tokenHandle = INVALID_HANDLE_VALUE;
PTOKEN_USER TokenUserInfo = NULL;
LPWSTR StringSid = NULL, p;
- SIZE_T Needed, DirectoryLength;
+ DWORD Needed, DirectoryLength;
INT len;
HRESULT hr;