mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +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;
|
||||
|
||||
/* restore file */
|
||||
if (lpcmi->lpVerb == MAKEINTRESOURCEA(1))
|
||||
if (lpcmi->lpVerb == MAKEINTRESOURCEA(1))
|
||||
ret = RestoreFile(Context.hDeletedFile);
|
||||
/* delete file */
|
||||
else
|
||||
|
@ -1244,10 +1244,10 @@ HRESULT WINAPI SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRB
|
|||
|
||||
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) ||
|
||||
!(pSHQueryRBInfo) || (pSHQueryRBInfo->cbSize < sizeof(SHQUERYRBINFO)))
|
||||
if (!pszRootPath || (pszRootPath[0] == 0) ||
|
||||
!pSHQueryRBInfo || (pSHQueryRBInfo->cbSize < sizeof(SHQUERYRBINFO)))
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
@ -1255,5 +1255,33 @@ HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryR
|
|||
pSHQueryRBInfo->i64Size = 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;
|
||||
}
|
||||
|
|
|
@ -376,18 +376,6 @@ cleanup:
|
|||
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
|
||||
RestoreFile(
|
||||
IN HANDLE hDeletedFile)
|
||||
|
|
|
@ -164,17 +164,6 @@ GetDeletedFileDetailsW(
|
|||
#define GetDeletedFileDetails GetDeletedFileDetailsA
|
||||
#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
|
||||
* hDeletedFile: handle of the deleted file to restore
|
||||
* Returns TRUE if operation succeeded, FALSE otherwise.
|
||||
|
|
Loading…
Reference in a new issue