From 6cf2b6c90d289680817e0c697bfdff72718729a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Mon, 11 Aug 2008 17:31:51 +0000 Subject: [PATCH] Expand recyclebin API with DeleteFileHandleToRecycleBin and GetRecycleBinDetails svn path=/trunk/; revision=35280 --- reactos/lib/recyclebin/recyclebin.c | 32 +++++++++++++++++++++++++++++ reactos/lib/recyclebin/recyclebin.h | 20 ++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/reactos/lib/recyclebin/recyclebin.c b/reactos/lib/recyclebin/recyclebin.c index 1a925a41253..7bee36c62d8 100644 --- a/reactos/lib/recyclebin/recyclebin.c +++ b/reactos/lib/recyclebin/recyclebin.c @@ -93,6 +93,26 @@ cleanup: return FALSE; } +BOOL WINAPI +DeleteFileHandleToRecycleBin( + IN HANDLE hDeletedFile) +{ + IRecycleBinFile *rbf = (IRecycleBinFile *)hDeletedFile; + HRESULT hr; + + TRACE("(%p)\n", hDeletedFile); + + hr = IRecycleBinFile_Delete(rbf); + + if (SUCCEEDED(hr)) + return TRUE; + if (HRESULT_FACILITY(hr) == FACILITY_WIN32) + SetLastError(HRESULT_CODE(hr)); + else + SetLastError(ERROR_GEN_FAILURE); + return FALSE; +} + BOOL WINAPI EmptyRecycleBinA( IN LPCSTR pszRoot OPTIONAL) @@ -334,6 +354,18 @@ 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) diff --git a/reactos/lib/recyclebin/recyclebin.h b/reactos/lib/recyclebin/recyclebin.h index 873751dc383..a1f64e9373b 100644 --- a/reactos/lib/recyclebin/recyclebin.h +++ b/reactos/lib/recyclebin/recyclebin.h @@ -72,6 +72,15 @@ DeleteFileToRecycleBinW( #define DeleteFileToRecycleBin DeleteFileToRecycleBinA #endif +/* Moves a file to the recycle bin. + * hDeletedFile: handle of the deleted file to delete + * Returns TRUE if operation succeeded, FALSE otherwise. + * Remark: The handle is obtained in the PENUMERATE_RECYCLEBIN_CALLBACK callback + */ +BOOL WINAPI +DeleteFileHandleToRecycleBin( + IN HANDLE hDeletedFile); + /* Removes all elements contained in a recycle bin * pszRoot: the name of the drive containing the recycle bin * Returns TRUE if operation succeeded, FALSE otherwise. @@ -138,6 +147,17 @@ 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.