ReactOS 0.4.16-dev-527-gdad3a09
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
 

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 229 of file recyclebin_v5_enumerator.cpp.

230 : m_ref(1)
233{
235}
DELETED_FILE_RECORD m_deletedFile
#define NULL
Definition: types.h:112
#define ZeroMemory
Definition: winbase.h:1737

◆ ~RecycleBin5File()

RecycleBin5File::~RecycleBin5File ( )
virtual

Definition at line 80 of file recyclebin_v5_enumerator.cpp.

81{
82 TRACE("(%p)\n", this);
83 m_recycleBin->Release();
85}
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 217 of file recyclebin_v5_enumerator.cpp.

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

◆ GetAttributes()

STDMETHODIMP RecycleBin5File::GetAttributes ( DWORD pAttributes)
override

Definition at line 184 of file recyclebin_v5_enumerator.cpp.

185{
187
188 TRACE("(%p, %p)\n", this, pAttributes);
189
193
194 *pAttributes = dwAttributes;
195 return S_OK;
196}
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
Definition: fileinfo.c:652
unsigned long DWORD
Definition: ntddk_ex.h:95
#define S_OK
Definition: intsafe.h:52
HRESULT HResultFromWin32(DWORD hr)
Definition: shellutils.h:70
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 141 of file recyclebin_v5_enumerator.cpp.

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

◆ GetFileName()

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

Definition at line 198 of file recyclebin_v5_enumerator.cpp.

199{
200 DWORD dwRequired;
201
202 TRACE("(%p, %u, %p, %p)\n", this, BufferSize, Buffer, RequiredSize);
203
204 dwRequired = (DWORD)(wcslen(m_deletedFile.FileNameW) + 1) * sizeof(WCHAR);
205 if (RequiredSize)
206 *RequiredSize = dwRequired;
207
208 if (BufferSize == 0 && !Buffer)
209 return S_OK;
210
211 if (BufferSize < dwRequired)
212 return E_OUTOFMEMORY;
214 return S_OK;
215}
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 148 of file recyclebin_v5_enumerator.cpp.

149{
150 TRACE("(%p, %p)\n", this, pFileSize);
151
156 {
157 pFileSize->QuadPart = 0;
158 return S_OK;
159 }
160
164 pFileSize->u.LowPart = ::GetFileSize(hFile, &pFileSize->u.HighPart);
165
166 HRESULT hr;
167 if (pFileSize->u.LowPart != INVALID_FILE_SIZE)
168 hr = S_OK;
169 else
171
173 return hr;
174}
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::@4177 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 96 of file recyclebin_v5_enumerator.cpp.

97{
98 HRESULT hr = S_OK;
101 ZeroMemory(&pInfo->LastModification, sizeof(pInfo->LastModification));
103 C_ASSERT(sizeof(pInfo->FileSize) <= sizeof(UINT));
104 pInfo->FileSize = FAILED(GetFileSize(&uli)) ? INVALID_FILE_SIZE : uli.LowPart;
105 if (FAILED(hr = GetAttributes(&pInfo->Attributes)))
106 pInfo->Attributes = 0;
109 return hr;
110}
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 112 of file recyclebin_v5_enumerator.cpp.

113{
114 TRACE("(%p, %p)\n", this, pLastModificationTime);
115
119
125 NULL,
128 NULL);
131
132 HRESULT hr;
133 if (GetFileTime(hFile, NULL, NULL, pLastModificationTime))
134 hr = S_OK;
135 else
138 return hr;
139}
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 176 of file recyclebin_v5_enumerator.cpp.

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

◆ Init()

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

Definition at line 238 of file recyclebin_v5_enumerator.cpp.

242{
243 m_recycleBin = prb;
244 m_recycleBin->AddRef();
245 m_deletedFile = *pDeletedFile;
246
247 WCHAR szUniqueId[32];
248 StringCchPrintfW(szUniqueId, _countof(szUniqueId), L"%lu", pDeletedFile->dwRecordUniqueId);
249
250 CStringW strFullName(Folder);
251 strFullName += L"\\D";
252 strFullName += (WCHAR)(L'a' + pDeletedFile->dwDriveNumber);
253 strFullName += szUniqueId;
254 strFullName += PathFindExtensionW(pDeletedFile->FileNameW);
256 return E_FAIL;
257
258 return SHStrDup(strFullName, &m_FullName);
259}
#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:1563
#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 53 of file recyclebin_v5_enumerator.cpp.

54{
55 TRACE("(%p, %s, %p)\n", this, debugstr_guid(&riid), ppvObject);
56
57 if (!ppvObject)
58 return E_POINTER;
59
61 {
62 *ppvObject = static_cast<IRecycleBinFile *>(this);
63 }
64 else
65 {
66 *ppvObject = NULL;
67 return E_NOINTERFACE;
68 }
69
70 AddRef();
71 return S_OK;
72}
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:234
_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

◆ Restore()

STDMETHODIMP RecycleBin5File::Restore ( )
override

Definition at line 223 of file recyclebin_v5_enumerator.cpp.

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

◆ STDMETHODIMP_() [1/2]

RecycleBin5File::STDMETHODIMP_ ( ULONG  )
override

◆ STDMETHODIMP_() [2/2]

RecycleBin5File::STDMETHODIMP_ ( ULONG  )
override

Member Data Documentation

◆ m_deletedFile

◆ m_FullName

LPWSTR RecycleBin5File::m_FullName
protected

◆ m_recycleBin

IRecycleBin5* RecycleBin5File::m_recycleBin
protected

Definition at line 48 of file recyclebin_v5_enumerator.cpp.

Referenced by Delete(), Init(), Restore(), and ~RecycleBin5File().

◆ m_ref

LONG RecycleBin5File::m_ref
protected

Definition at line 47 of file recyclebin_v5_enumerator.cpp.

Referenced by STDMETHODIMP_().


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