ReactOS 0.4.16-dev-820-g96aa1ee
RecycleBin5File Class Reference
Inheritance diagram for RecycleBin5File:
Collaboration diagram for RecycleBin5File:

Public Member Functions

 RecycleBin5File ()
 
virtual ~RecycleBin5File ()
 
HRESULT Init (_In_ IRecycleBin5 *prb, _In_ LPCWSTR Folder, _In_ PDELETED_FILE_RECORD pDeletedFile)
 
STDMETHODIMP QueryInterface (REFIID riid, void **ppvObject) override
 
 STDMETHODIMP_ (ULONG) AddRef() override
 
 STDMETHODIMP_ (ULONG) Release() override
 
STDMETHODIMP IsEqualIdentity (const RECYCLEBINFILEIDENTITY *pFI) override
 
STDMETHODIMP GetInfo (PDELETED_FILE_INFO pInfo) override
 
STDMETHODIMP GetLastModificationTime (FILETIME *pLastModificationTime) override
 
STDMETHODIMP GetDeletionTime (FILETIME *pDeletionTime) override
 
STDMETHODIMP GetFileSize (ULARGE_INTEGER *pFileSize) override
 
STDMETHODIMP GetPhysicalFileSize (ULARGE_INTEGER *pPhysicalFileSize) override
 
STDMETHODIMP GetAttributes (DWORD *pAttributes) override
 
STDMETHODIMP GetFileName (SIZE_T BufferSize, LPWSTR Buffer, SIZE_T *RequiredSize) override
 
STDMETHODIMP Delete () override
 
STDMETHODIMP Restore () override
 
STDMETHODIMP RemoveFromDatabase () override
 

Protected Attributes

LONG m_ref
 
IRecycleBin5m_recycleBin
 
DELETED_FILE_RECORD m_deletedFile
 
LPWSTR m_FullName
 

Detailed Description

Definition at line 14 of file recyclebin_v5_enumerator.cpp.

Constructor & Destructor Documentation

◆ RecycleBin5File()

RecycleBin5File::RecycleBin5File ( )

Definition at line 236 of file recyclebin_v5_enumerator.cpp.

237 : m_ref(1)
240{
242}
DELETED_FILE_RECORD m_deletedFile
#define NULL
Definition: types.h:112
#define ZeroMemory
Definition: winbase.h:1737

◆ ~RecycleBin5File()

RecycleBin5File::~RecycleBin5File ( )
virtual

Definition at line 81 of file recyclebin_v5_enumerator.cpp.

82{
83 TRACE("(%p)\n", this);
84 m_recycleBin->Release();
86}
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
#define TRACE(s)
Definition: solgame.cpp:4

Member Function Documentation

◆ Delete()

STDMETHODIMP RecycleBin5File::Delete ( )
override

Definition at line 218 of file recyclebin_v5_enumerator.cpp.

219{
220 TRACE("(%p)\n", this);
221 return m_recycleBin->Delete(m_FullName, &m_deletedFile);
222}

◆ GetAttributes()

STDMETHODIMP RecycleBin5File::GetAttributes ( DWORD pAttributes)
override

Definition at line 185 of file recyclebin_v5_enumerator.cpp.

186{
188
189 TRACE("(%p, %p)\n", this, pAttributes);
190
194
195 *pAttributes = dwAttributes;
196 return S_OK;
197}
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
Definition: fileinfo.c:652
unsigned long DWORD
Definition: ntddk_ex.h:95
#define S_OK
Definition: intsafe.h:52
#define HResultFromWin32
Definition: loader.cpp:14
DWORD dwAttributes
Definition: vdmdbg.h:34
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23
DWORD WINAPI GetLastError(void)
Definition: except.c:1042

Referenced by GetInfo().

◆ GetDeletionTime()

STDMETHODIMP RecycleBin5File::GetDeletionTime ( FILETIME pDeletionTime)
override

Definition at line 142 of file recyclebin_v5_enumerator.cpp.

143{
144 TRACE("(%p, %p)\n", this, pDeletionTime);
145 *pDeletionTime = m_deletedFile.DeletionTime;
146 return S_OK;
147}

◆ GetFileName()

STDMETHODIMP RecycleBin5File::GetFileName ( SIZE_T  BufferSize,
LPWSTR  Buffer,
SIZE_T RequiredSize 
)
override

Definition at line 199 of file recyclebin_v5_enumerator.cpp.

200{
201 DWORD dwRequired;
202
203 TRACE("(%p, %u, %p, %p)\n", this, BufferSize, Buffer, RequiredSize);
204
205 dwRequired = (DWORD)(wcslen(m_deletedFile.FileNameW) + 1) * sizeof(WCHAR);
206 if (RequiredSize)
207 *RequiredSize = dwRequired;
208
209 if (BufferSize == 0 && !Buffer)
210 return S_OK;
211
212 if (BufferSize < dwRequired)
213 return E_OUTOFMEMORY;
215 return S_OK;
216}
Definition: bufpool.h:45
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define DWORD
Definition: nt_native.h:44
WCHAR FileNameW[MAX_PATH]
Definition: recyclebin_v5.h:20
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
Definition: wdfdevice.h:4439
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254
#define CopyMemory
Definition: winbase.h:1735
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ GetFileSize()

STDMETHODIMP RecycleBin5File::GetFileSize ( ULARGE_INTEGER pFileSize)
override

Definition at line 149 of file recyclebin_v5_enumerator.cpp.

150{
151 TRACE("(%p, %p)\n", this, pFileSize);
152
157 {
158 pFileSize->QuadPart = 0;
159 return S_OK;
160 }
161
165 pFileSize->u.LowPart = ::GetFileSize(hFile, &pFileSize->u.HighPart);
166
167 HRESULT hr;
168 if (pFileSize->u.LowPart != INVALID_FILE_SIZE)
169 hr = S_OK;
170 else
172
174 return hr;
175}
STDMETHODIMP GetFileSize(ULARGE_INTEGER *pFileSize) override
#define CloseHandle
Definition: compat.h:739
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define GENERIC_READ
Definition: compat.h:135
#define CreateFileW
Definition: compat.h:741
#define FILE_SHARE_READ
Definition: compat.h:136
_In_ HANDLE hFile
Definition: mswsock.h:90
#define FILE_ATTRIBUTE_DIRECTORY
Definition: nt_native.h:705
HRESULT hr
Definition: shlfolder.c:183
ULONGLONG QuadPart
Definition: ms-dtyp.idl:185
struct _ULARGE_INTEGER::@4191 u
#define INVALID_FILE_SIZE
Definition: winbase.h:574
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92

Referenced by GetFileSize(), and GetInfo().

◆ GetInfo()

STDMETHODIMP RecycleBin5File::GetInfo ( PDELETED_FILE_INFO  pInfo)
override

Definition at line 97 of file recyclebin_v5_enumerator.cpp.

98{
99 HRESULT hr = S_OK;
100 ULARGE_INTEGER uli;
102 ZeroMemory(&pInfo->LastModification, sizeof(pInfo->LastModification));
104 C_ASSERT(sizeof(pInfo->FileSize) <= sizeof(UINT));
105 pInfo->FileSize = FAILED(GetFileSize(&uli)) ? INVALID_FILE_SIZE : uli.LowPart;
106 if (FAILED(hr = GetAttributes(&pInfo->Attributes)))
107 pInfo->Attributes = 0;
110 return hr;
111}
STDMETHODIMP GetAttributes(DWORD *pAttributes) override
STDMETHODIMP GetLastModificationTime(FILETIME *pLastModificationTime) override
#define FAILED(hr)
Definition: intsafe.h:51
#define C_ASSERT(e)
Definition: intsafe.h:73
unsigned int UINT
Definition: ndis.h:50
static void InitializeRecycleBinStringRef(PRECYCLEBINSTRING pRBS, LPCWSTR String)
Definition: recyclebin.h:62
RECYCLEBINFILESIZETYPE FileSize
Definition: recyclebin.h:42
RECYCLEBINSTRING RecycledFullPath
Definition: recyclebin.h:45
FILETIME DeletionTime
Definition: recyclebin.h:41
RECYCLEBINSTRING OriginalFullPath
Definition: recyclebin.h:44
FILETIME LastModification
Definition: recyclebin.h:40
$ULONG LowPart
Definition: ntbasedef.h:577

◆ GetLastModificationTime()

STDMETHODIMP RecycleBin5File::GetLastModificationTime ( FILETIME pLastModificationTime)
override

Definition at line 113 of file recyclebin_v5_enumerator.cpp.

114{
115 TRACE("(%p, %p)\n", this, pLastModificationTime);
116
120
126 NULL,
129 NULL);
132
133 HRESULT hr;
134 if (GetFileTime(hFile, NULL, NULL, pLastModificationTime))
135 hr = S_OK;
136 else
139 return hr;
140}
BOOL WINAPI GetFileTime(IN HANDLE hFile, OUT LPFILETIME lpCreationTime OPTIONAL, OUT LPFILETIME lpLastAccessTime OPTIONAL, OUT LPFILETIME lpLastWriteTime OPTIONAL)
Definition: fileinfo.c:896
#define FILE_FLAG_BACKUP_SEMANTICS
Definition: disk.h:41
#define FILE_SHARE_WRITE
Definition: nt_native.h:681
#define FILE_SHARE_DELETE
Definition: nt_native.h:682

Referenced by GetInfo().

◆ GetPhysicalFileSize()

STDMETHODIMP RecycleBin5File::GetPhysicalFileSize ( ULARGE_INTEGER pPhysicalFileSize)
override

Definition at line 177 of file recyclebin_v5_enumerator.cpp.

178{
179 TRACE("(%p, %p)\n", this, pPhysicalFileSize);
180 pPhysicalFileSize->u.HighPart = 0;
181 pPhysicalFileSize->u.LowPart = m_deletedFile.dwPhysicalFileSize;
182 return S_OK;
183}

◆ Init()

HRESULT RecycleBin5File::Init ( _In_ IRecycleBin5 prb,
_In_ LPCWSTR  Folder,
_In_ PDELETED_FILE_RECORD  pDeletedFile 
)

Definition at line 245 of file recyclebin_v5_enumerator.cpp.

249{
250 m_recycleBin = prb;
251 m_recycleBin->AddRef();
252 m_deletedFile = *pDeletedFile;
253
254 WCHAR szUniqueId[32];
255 StringCchPrintfW(szUniqueId, _countof(szUniqueId), L"%lu", pDeletedFile->dwRecordUniqueId);
256
257 CStringW strFullName(Folder);
258 strFullName += L"\\D";
259 strFullName += (WCHAR)(L'a' + pDeletedFile->dwDriveNumber);
260 strFullName += szUniqueId;
261 strFullName += PathFindExtensionW(pDeletedFile->FileNameW);
263 return E_FAIL;
264
265 return SHStrDup(strFullName, &m_FullName);
266}
#define E_FAIL
Definition: ddrawi.h:102
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
Definition: path.c:447
#define L(x)
Definition: ntvdm.h:50
#define SHStrDup
Definition: shlwapi.h:1572
#define _countof(array)
Definition: sndvol32.h:70
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530

Referenced by RecycleBin5File_Constructor().

◆ IsEqualIdentity()

STDMETHODIMP RecycleBin5File::IsEqualIdentity ( const RECYCLEBINFILEIDENTITY pFI)
inlineoverride

Definition at line 31 of file recyclebin_v5_enumerator.cpp.

32 {
35 }
EXTERN_C BOOL RecycleBinGeneric_IsEqualFileIdentity(const RECYCLEBINFILEIDENTITY *p1, const RECYCLEBINFILEIDENTITY *p2)
#define S_FALSE
Definition: winerror.h:2357

◆ QueryInterface()

STDMETHODIMP RecycleBin5File::QueryInterface ( REFIID  riid,
void **  ppvObject 
)
override

Definition at line 54 of file recyclebin_v5_enumerator.cpp.

55{
56 TRACE("(%p, %s, %p)\n", this, debugstr_guid(&riid), ppvObject);
57
58 if (!ppvObject)
59 return E_POINTER;
60
62 {
63 *ppvObject = static_cast<IRecycleBinFile *>(this);
64 }
65 else
66 {
67 *ppvObject = NULL;
68 return E_NOINTERFACE;
69 }
70
71 AddRef();
72 return S_OK;
73}
const GUID IID_IUnknown
REFIID riid
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
EXTERN_C const IID IID_IRecycleBinFile
Definition: recyclebin.h:239
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
#define E_NOINTERFACE
Definition: winerror.h:2364
#define E_POINTER
Definition: winerror.h:2365

◆ RemoveFromDatabase()

STDMETHODIMP RecycleBin5File::RemoveFromDatabase ( )
override

Definition at line 230 of file recyclebin_v5_enumerator.cpp.

231{
232 TRACE("(%p)\n", this);
233 return m_recycleBin->RemoveFromDatabase(m_FullName, &m_deletedFile);
234}

◆ Restore()

STDMETHODIMP RecycleBin5File::Restore ( )
override

Definition at line 224 of file recyclebin_v5_enumerator.cpp.

225{
226 TRACE("(%p)\n", this);
227 return m_recycleBin->Restore(m_FullName, &m_deletedFile);
228}

◆ STDMETHODIMP_() [1/2]

RecycleBin5File::STDMETHODIMP_ ( ULONG  )
override

◆ STDMETHODIMP_() [2/2]

RecycleBin5File::STDMETHODIMP_ ( ULONG  )
override

Member Data Documentation

◆ m_deletedFile

◆ m_FullName

◆ m_recycleBin

IRecycleBin5* RecycleBin5File::m_recycleBin
protected

◆ m_ref

LONG RecycleBin5File::m_ref
protected

Definition at line 48 of file recyclebin_v5_enumerator.cpp.

Referenced by STDMETHODIMP_().


The documentation for this class was generated from the following file: