223{
225 DWORD dwBufferLength = 0;
229 WCHAR szUniqueId[64];
240
242
245
246
248 {
251 {
252 if (szFullName)
255 }
256 else if (
len < dwBufferLength)
257 break;
258 if (szFullName)
260 dwBufferLength =
len;
262 if (!szFullName)
264 }
265
266
269 {
272 }
273
274 if (dwBufferLength < 2 || szFullName[1] != ':')
275 {
276
279 }
280
283 {
286 }
287
288
294 {
297 }
298
299
302 {
305 }
306
307
310 {
313 }
316
317
318#if 0
320 {
323 }
324#else
327 {
330 }
331#endif
332
334 {
335
338 }
340
341
344 if (dwEntries == 0)
346 else
347 {
350 }
351
354
356 DeletedFileName +=
L"\\D";
358 DeletedFileName += szUniqueId;
360
361
363 {
366 }
368
369
372 {
375 }
377
378
381 {
385 }
386
389 GetFileTime(
hFile, &wfd.ftCreationTime, &wfd.ftLastAccessTime, &wfd.ftLastWriteTime);
390
391
392 if (
MoveFileW(szFullName, DeletedFileName))
394 else
396
398 {
401 }
402
410}
EXTERN_C void CRecycleBin_NotifyRecycled(LPCWSTR OrigPath, const WIN32_FIND_DATAW *pFind, const RECYCLEBINFILEIDENTITY *pFI)
#define ERROR_NOT_ENOUGH_MEMORY
#define CreateFileMappingW(a, b, c, d, e, f)
#define ERROR_NOT_SUPPORTED
#define WideCharToMultiByte
#define ERROR_INVALID_NAME
static void cleanup(void)
BOOL WINAPI GetDiskFreeSpaceW(IN LPCWSTR lpRootPathName, OUT LPDWORD lpSectorsPerCluster, OUT LPDWORD lpBytesPerSector, OUT LPDWORD lpNumberOfFreeClusters, OUT LPDWORD lpTotalNumberOfClusters)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
BOOL WINAPI GetFileTime(IN HANDLE hFile, OUT LPFILETIME lpCreationTime OPTIONAL, OUT LPFILETIME lpLastAccessTime OPTIONAL, OUT LPFILETIME lpLastWriteTime OPTIONAL)
BOOL WINAPI MoveFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
VOID WINAPI GetSystemTime(OUT LPSYSTEMTIME lpSystemTime)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
#define ROUND_UP(n, align)
_Inout_opt_ PUNICODE_STRING Extension
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
FxContextHeader * pHeader
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
_CRTIMP wchar_t *__cdecl _ultow(_In_ unsigned long _Value, _Pre_notnull_ _Post_z_ wchar_t *_Dest, _In_ int _Radix)
#define FILE_FLAG_BACKUP_SEMANTICS
#define FILE_ATTRIBUTE_DIRECTORY
struct _INFO2_HEADER * PINFO2_HEADER
struct _DELETED_FILE_RECORD * PDELETED_FILE_RECORD
struct _DELETED_FILE_RECORD DELETED_FILE_RECORD
WCHAR FileNameW[MAX_PATH]
struct _LARGE_INTEGER::@2309 u
#define INVALID_FILE_ATTRIBUTES
#define INVALID_FILE_SIZE
_In_ LPCSTR _In_opt_ LPCSTR _In_ DWORD _Out_opt_ LPSTR * lpFilePart
_In_ ULONG _In_ ULONG_PTR ident
#define ERROR_SHARING_VIOLATION
#define HRESULT_FROM_WIN32(x)