ReactOS  0.4.15-dev-4916-gd519b11
recyclebin.h File Reference
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <winnls.h>
#include <winver.h>
#include <shellapi.h>
#include <objbase.h>
Include dependency graph for recyclebin.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _DELETED_FILE_DETAILS_A
 
struct  _DELETED_FILE_DETAILS_W
 

Macros

#define WIN32_NO_STATUS
 
#define _INC_WINDOWS
 
#define COM_NO_WINDOWS_H
 
#define ANY_SIZE   1
 
#define DELETED_FILE_DETAILS   DELETED_FILE_DETAILS_A
 
#define PDELETED_FILE_DETAILS   PDELETED_FILE_DETAILS_A
 
#define DeleteFileToRecycleBin   DeleteFileToRecycleBinA
 
#define EmptyRecycleBin   EmptyRecycleBinA
 
#define EnumerateRecycleBin   EnumerateRecycleBinA
 
#define GetDeletedFileDetails   GetDeletedFileDetailsA
 
#define INTERFACE   IRecycleBinFile
 
#define INTERFACE   IRecycleBinEnumList
 
#define INTERFACE   IRecycleBin
 

Typedefs

typedef struct _DELETED_FILE_DETAILS_A DELETED_FILE_DETAILS_A
 
typedef struct _DELETED_FILE_DETAILS_APDELETED_FILE_DETAILS_A
 
typedef struct _DELETED_FILE_DETAILS_W DELETED_FILE_DETAILS_W
 
typedef struct _DELETED_FILE_DETAILS_WPDELETED_FILE_DETAILS_W
 
typedef BOOL(WINAPIPENUMERATE_RECYCLEBIN_CALLBACK) (IN PVOID Context, IN HANDLE hDeletedFile)
 

Functions

BOOL WINAPI CloseRecycleBinHandle (IN HANDLE hDeletedFile)
 
BOOL WINAPI DeleteFileToRecycleBinA (IN LPCSTR FileName)
 
BOOL WINAPI DeleteFileToRecycleBinW (IN LPCWSTR FileName)
 
BOOL WINAPI DeleteFileHandleToRecycleBin (IN HANDLE hDeletedFile)
 
BOOL WINAPI EmptyRecycleBinA (IN LPCSTR pszRoot OPTIONAL)
 
BOOL WINAPI EmptyRecycleBinW (IN LPCWSTR pszRoot OPTIONAL)
 
BOOL WINAPI EnumerateRecycleBinA (IN LPCSTR pszRoot OPTIONAL, IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL)
 
BOOL WINAPI EnumerateRecycleBinW (IN LPCWSTR pszRoot OPTIONAL, IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL)
 
BOOL WINAPI GetDeletedFileTypeNameW (IN HANDLE hDeletedFile, OUT LPWSTR pTypeName, IN DWORD BufferSize, OUT LPDWORD RequiredSize OPTIONAL)
 
BOOL WINAPI GetDeletedFileDetailsA (IN HANDLE hDeletedFile, IN DWORD BufferSize, IN OUT PDELETED_FILE_DETAILS_A FileDetails OPTIONAL, OUT LPDWORD RequiredSize OPTIONAL)
 
BOOL WINAPI GetDeletedFileDetailsW (IN HANDLE hDeletedFile, IN DWORD BufferSize, IN OUT PDELETED_FILE_DETAILS_W FileDetails OPTIONAL, OUT LPDWORD RequiredSize OPTIONAL)
 
BOOL WINAPI GetRecycleBinDetails (IN LPCWSTR pszVolume OPTIONAL, OUT ULARGE_INTEGER *pulTotalItems, OUT ULARGE_INTEGER *pulTotalSize)
 
BOOL WINAPI RestoreFile (IN HANDLE hDeletedFile)
 
 DECLARE_INTERFACE_ (IRecycleBinFile, IUnknown)
 
 DECLARE_INTERFACE_ (IRecycleBinEnumList, IUnknown)
 
 DECLARE_INTERFACE_ (IRecycleBin, IUnknown)
 
HRESULT WINAPI GetDefaultRecycleBin (IN LPCWSTR pszVolume OPTIONAL, OUT IRecycleBin **pprb)
 

Variables

EXTERN_C const IID IID_IRecycleBinFile
 
EXTERN_C const IID IID_IRecycleBinEnumList
 
EXTERN_C const IID IID_IRecycleBin
 

Macro Definition Documentation

◆ _INC_WINDOWS

#define _INC_WINDOWS

Definition at line 10 of file recyclebin.h.

◆ ANY_SIZE

#define ANY_SIZE   1

Definition at line 20 of file recyclebin.h.

◆ COM_NO_WINDOWS_H

#define COM_NO_WINDOWS_H

Definition at line 11 of file recyclebin.h.

◆ DELETED_FILE_DETAILS

#define DELETED_FILE_DETAILS   DELETED_FILE_DETAILS_A

Definition at line 46 of file recyclebin.h.

◆ DeleteFileToRecycleBin

#define DeleteFileToRecycleBin   DeleteFileToRecycleBinA

Definition at line 82 of file recyclebin.h.

◆ EmptyRecycleBin

#define EmptyRecycleBin   EmptyRecycleBinA

Definition at line 108 of file recyclebin.h.

◆ EnumerateRecycleBin

#define EnumerateRecycleBin   EnumerateRecycleBinA

Definition at line 131 of file recyclebin.h.

◆ GetDeletedFileDetails

#define GetDeletedFileDetails   GetDeletedFileDetailsA

Definition at line 164 of file recyclebin.h.

◆ INTERFACE [1/3]

#define INTERFACE   IRecycleBinFile

Definition at line 233 of file recyclebin.h.

◆ INTERFACE [2/3]

#define INTERFACE   IRecycleBinEnumList

Definition at line 233 of file recyclebin.h.

◆ INTERFACE [3/3]

#define INTERFACE   IRecycleBin

Definition at line 233 of file recyclebin.h.

◆ PDELETED_FILE_DETAILS

#define PDELETED_FILE_DETAILS   PDELETED_FILE_DETAILS_A

Definition at line 47 of file recyclebin.h.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 9 of file recyclebin.h.

Typedef Documentation

◆ DELETED_FILE_DETAILS_A

◆ DELETED_FILE_DETAILS_W

◆ PDELETED_FILE_DETAILS_A

◆ PDELETED_FILE_DETAILS_W

◆ PENUMERATE_RECYCLEBIN_CALLBACK

typedef BOOL(WINAPI * PENUMERATE_RECYCLEBIN_CALLBACK) (IN PVOID Context, IN HANDLE hDeletedFile)

Definition at line 58 of file recyclebin.h.

Function Documentation

◆ CloseRecycleBinHandle()

BOOL WINAPI CloseRecycleBinHandle ( IN HANDLE  hDeletedFile)

Definition at line 12 of file recyclebin.c.

14 {
15  IRecycleBinFile *rbf = (IRecycleBinFile *)hDeletedFile;
16  HRESULT hr;
17 
18  TRACE("(%p)\n", hDeletedFile);
19 
20  hr = IRecycleBinFile_Release(rbf);
21  if (SUCCEEDED(hr))
22  return TRUE;
25  else
27  return FALSE;
28 }
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
if SUCCEEDED(hr)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
#define SetLastError(x)
Definition: compat.h:611
#define FACILITY_WIN32
Definition: winerror.h:27
#define HRESULT_CODE(hr)
Definition: winerror.h:76
#define ERROR_GEN_FAILURE
Definition: winerror.h:134

Referenced by CRecycleBinEnum::CBEnumRecycleBin(), CBSearchRecycleBin(), CRecyclerExtractIcon_CreateInstance(), CRecycleBin::GetDetailsOf(), and CRecycleBinItemContextMenu::InvokeCommand().

◆ DECLARE_INTERFACE_() [1/3]

DECLARE_INTERFACE_ ( IRecycleBinFile  ,
IUnknown   
)

Definition at line 190 of file recyclebin.h.

191 {
193 
194  /* IUnknown methods */
198 
199  /* IRecycleBinFile methods */
200  STDMETHOD(GetLastModificationTime)(THIS_ FILETIME *pLastModificationTime) PURE;
201  STDMETHOD(GetDeletionTime)(THIS_ FILETIME *pDeletionTime) PURE;
204  STDMETHOD(GetAttributes)(THIS_ DWORD *pAttributes) PURE;
208  STDMETHOD(Restore)(THIS) PURE;
209 
211 };
#define REFIID
Definition: guiddef.h:118
#define THIS_
Definition: basetyps.h:65
static PWCHAR GetFileName(PWCHAR Path)
Definition: cabinet.c:381
#define BEGIN_INTERFACE
Definition: objbase.h:231
#define THIS
Definition: basetyps.h:66
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
REFIID riid
Definition: precomp.h:44
static HRESULT QueryInterface(REFIID, void **)
Definition: events.c:2587
#define STDMETHOD(m)
Definition: basetyps.h:62
#define END_INTERFACE
Definition: objbase.h:232
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
Definition: fileinfo.c:331
BOOL GetPhysicalFileSize(LPCWSTR PathBuffer, PULARGE_INTEGER Size)
Definition: filedefext.cpp:32
REFIID LPVOID * ppvObject
Definition: precomp.h:44
ULONG_PTR SIZE_T
Definition: typedefs.h:80
_In_ BOOLEAN Release
Definition: cdrom.h:920
#define PURE
Definition: basetyps.h:64
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
TCHAR * GetTypeName(HANDLE handle)
Definition: handlelist.c:127
unsigned int ULONG
Definition: retypes.h:1
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
Definition: wdfdevice.h:4431
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
BOOL Delete(LPCTSTR ServiceName)
Definition: delete.c:12
#define BufferSize
Definition: mmc.h:75

◆ DECLARE_INTERFACE_() [2/3]

DECLARE_INTERFACE_ ( IRecycleBinEnumList  ,
IUnknown   
)

Definition at line 215 of file recyclebin.h.

216 {
218 
219  /* IUnknown methods */
223 
224  /* IRecycleBinEnumList methods */
225  STDMETHOD(Next)(THIS_ DWORD celt, IRecycleBinFile **rgelt, DWORD *pceltFetched);
226  STDMETHOD(Skip)(THIS_ DWORD celt) PURE;
227  STDMETHOD(Reset)(THIS) PURE;
228 
230 };
#define REFIID
Definition: guiddef.h:118
#define THIS_
Definition: basetyps.h:65
#define BEGIN_INTERFACE
Definition: objbase.h:231
#define THIS
Definition: basetyps.h:66
REFIID riid
Definition: precomp.h:44
static HRESULT QueryInterface(REFIID, void **)
Definition: events.c:2587
#define STDMETHOD(m)
Definition: basetyps.h:62
#define END_INTERFACE
Definition: objbase.h:232
unsigned long DWORD
Definition: ntddk_ex.h:95
REFIID LPVOID * ppvObject
Definition: precomp.h:44
_In_ BOOLEAN Release
Definition: cdrom.h:920
#define PURE
Definition: basetyps.h:64
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
unsigned int ULONG
Definition: retypes.h:1
#define STDMETHOD_(t, m)
Definition: basetyps.h:63

◆ DECLARE_INTERFACE_() [3/3]

DECLARE_INTERFACE_ ( IRecycleBin  ,
IUnknown   
)

Definition at line 234 of file recyclebin.h.

235 {
237 
238  /* IUnknown methods */
242 
243  /* IRecycleBin methods */
244  STDMETHOD(DeleteFile)(THIS_ LPCWSTR szFileName);
246  STDMETHOD(EnumObjects)(THIS_ IRecycleBinEnumList **ppEnumList);
247 
249 };
#define REFIID
Definition: guiddef.h:118
#define THIS_
Definition: basetyps.h:65
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define BEGIN_INTERFACE
Definition: objbase.h:231
#define THIS
Definition: basetyps.h:66
REFIID riid
Definition: precomp.h:44
static HRESULT QueryInterface(REFIID, void **)
Definition: events.c:2587
#define DeleteFile
Definition: winbase.h:3625
int WINAPI EnumObjects(_In_ HDC, _In_ int, _In_ GOBJENUMPROC, _In_ LPARAM)
#define STDMETHOD(m)
Definition: basetyps.h:62
#define END_INTERFACE
Definition: objbase.h:232
#define EmptyRecycleBin
Definition: recyclebin.h:108
REFIID LPVOID * ppvObject
Definition: precomp.h:44
_In_ BOOLEAN Release
Definition: cdrom.h:920
#define PURE
Definition: basetyps.h:64
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
unsigned int ULONG
Definition: retypes.h:1
#define STDMETHOD_(t, m)
Definition: basetyps.h:63

◆ DeleteFileHandleToRecycleBin()

BOOL WINAPI DeleteFileHandleToRecycleBin ( IN HANDLE  hDeletedFile)

Definition at line 93 of file recyclebin.c.

95 {
96  IRecycleBinFile *rbf = (IRecycleBinFile *)hDeletedFile;
97  HRESULT hr;
98 
99  TRACE("(%p)\n", hDeletedFile);
100 
101  hr = IRecycleBinFile_Delete(rbf);
102 
103  if (SUCCEEDED(hr))
104  return TRUE;
107  else
109  return FALSE;
110 }
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
if SUCCEEDED(hr)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
#define SetLastError(x)
Definition: compat.h:611
#define FACILITY_WIN32
Definition: winerror.h:27
#define HRESULT_CODE(hr)
Definition: winerror.h:76
#define ERROR_GEN_FAILURE
Definition: winerror.h:134

Referenced by CRecycleBinItemContextMenu::InvokeCommand().

◆ DeleteFileToRecycleBinA()

BOOL WINAPI DeleteFileToRecycleBinA ( IN LPCSTR  FileName)

Definition at line 31 of file recyclebin.c.

33 {
34  int len;
35  LPWSTR FileNameW = NULL;
36  BOOL ret = FALSE;
37 
38  TRACE("(%s)\n", debugstr_a(FileName));
39 
40  /* Check parameters */
41  if (FileName == NULL)
42  {
44  goto cleanup;
45  }
46 
48  if (len == 0)
49  goto cleanup;
50  FileNameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
51  if (!FileNameW)
52  {
54  goto cleanup;
55  }
56  if (MultiByteToWideChar(CP_ACP, 0, FileName, -1, FileNameW, len) == 0)
57  goto cleanup;
58 
59  ret = DeleteFileToRecycleBinW(FileNameW);
60 
61 cleanup:
62  HeapFree(GetProcessHeap(), 0, FileNameW);
63  return ret;
64 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define CP_ACP
Definition: compat.h:109
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
BOOL WINAPI DeleteFileToRecycleBinW(IN LPCWSTR FileName)
Definition: recyclebin.c:67
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define debugstr_a
Definition: kernel32.h:31
#define SetLastError(x)
Definition: compat.h:611
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define NULL
Definition: types.h:112
#define MultiByteToWideChar
Definition: compat.h:110
char * cleanup(char *str)
Definition: wpickclick.c:99
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:594

◆ DeleteFileToRecycleBinW()

BOOL WINAPI DeleteFileToRecycleBinW ( IN LPCWSTR  FileName)

Definition at line 67 of file recyclebin.c.

69 {
70  IRecycleBin *prb;
71  HRESULT hr;
72 
73  TRACE("(%s)\n", debugstr_w(FileName));
74 
75  hr = GetDefaultRecycleBin(NULL, &prb);
76  if (!SUCCEEDED(hr))
77  goto cleanup;
78 
79  hr = IRecycleBin_DeleteFile(prb, FileName);
80  IRecycleBin_Release(prb);
81 
82 cleanup:
83  if (SUCCEEDED(hr))
84  return TRUE;
87  else
89  return FALSE;
90 }
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
HRESULT WINAPI GetDefaultRecycleBin(IN LPCWSTR pszVolume OPTIONAL, OUT IRecycleBin **pprb)
Definition: recyclebin.c:411
#define FALSE
Definition: types.h:117
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
if SUCCEEDED(hr)
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
#define SetLastError(x)
Definition: compat.h:611
#define FACILITY_WIN32
Definition: winerror.h:27
#define NULL
Definition: types.h:112
#define HRESULT_CODE(hr)
Definition: winerror.h:76
char * cleanup(char *str)
Definition: wpickclick.c:99
#define ERROR_GEN_FAILURE
Definition: winerror.h:134

Referenced by DeleteFileToRecycleBinA().

◆ EmptyRecycleBinA()

BOOL WINAPI EmptyRecycleBinA ( IN LPCSTR pszRoot  OPTIONAL)

Definition at line 113 of file recyclebin.c.

115 {
116  int len;
117  LPWSTR szRootW = NULL;
118  BOOL ret = FALSE;
119 
120  TRACE("(%s)\n", debugstr_a(pszRoot));
121 
122  if (pszRoot)
123  {
124  len = MultiByteToWideChar(CP_ACP, 0, pszRoot, -1, NULL, 0);
125  if (len == 0)
126  goto cleanup;
127  szRootW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
128  if (!szRootW)
129  {
131  goto cleanup;
132  }
133  if (MultiByteToWideChar(CP_ACP, 0, pszRoot, -1, szRootW, len) == 0)
134  goto cleanup;
135  }
136 
137  ret = EmptyRecycleBinW(szRootW);
138 
139 cleanup:
140  HeapFree(GetProcessHeap(), 0, szRootW);
141  return ret;
142 }
#define CP_ACP
Definition: compat.h:109
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define debugstr_a
Definition: kernel32.h:31
#define SetLastError(x)
Definition: compat.h:611
int ret
BOOL WINAPI EmptyRecycleBinW(IN LPCWSTR pszRoot OPTIONAL)
Definition: recyclebin.c:145
GLenum GLsizei len
Definition: glext.h:6722
#define NULL
Definition: types.h:112
#define MultiByteToWideChar
Definition: compat.h:110
char * cleanup(char *str)
Definition: wpickclick.c:99
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:594

◆ EmptyRecycleBinW()

BOOL WINAPI EmptyRecycleBinW ( IN LPCWSTR pszRoot  OPTIONAL)

Definition at line 145 of file recyclebin.c.

147 {
148  IRecycleBin *prb;
149  HRESULT hr;
150 
151  TRACE("(%s)\n", debugstr_w(pszRoot));
152 
153  hr = GetDefaultRecycleBin(pszRoot, &prb);
154  if (!SUCCEEDED(hr))
155  goto cleanup;
156 
157  hr = IRecycleBin_EmptyRecycleBin(prb);
158  IRecycleBin_Release(prb);
159 
160 cleanup:
161  if (SUCCEEDED(hr))
162  return TRUE;
165  else
167  return FALSE;
168 }
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
HRESULT WINAPI GetDefaultRecycleBin(IN LPCWSTR pszVolume OPTIONAL, OUT IRecycleBin **pprb)
Definition: recyclebin.c:411
#define FALSE
Definition: types.h:117
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
if SUCCEEDED(hr)
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
#define SetLastError(x)
Definition: compat.h:611
#define FACILITY_WIN32
Definition: winerror.h:27
#define HRESULT_CODE(hr)
Definition: winerror.h:76
char * cleanup(char *str)
Definition: wpickclick.c:99
#define ERROR_GEN_FAILURE
Definition: winerror.h:134

Referenced by EmptyRecycleBinA(), and SHEmptyRecycleBinW().

◆ EnumerateRecycleBinA()

BOOL WINAPI EnumerateRecycleBinA ( IN LPCSTR pszRoot  OPTIONAL,
IN PENUMERATE_RECYCLEBIN_CALLBACK  pFnCallback,
IN PVOID Context  OPTIONAL 
)

Definition at line 171 of file recyclebin.c.

175 {
176  int len;
177  LPWSTR szRootW = NULL;
178  BOOL ret = FALSE;
179 
180  TRACE("(%s, %p, %p)\n", debugstr_a(pszRoot), pFnCallback, Context);
181 
182  if (pszRoot)
183  {
184  len = MultiByteToWideChar(CP_ACP, 0, pszRoot, -1, NULL, 0);
185  if (len == 0)
186  goto cleanup;
187  szRootW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
188  if (!szRootW)
189  {
191  goto cleanup;
192  }
193  if (MultiByteToWideChar(CP_ACP, 0, pszRoot, -1, szRootW, len) == 0)
194  goto cleanup;
195  }
196 
197  ret = EnumerateRecycleBinW(szRootW, pFnCallback, Context);
198 
199 cleanup:
200  HeapFree(GetProcessHeap(), 0, szRootW);
201  return ret;
202 }
#define CP_ACP
Definition: compat.h:109
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define debugstr_a
Definition: kernel32.h:31
#define SetLastError(x)
Definition: compat.h:611
int ret
GLenum GLsizei len
Definition: glext.h:6722
BOOL WINAPI EnumerateRecycleBinW(IN LPCWSTR pszRoot OPTIONAL, IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL)
Definition: recyclebin.c:205
#define NULL
Definition: types.h:112
#define MultiByteToWideChar
Definition: compat.h:110
char * cleanup(char *str)
Definition: wpickclick.c:99
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:594

◆ EnumerateRecycleBinW()

BOOL WINAPI EnumerateRecycleBinW ( IN LPCWSTR pszRoot  OPTIONAL,
IN PENUMERATE_RECYCLEBIN_CALLBACK  pFnCallback,
IN PVOID Context  OPTIONAL 
)

Definition at line 205 of file recyclebin.c.

209 {
210  IRecycleBin *prb = NULL;
211  IRecycleBinEnumList *prbel = NULL;
212  IRecycleBinFile *prbf;
213  HRESULT hr;
214 
215  TRACE("(%s, %p, %p)\n", debugstr_w(pszRoot), pFnCallback, Context);
216 
217  hr = GetDefaultRecycleBin(NULL, &prb);
218  if (!SUCCEEDED(hr))
219  goto cleanup;
220 
221  hr = IRecycleBin_EnumObjects(prb, &prbel);
222  if (!SUCCEEDED(hr))
223  goto cleanup;
224  while (TRUE)
225  {
226  hr = IRecycleBinEnumList_Next(prbel, 1, &prbf, NULL);
227  if (hr == S_FALSE)
228  {
229  hr = S_OK;
230  goto cleanup;
231  }
232  else if (!SUCCEEDED(hr))
233  goto cleanup;
234  if (!pFnCallback(Context, (HANDLE)prbf))
235  {
237  goto cleanup;
238  }
239  }
240 
241 cleanup:
242  if (prb)
243  IRecycleBin_Release(prb);
244  if (prbel)
245  IRecycleBinEnumList_Release(prbel);
246  if (SUCCEEDED(hr))
247  return TRUE;
250  else
252  return FALSE;
253 }
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
HRESULT WINAPI GetDefaultRecycleBin(IN LPCWSTR pszVolume OPTIONAL, OUT IRecycleBin **pprb)
Definition: recyclebin.c:411
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
#define FALSE
Definition: types.h:117
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
if SUCCEEDED(hr)
#define debugstr_w
Definition: kernel32.h:32
#define S_FALSE
Definition: winerror.h:2357
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
#define SetLastError(x)
Definition: compat.h:611
#define FACILITY_WIN32
Definition: winerror.h:27
#define S_OK
Definition: intsafe.h:52
#define NULL
Definition: types.h:112
#define HRESULT_CODE(hr)
Definition: winerror.h:76
char * cleanup(char *str)
Definition: wpickclick.c:99
#define ERROR_GEN_FAILURE
Definition: winerror.h:134

Referenced by CRecyclerExtractIcon_CreateInstance(), EnumerateRecycleBinA(), CRecycleBin::GetDetailsOf(), CRecycleBinEnum::Initialize(), and CRecycleBinItemContextMenu::InvokeCommand().

◆ GetDefaultRecycleBin()

HRESULT WINAPI GetDefaultRecycleBin ( IN LPCWSTR pszVolume  OPTIONAL,
OUT IRecycleBin **  pprb 
)

Definition at line 411 of file recyclebin.c.

414 {
415  IUnknown *pUnk;
416  HRESULT hr;
417 
418  TRACE("(%s, %p)\n", debugstr_w(pszVolume), pprb);
419 
420  if (!pprb)
421  return E_POINTER;
422 
423  if (!pszVolume)
425  else
426  {
427  /* FIXME: do a better validation! */
428  if (wcslen(pszVolume) != 3 || pszVolume[1] != ':' || pszVolume[2] != '\\')
430 
431  /* For now, only support this type of recycle bins... */
432  hr = RecycleBin5_Constructor(pszVolume, &pUnk);
433  }
434  if (!SUCCEEDED(hr))
435  return hr;
436  hr = IUnknown_QueryInterface(pUnk, &IID_IRecycleBin, (void **)pprb);
437  IUnknown_Release(pUnk);
438  return hr;
439 }
EXTERN_C const IID IID_IRecycleBin
Definition: recyclebin.h:254
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
HRESULT hr
Definition: shlfolder.c:183
HRESULT RecycleBinGeneric_Constructor(OUT IUnknown **ppUnknown)
if SUCCEEDED(hr)
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
HRESULT RecycleBin5_Constructor(IN LPCWSTR VolumePath, OUT IUnknown **ppUnknown)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define ERROR_INVALID_NAME
Definition: compat.h:103
#define E_POINTER
Definition: winerror.h:2365
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

Referenced by DeleteFileToRecycleBinW(), EmptyRecycleBinW(), EnumerateRecycleBinW(), RecycleBinGeneric_RecycleBin_DeleteFile(), RecycleBinGeneric_RecycleBin_EmptyRecycleBin(), and RecycleBinGenericEnum_RecycleBinEnumList_Next().

◆ GetDeletedFileDetailsA()

BOOL WINAPI GetDeletedFileDetailsA ( IN HANDLE  hDeletedFile,
IN DWORD  BufferSize,
IN OUT PDELETED_FILE_DETAILS_A FileDetails  OPTIONAL,
OUT LPDWORD RequiredSize  OPTIONAL 
)

Definition at line 282 of file recyclebin.c.

287 {
288  PDELETED_FILE_DETAILS_W FileDetailsW = NULL;
289  DWORD BufferSizeW = 0;
290  BOOL ret = FALSE;
291 
292  TRACE("(%p, %lu, %p, %p)\n", hDeletedFile, BufferSize, FileDetails, RequiredSize);
293 
295  {
298  }
299  if (FileDetails && BufferSizeW)
300  {
301  FileDetailsW = HeapAlloc(GetProcessHeap(), 0, BufferSizeW);
302  if (!FileDetailsW)
303  {
305  goto cleanup;
306  }
307  }
308 
309  ret = GetDeletedFileDetailsW(hDeletedFile, BufferSizeW, FileDetailsW, RequiredSize);
310  if (!ret)
311  goto cleanup;
312 
313  if (FileDetails)
314  {
315  CopyMemory(FileDetails, FileDetailsW, FIELD_OFFSET(DELETED_FILE_DETAILS_A, FileName));
316  if (0 == WideCharToMultiByte(CP_ACP, 0, FileDetailsW->FileName, -1, FileDetails->FileName, BufferSize - FIELD_OFFSET(DELETED_FILE_DETAILS_A, FileName), NULL, NULL))
317  goto cleanup;
318  }
319  ret = TRUE;
320 
321 cleanup:
322  HeapFree(GetProcessHeap(), 0, FileDetailsW);
323  return ret;
324 }
#define WideCharToMultiByte
Definition: compat.h:111
#define TRUE
Definition: types.h:120
#define CP_ACP
Definition: compat.h:109
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
BOOL WINAPI GetDeletedFileDetailsW(IN HANDLE hDeletedFile, IN DWORD BufferSize, IN OUT PDELETED_FILE_DETAILS_W FileDetails OPTIONAL, OUT LPDWORD RequiredSize OPTIONAL)
Definition: recyclebin.c:327
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
WCHAR FileName[ANY_SIZE]
Definition: recyclebin.h:40
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define CopyMemory
Definition: winbase.h:1665
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:611
int ret
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define NULL
Definition: types.h:112
char * cleanup(char *str)
Definition: wpickclick.c:99
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
Definition: wdfdevice.h:4431
#define HeapFree(x, y, z)
Definition: compat.h:594
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:251

◆ GetDeletedFileDetailsW()

BOOL WINAPI GetDeletedFileDetailsW ( IN HANDLE  hDeletedFile,
IN DWORD  BufferSize,
IN OUT PDELETED_FILE_DETAILS_W FileDetails  OPTIONAL,
OUT LPDWORD RequiredSize  OPTIONAL 
)

Definition at line 327 of file recyclebin.c.

332 {
333  IRecycleBinFile *rbf = (IRecycleBinFile *)hDeletedFile;
334  HRESULT hr;
335  SIZE_T NameSize, Needed;
336 
337  TRACE("(%p, %lu, %p, %p)\n", hDeletedFile, BufferSize, FileDetails, RequiredSize);
338 
339  hr = IRecycleBinFile_GetFileName(rbf, 0, NULL, &NameSize);
340  if (!SUCCEEDED(hr))
341  goto cleanup;
342  Needed = FIELD_OFFSET(DELETED_FILE_DETAILS_W, FileName) + NameSize;
343  if (RequiredSize)
344  *RequiredSize = (DWORD)Needed;
345  if (Needed > BufferSize)
346  {
348  goto cleanup;
349  }
350  hr = IRecycleBinFile_GetFileName(rbf, NameSize, FileDetails->FileName, NULL);
351  if (!SUCCEEDED(hr))
352  goto cleanup;
353  hr = IRecycleBinFile_GetLastModificationTime(rbf, &FileDetails->LastModification);
354  if (!SUCCEEDED(hr))
355  goto cleanup;
356  hr = IRecycleBinFile_GetDeletionTime(rbf, &FileDetails->DeletionTime);
357  if (!SUCCEEDED(hr))
358  goto cleanup;
359  hr = IRecycleBinFile_GetFileSize(rbf, &FileDetails->FileSize);
360  if (!SUCCEEDED(hr))
361  goto cleanup;
362  hr = IRecycleBinFile_GetPhysicalFileSize(rbf, &FileDetails->PhysicalFileSize);
363  if (!SUCCEEDED(hr))
364  goto cleanup;
365  hr = IRecycleBinFile_GetAttributes(rbf, &FileDetails->Attributes);
366  if (!SUCCEEDED(hr))
367  goto cleanup;
368 
369 cleanup:
370  if (SUCCEEDED(hr))
371  return TRUE;
374  else
376  return FALSE;
377 }
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
#define DWORD
Definition: nt_native.h:44
#define FALSE
Definition: types.h:117
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
if SUCCEEDED(hr)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
#define SetLastError(x)
Definition: compat.h:611
#define FACILITY_WIN32
Definition: winerror.h:27
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define NULL
Definition: types.h:112
#define HRESULT_CODE(hr)
Definition: winerror.h:76
char * cleanup(char *str)
Definition: wpickclick.c:99
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
Definition: wdfdevice.h:4431
#define ERROR_GEN_FAILURE
Definition: winerror.h:134
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:251
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10

Referenced by CRecycleBinEnum::CBEnumRecycleBin(), CBSearchRecycleBin(), and GetDeletedFileDetailsA().

◆ GetDeletedFileTypeNameW()

BOOL WINAPI GetDeletedFileTypeNameW ( IN HANDLE  hDeletedFile,
OUT LPWSTR  pTypeName,
IN DWORD  BufferSize,
OUT LPDWORD RequiredSize  OPTIONAL 
)

Definition at line 256 of file recyclebin.c.

261 {
262  IRecycleBinFile *prbf = (IRecycleBinFile *)hDeletedFile;
263  SIZE_T FinalSize;
264 
265  HRESULT hr = IRecycleBinFile_GetTypeName(prbf, BufferSize, pTypeName, &FinalSize);
266 
267  if (SUCCEEDED(hr))
268  {
269  if (RequiredSize)
270  *RequiredSize = (DWORD)FinalSize;
271 
272  return TRUE;
273  }
276  else
278  return FALSE;
279 }
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
#define DWORD
Definition: nt_native.h:44
#define FALSE
Definition: types.h:117
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
if SUCCEEDED(hr)
LONG HRESULT
Definition: typedefs.h:79
#define SetLastError(x)
Definition: compat.h:611
#define FACILITY_WIN32
Definition: winerror.h:27
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define HRESULT_CODE(hr)
Definition: winerror.h:76
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
Definition: wdfdevice.h:4431
#define ERROR_GEN_FAILURE
Definition: winerror.h:134
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:251

Referenced by CRecycleBin::GetDetailsOf().

◆ GetRecycleBinDetails()

BOOL WINAPI GetRecycleBinDetails ( IN LPCWSTR pszVolume  OPTIONAL,
OUT ULARGE_INTEGER pulTotalItems,
OUT ULARGE_INTEGER pulTotalSize 
)

Definition at line 380 of file recyclebin.c.

384 {
385  pulTotalItems->QuadPart = 0;
386  pulTotalSize->QuadPart = 0;
388  return FALSE;
389 }
#define FALSE
Definition: types.h:117
#define SetLastError(x)
Definition: compat.h:611
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:102

◆ RestoreFile()

BOOL WINAPI RestoreFile ( IN HANDLE  hDeletedFile)

Definition at line 392 of file recyclebin.c.

394 {
395  IRecycleBinFile *rbf = (IRecycleBinFile *)hDeletedFile;
396  HRESULT hr;
397 
398  TRACE("(%p)\n", hDeletedFile);
399 
400  hr = IRecycleBinFile_Restore(rbf);
401  if (SUCCEEDED(hr))
402  return TRUE;
405  else
407  return FALSE;
408 }
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
if SUCCEEDED(hr)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
#define SetLastError(x)
Definition: compat.h:611
#define FACILITY_WIN32
Definition: winerror.h:27
#define HRESULT_CODE(hr)
Definition: winerror.h:76
#define ERROR_GEN_FAILURE
Definition: winerror.h:134

Referenced by CRecycleBinItemContextMenu::InvokeCommand().

Variable Documentation

◆ IID_IRecycleBin

◆ IID_IRecycleBinEnumList

◆ IID_IRecycleBinFile

EXTERN_C const IID IID_IRecycleBinFile

Definition at line 249 of file recyclebin.h.

Referenced by RecycleBin5File_RecycleBinFile_QueryInterface().