ReactOS 0.4.16-dev-814-g656a5dc
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  _RECYCLEBINFILEIDENTITY
 
struct  _RECYCLEBINSTRING
 
struct  _DELETED_FILE_INFO
 

Macros

#define WIN32_NO_STATUS
 
#define _INC_WINDOWS
 
#define COM_NO_WINDOWS_H
 
#define RECYCLEBINMAXDRIVECOUNT   26
 
#define IRecycleBinFileFromHDELFILE(hDF)   ( (IRecycleBinFile*)(hDF) )
 
#define DeleteFileToRecycleBin   DeleteFileToRecycleBinA
 
#define EmptyRecycleBin   EmptyRecycleBinA
 
#define EnumerateRecycleBin   EnumerateRecycleBinA
 
#define INTERFACE   IRecycleBinFile
 
#define INTERFACE   IRecycleBinEnumList
 
#define INTERFACE   IRecycleBin
 

Typedefs

typedef UINT RECYCLEBINFILESIZETYPE
 
typedef struct _RECYCLEBINFILEIDENTITY RECYCLEBINFILEIDENTITY
 
typedef struct _RECYCLEBINFILEIDENTITYPRECYCLEBINFILEIDENTITY
 
typedef struct _RECYCLEBINSTRING RECYCLEBINSTRING
 
typedef struct _RECYCLEBINSTRINGPRECYCLEBINSTRING
 
typedef struct _DELETED_FILE_INFO DELETED_FILE_INFO
 
typedef struct _DELETED_FILE_INFOPDELETED_FILE_INFO
 
typedef BOOL(CALLBACKPENUMERATE_RECYCLEBIN_CALLBACK) (IN PVOID Context, IN HDELFILE hDeletedFile)
 

Functions

 DECLARE_HANDLE (HDELFILE)
 
static void FreeRecycleBinString (PRECYCLEBINSTRING pRBS)
 
static void InitializeRecycleBinStringRef (PRECYCLEBINSTRING pRBS, LPCWSTR String)
 
EXTERN_C HRESULT GetRecycleBinPathFromDriveNumber (UINT Drive, LPWSTR Path)
 
BOOL WINAPI CloseRecycleBinHandle (IN HDELFILE hDeletedFile)
 
BOOL WINAPI DeleteFileToRecycleBinA (IN LPCSTR FileName)
 
BOOL WINAPI DeleteFileToRecycleBinW (IN LPCWSTR FileName)
 
BOOL WINAPI DeleteFileInRecycleBin (IN HDELFILE 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)
 
EXTERN_C HDELFILE GetRecycleBinFileHandle (IN LPCWSTR pszRoot OPTIONAL, IN const RECYCLEBINFILEIDENTITY *pFI)
 
EXTERN_C BOOL RemoveFromRecycleBinDatabase (IN const RECYCLEBINFILEIDENTITY *pFI)
 
BOOL WINAPI RestoreFileFromRecycleBin (IN HDELFILE hDeletedFile)
 
 DECLARE_INTERFACE_ (IRecycleBinFile, IUnknown)
 
 DECLARE_INTERFACE_ (IRecycleBinEnumList, IUnknown)
 
 DECLARE_INTERFACE_ (IRecycleBin, IUnknown)
 
EXTERN_C HRESULT GetDefaultRecycleBin (IN LPCWSTR pszVolume OPTIONAL, OUT IRecycleBin **pprb)
 
void CRecycleBin_NotifyRecycled (LPCWSTR OrigPath, const WIN32_FIND_DATAW *pFind, const RECYCLEBINFILEIDENTITY *pFI)
 

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.

◆ COM_NO_WINDOWS_H

#define COM_NO_WINDOWS_H

Definition at line 11 of file recyclebin.h.

◆ DeleteFileToRecycleBin

#define DeleteFileToRecycleBin   DeleteFileToRecycleBinA

Definition at line 101 of file recyclebin.h.

◆ EmptyRecycleBin

#define EmptyRecycleBin   EmptyRecycleBinA

Definition at line 127 of file recyclebin.h.

◆ EnumerateRecycleBin

#define EnumerateRecycleBin   EnumerateRecycleBinA

Definition at line 150 of file recyclebin.h.

◆ INTERFACE [1/3]

#define INTERFACE   IRecycleBinFile

Definition at line 219 of file recyclebin.h.

◆ INTERFACE [2/3]

#define INTERFACE   IRecycleBinEnumList

Definition at line 219 of file recyclebin.h.

◆ INTERFACE [3/3]

#define INTERFACE   IRecycleBin

Definition at line 219 of file recyclebin.h.

◆ IRecycleBinFileFromHDELFILE

#define IRecycleBinFileFromHDELFILE (   hDF)    ( (IRecycleBinFile*)(hDF) )

Definition at line 50 of file recyclebin.h.

◆ RECYCLEBINMAXDRIVECOUNT

#define RECYCLEBINMAXDRIVECOUNT   26

Definition at line 20 of file recyclebin.h.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 9 of file recyclebin.h.

Typedef Documentation

◆ DELETED_FILE_INFO

◆ PDELETED_FILE_INFO

◆ PENUMERATE_RECYCLEBIN_CALLBACK

typedef BOOL(CALLBACK * PENUMERATE_RECYCLEBIN_CALLBACK) (IN PVOID Context, IN HDELFILE hDeletedFile)

Definition at line 77 of file recyclebin.h.

◆ PRECYCLEBINFILEIDENTITY

◆ PRECYCLEBINSTRING

◆ RECYCLEBINFILEIDENTITY

◆ RECYCLEBINFILESIZETYPE

Definition at line 24 of file recyclebin.h.

◆ RECYCLEBINSTRING

Function Documentation

◆ CloseRecycleBinHandle()

BOOL WINAPI CloseRecycleBinHandle ( IN HDELFILE  hDeletedFile)

Definition at line 12 of file recyclebin.c.

14{
15 IRecycleBinFile *rbf = IRecycleBinFileFromHDELFILE(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}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define SetLastError(x)
Definition: compat.h:752
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define IRecycleBinFileFromHDELFILE(hDF)
Definition: recyclebin.h:50
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
#define HRESULT_FACILITY(hr)
Definition: winerror.h:79
#define ERROR_GEN_FAILURE
Definition: winerror.h:134
#define FACILITY_WIN32
Definition: winerror.h:27
#define HRESULT_CODE(hr)
Definition: winerror.h:76

Referenced by CRecycleBinEnum::CBEnumRecycleBin(), GetRecycleBinFileHandleCallback(), and RemoveFromRecycleBinDatabase().

◆ CRecycleBin_NotifyRecycled()

void CRecycleBin_NotifyRecycled ( LPCWSTR  OrigPath,
const WIN32_FIND_DATAW pFind,
const RECYCLEBINFILEIDENTITY pFI 
)

Definition at line 264 of file CRecycleBin.cpp.

266{
268 info.LastModification = pFind->ftLastWriteTime;
269 info.DeletionTime = pFI->DeletionTime;
270 info.FileSize = pFind->nFileSizeLow;
271 info.Attributes = pFind->dwFileAttributes;
272 if (LPITEMIDLIST pidl = CreateItem(pFI->RecycledFullPath, OrigPath, info))
273 {
275 ILFree(pidl);
276 }
277}
static BOOL IsFolder(LPCITEMIDLIST pidl)
Definition: CRecycleBin.cpp:84
static void CRecycleBin_ChangeNotifyBBItem(_In_ LONG Event, _In_opt_ LPCITEMIDLIST BBItem)
static LPITEMIDLIST CreateItem(LPCWSTR pszTrash, LPCWSTR pszOrig, const DELETED_FILE_INFO &Details)
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:1044
#define SHCNE_MKDIR
Definition: shlobj.h:1893
#define SHCNE_CREATE
Definition: shlobj.h:1891
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

Referenced by RecycleBin5::DeleteFile().

◆ DECLARE_HANDLE()

DECLARE_HANDLE ( HDELFILE  )

◆ DECLARE_INTERFACE_() [1/3]

DECLARE_INTERFACE_ ( IRecycleBin  ,
IUnknown   
)

Definition at line 220 of file recyclebin.h.

221{
223
224 /* IUnknown methods */
228
229 /* IRecycleBin methods */
232 STDMETHOD(EnumObjects)(THIS_ IRecycleBinEnumList **ppEnumList) PURE;
234
236};
void GetDirectory(LPTSTR wholepath, LPTSTR directory, BOOL CheckExisting)
Definition: move.c:65
#define PURE
Definition: basetyps.h:64
#define THIS_
Definition: basetyps.h:65
#define THIS
Definition: basetyps.h:66
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
#define STDMETHOD(m)
Definition: basetyps.h:62
_In_ BOOLEAN Release
Definition: cdrom.h:920
REFIID riid
Definition: atlbase.h:39
LPCWSTR szPath
Definition: env.c:37
static HRESULT QueryInterface(REFIID, void **)
Definition: events.c:2587
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
#define END_INTERFACE
Definition: objbase.h:232
#define BEGIN_INTERFACE
Definition: objbase.h:231
#define REFIID
Definition: guiddef.h:118
#define EmptyRecycleBin
Definition: recyclebin.h:127
uint32_t ULONG
Definition: typedefs.h:59
#define DeleteFile
Definition: winbase.h:3789
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
int WINAPI EnumObjects(_In_ HDC, _In_ int, _In_ GOBJENUMPROC, _In_ LPARAM)
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

◆ DECLARE_INTERFACE_() [2/3]

DECLARE_INTERFACE_ ( IRecycleBinEnumList  ,
IUnknown   
)

Definition at line 201 of file recyclebin.h.

202{
204
205 /* IUnknown methods */
209
210 /* IRecycleBinEnumList methods */
211 STDMETHOD(Next)(THIS_ DWORD celt, IRecycleBinFile **rgelt, DWORD *pceltFetched) PURE;
214
216};
unsigned long DWORD
Definition: ntddk_ex.h:95
STDMETHOD() Skip(THIS_ ULONG celt) PURE
STDMETHOD() Reset(THIS) PURE
STDMETHOD() Next(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE

◆ DECLARE_INTERFACE_() [3/3]

DECLARE_INTERFACE_ ( IRecycleBinFile  ,
IUnknown   
)

Definition at line 174 of file recyclebin.h.

175{
177
178 /* IUnknown methods */
182
183 /* IRecycleBinFile methods */
184 STDMETHOD(IsEqualIdentity)(THIS_ const RECYCLEBINFILEIDENTITY *pFI) PURE;
186 STDMETHOD(GetLastModificationTime)(THIS_ FILETIME *pLastModificationTime) PURE;
187 STDMETHOD(GetDeletionTime)(THIS_ FILETIME *pDeletionTime) PURE;
190 STDMETHOD(GetAttributes)(THIS_ DWORD *pAttributes) PURE;
193 STDMETHOD(Restore)(THIS) PURE;
194 STDMETHOD(RemoveFromDatabase)(THIS) PURE;
195
197};
BOOL Delete(LPCTSTR ServiceName)
Definition: delete.c:12
static PWCHAR GetFileName(PWCHAR Path)
Definition: cabinet.c:387
Definition: bufpool.h:45
#define BufferSize
Definition: mmc.h:75
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
Definition: fileinfo.c:331
BOOL GetPhysicalFileSize(LPCWSTR PathBuffer, PULARGE_INTEGER Size)
Definition: filedefext.cpp:32
static LRESULT GetInfo(const CodecInfo *pi, ICINFO *icinfo, DWORD dwSize)
Definition: msrle32.c:1168
ULONG_PTR SIZE_T
Definition: typedefs.h:80
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
Definition: wdfdevice.h:4439

◆ DeleteFileInRecycleBin()

BOOL WINAPI DeleteFileInRecycleBin ( IN HDELFILE  hDeletedFile)

Definition at line 93 of file recyclebin.c.

95{
96 IRecycleBinFile *rbf = IRecycleBinFileFromHDELFILE(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}

◆ 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
62 HeapFree(GetProcessHeap(), 0, FileNameW);
63 return ret;
64}
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define NULL
Definition: types.h:112
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define CP_ACP
Definition: compat.h:109
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define MultiByteToWideChar
Definition: compat.h:110
static void cleanup(void)
Definition: main.c:1335
BOOL WINAPI DeleteFileToRecycleBinW(IN LPCWSTR FileName)
Definition: recyclebin.c:67
unsigned int BOOL
Definition: ntddk_ex.h:94
GLenum GLsizei len
Definition: glext.h:6722
#define debugstr_a
Definition: kernel32.h:31
int ret
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ 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
76 if (!SUCCEEDED(hr))
77 goto cleanup;
78
79 hr = IRecycleBin_DeleteFile(prb, FileName);
80 IRecycleBin_Release(prb);
81
83 if (SUCCEEDED(hr))
84 return TRUE;
87 else
89 return FALSE;
90}
EXTERN_C HRESULT GetDefaultRecycleBin(IN LPCWSTR pszVolume OPTIONAL, OUT IRecycleBin **pprb)
Definition: recyclebin.c:321
#define debugstr_w
Definition: kernel32.h:32

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
139cleanup:
140 HeapFree(GetProcessHeap(), 0, szRootW);
141 return ret;
142}
BOOL WINAPI EmptyRecycleBinW(IN LPCWSTR pszRoot OPTIONAL)
Definition: recyclebin.c:145

◆ 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
160cleanup:
161 if (SUCCEEDED(hr))
162 return TRUE;
165 else
167 return FALSE;
168}

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
199cleanup:
200 HeapFree(GetProcessHeap(), 0, szRootW);
201 return ret;
202}
BOOL WINAPI EnumerateRecycleBinW(IN LPCWSTR pszRoot OPTIONAL, IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL)
Definition: recyclebin.c:205

◆ 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
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, (HDELFILE)prbf))
235 {
238 goto cleanup;
239 }
240 }
241
242cleanup:
243 if (prb)
244 IRecycleBin_Release(prb);
245 if (prbel)
246 IRecycleBinEnumList_Release(prbel);
247 if (SUCCEEDED(hr))
248 return TRUE;
251 else
253 return FALSE;
254}
#define S_OK
Definition: intsafe.h:52
#define error(str)
Definition: mkdosfs.c:1605
unsigned int UINT
Definition: ndis.h:50
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define S_FALSE
Definition: winerror.h:2357
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92

Referenced by EnumerateRecycleBinA(), GetRecycleBinFileHandle(), and CRecycleBinEnum::Initialize().

◆ FreeRecycleBinString()

static void FreeRecycleBinString ( PRECYCLEBINSTRING  pRBS)
inlinestatic

Definition at line 55 of file recyclebin.h.

56{
57 SHFree(pRBS->Alloc);
58 pRBS->String = pRBS->Alloc = NULL;
59}
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326

Referenced by CRecycleBinEnum::CBEnumRecycleBin().

◆ GetDefaultRecycleBin()

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

Definition at line 321 of file recyclebin.c.

324{
325 IUnknown *pUnk;
326 HRESULT hr;
327
328 TRACE("(%s, %p)\n", debugstr_w(pszVolume), pprb);
329
330 if (!pprb)
331 return E_POINTER;
332
333 if (!pszVolume)
335 else
336 {
337 /* FIXME: do a better validation! */
338 if (wcslen(pszVolume) != 3 || pszVolume[1] != ':' || pszVolume[2] != '\\')
340
341 /* For now, only support this type of recycle bins... */
342 hr = RecycleBin5_Constructor(pszVolume, &pUnk);
343 }
344 if (!SUCCEEDED(hr))
345 return hr;
346 hr = IUnknown_QueryInterface(pUnk, &IID_IRecycleBin, (void **)pprb);
347 IUnknown_Release(pUnk);
348 return hr;
349}
#define ERROR_INVALID_NAME
Definition: compat.h:103
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
EXTERN_C const IID IID_IRecycleBin
Definition: recyclebin.h:241
EXTERN_C HRESULT RecycleBinGeneric_Constructor(OUT IUnknown **ppUnknown)
EXTERN_C HRESULT RecycleBin5_Constructor(_In_ LPCWSTR VolumePath, _Out_ IUnknown **ppUnknown)
#define E_POINTER
Definition: winerror.h:2365

Referenced by RecycleBinGeneric::DeleteFile(), DeleteFileToRecycleBinW(), RecycleBinGeneric::EmptyRecycleBin(), EmptyRecycleBinW(), EnumerateRecycleBinW(), GetRecycleBinPathFromDriveNumber(), RecycleBinGenericEnum::Next(), and SHQueryRecycleBinW().

◆ GetRecycleBinFileHandle()

EXTERN_C HDELFILE GetRecycleBinFileHandle ( IN LPCWSTR pszRoot  OPTIONAL,
IN const RECYCLEBINFILEIDENTITY pFI 
)

Definition at line 277 of file recyclebin.c.

280{
281 BBENUMFILECONTEXT context = { pFI, NULL };
283 return context.hDelFile;
284}
static BOOL CALLBACK GetRecycleBinFileHandleCallback(IN PVOID Context, IN HDELFILE hDeletedFile)
Definition: recyclebin.c:263
Definition: http.c:7252

Referenced by RemoveFromRecycleBinDatabase().

◆ GetRecycleBinPathFromDriveNumber()

EXTERN_C HRESULT GetRecycleBinPathFromDriveNumber ( UINT  Drive,
LPWSTR  Path 
)

Definition at line 352 of file recyclebin.c.

353{
354 const WCHAR volume[] = { LOWORD('A' + Drive), ':', '\\', '\0' };
355 IRecycleBin *pRB;
357 if (SUCCEEDED(hr))
358 {
359 hr = IRecycleBin_GetDirectory(pRB, Path);
360 IRecycleBin_Release(pRB);
361 }
362 return hr;
363}
PRTL_UNICODE_STRING_BUFFER Path
PWCHAR Drive
Definition: chkdsk.c:73
#define LOWORD(l)
Definition: pedump.c:82

Referenced by CRecycleBin::GetFSFolderForItem().

◆ InitializeRecycleBinStringRef()

static void InitializeRecycleBinStringRef ( PRECYCLEBINSTRING  pRBS,
LPCWSTR  String 
)
inlinestatic

Definition at line 62 of file recyclebin.h.

63{
64 pRBS->String = String;
65 pRBS->Alloc = NULL;
66}
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2433

Referenced by RecycleBin5File::GetInfo().

◆ RemoveFromRecycleBinDatabase()

EXTERN_C BOOL RemoveFromRecycleBinDatabase ( IN const RECYCLEBINFILEIDENTITY pFI)

Definition at line 287 of file recyclebin.c.

289{
290 BOOL ret = FALSE;
291 HDELFILE hDelFile = GetRecycleBinFileHandle(NULL, pFI);
292 if (hDelFile)
293 {
294 IRecycleBinFile *rbf = IRecycleBinFileFromHDELFILE(hDelFile);
295 ret = SUCCEEDED(IRecycleBinFile_RemoveFromDatabase(rbf));
296 CloseRecycleBinHandle(hDelFile);
297 }
298 return ret;
299}
BOOL WINAPI CloseRecycleBinHandle(IN HDELFILE hDeletedFile)
Definition: recyclebin.c:12
EXTERN_C HDELFILE GetRecycleBinFileHandle(IN LPCWSTR pszRoot OPTIONAL, IN const RECYCLEBINFILEIDENTITY *pFI)
Definition: recyclebin.c:277

Referenced by FileOpCallback().

◆ RestoreFileFromRecycleBin()

BOOL WINAPI RestoreFileFromRecycleBin ( IN HDELFILE  hDeletedFile)

Definition at line 302 of file recyclebin.c.

304{
305 IRecycleBinFile *rbf = IRecycleBinFileFromHDELFILE(hDeletedFile);
306 HRESULT hr;
307
308 TRACE("(%p)\n", hDeletedFile);
309
310 hr = IRecycleBinFile_Restore(rbf);
311 if (SUCCEEDED(hr))
312 return TRUE;
315 else
317 return FALSE;
318}

Variable Documentation

◆ IID_IRecycleBin

◆ IID_IRecycleBinEnumList

◆ IID_IRecycleBinFile

EXTERN_C const IID IID_IRecycleBinFile

Definition at line 239 of file recyclebin.h.

Referenced by RecycleBin5File::QueryInterface().