mirror of
https://github.com/reactos/reactos.git
synced 2025-04-27 09:00:27 +00:00
[SHELL32] Implement SHQueryRecycleBinW
This commit is contained in:
parent
08d808cc44
commit
4cdcea5e65
3 changed files with 32 additions and 27 deletions
|
@ -415,7 +415,7 @@ HRESULT WINAPI CRecycleBinItemContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO l
|
||||||
BOOL ret = TRUE;
|
BOOL ret = TRUE;
|
||||||
|
|
||||||
/* restore file */
|
/* restore file */
|
||||||
if (lpcmi->lpVerb == MAKEINTRESOURCEA(1))
|
if (lpcmi->lpVerb == MAKEINTRESOURCEA(1))
|
||||||
ret = RestoreFile(Context.hDeletedFile);
|
ret = RestoreFile(Context.hDeletedFile);
|
||||||
/* delete file */
|
/* delete file */
|
||||||
else
|
else
|
||||||
|
@ -1244,10 +1244,10 @@ HRESULT WINAPI SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRB
|
||||||
|
|
||||||
HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo)
|
HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo)
|
||||||
{
|
{
|
||||||
FIXME("%s, %p - stub\n", debugstr_w(pszRootPath), pSHQueryRBInfo);
|
TRACE("%s, %p\n", debugstr_w(pszRootPath), pSHQueryRBInfo);
|
||||||
|
|
||||||
if (!(pszRootPath) || (pszRootPath[0] == 0) ||
|
if (!pszRootPath || (pszRootPath[0] == 0) ||
|
||||||
!(pSHQueryRBInfo) || (pSHQueryRBInfo->cbSize < sizeof(SHQUERYRBINFO)))
|
!pSHQueryRBInfo || (pSHQueryRBInfo->cbSize < sizeof(SHQUERYRBINFO)))
|
||||||
{
|
{
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
@ -1255,5 +1255,33 @@ HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryR
|
||||||
pSHQueryRBInfo->i64Size = 0;
|
pSHQueryRBInfo->i64Size = 0;
|
||||||
pSHQueryRBInfo->i64NumItems = 0;
|
pSHQueryRBInfo->i64NumItems = 0;
|
||||||
|
|
||||||
|
CComPtr<IRecycleBin> spRecycleBin;
|
||||||
|
HRESULT hr;
|
||||||
|
if (FAILED_UNEXPECTEDLY((hr = GetDefaultRecycleBin(pszRootPath, &spRecycleBin))))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
CComPtr<IRecycleBinEnumList> spEnumList;
|
||||||
|
hr = spRecycleBin->EnumObjects(&spEnumList);
|
||||||
|
if (!SUCCEEDED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
CComPtr<IRecycleBinFile> spFile;
|
||||||
|
hr = spEnumList->Next(1, &spFile, NULL);
|
||||||
|
if (hr == S_FALSE)
|
||||||
|
return S_OK;
|
||||||
|
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
ULARGE_INTEGER Size = {};
|
||||||
|
if (FAILED_UNEXPECTEDLY((hr = spFile->GetFileSize(&Size))))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
pSHQueryRBInfo->i64Size += Size.QuadPart;
|
||||||
|
pSHQueryRBInfo->i64NumItems++;
|
||||||
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -376,18 +376,6 @@ cleanup:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WINAPI
|
|
||||||
GetRecycleBinDetails(
|
|
||||||
IN LPCWSTR pszVolume OPTIONAL,
|
|
||||||
OUT ULARGE_INTEGER *pulTotalItems,
|
|
||||||
OUT ULARGE_INTEGER *pulTotalSize)
|
|
||||||
{
|
|
||||||
pulTotalItems->QuadPart = 0;
|
|
||||||
pulTotalSize->QuadPart = 0;
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
RestoreFile(
|
RestoreFile(
|
||||||
IN HANDLE hDeletedFile)
|
IN HANDLE hDeletedFile)
|
||||||
|
|
|
@ -164,17 +164,6 @@ GetDeletedFileDetailsW(
|
||||||
#define GetDeletedFileDetails GetDeletedFileDetailsA
|
#define GetDeletedFileDetails GetDeletedFileDetailsA
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Get details about a whole recycle bin
|
|
||||||
* pszVolume:
|
|
||||||
* pulTotalItems:
|
|
||||||
* pulTotalSize
|
|
||||||
*/
|
|
||||||
BOOL WINAPI
|
|
||||||
GetRecycleBinDetails(
|
|
||||||
IN LPCWSTR pszVolume OPTIONAL,
|
|
||||||
OUT ULARGE_INTEGER *pulTotalItems,
|
|
||||||
OUT ULARGE_INTEGER *pulTotalSize);
|
|
||||||
|
|
||||||
/* Restores a deleted file
|
/* Restores a deleted file
|
||||||
* hDeletedFile: handle of the deleted file to restore
|
* hDeletedFile: handle of the deleted file to restore
|
||||||
* Returns TRUE if operation succeeded, FALSE otherwise.
|
* Returns TRUE if operation succeeded, FALSE otherwise.
|
||||||
|
|
Loading…
Reference in a new issue