Add library to deal with recycle bin.
[reactos.git] / reactos / lib / recyclebin / recyclebin.h
1 #ifndef __RECYCLEBIN_H
2 #define __RECYCLEBIN_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #include <windows.h>
9 #define ANY_SIZE 1
10
11 typedef struct _DELETED_FILE_DETAILS_A
12 {
13 FILETIME LastModification;
14 FILETIME DeletionTime;
15 LARGE_INTEGER FileSize;
16 LARGE_INTEGER PhysicalFileSize;
17 DWORD Attributes;
18 CHAR FileName[ANY_SIZE];
19 } DELETED_FILE_DETAILS_A, *PDELETED_FILE_DETAILS_A;
20 typedef struct _DELETED_FILE_DETAILS_W
21 {
22 FILETIME LastModification;
23 FILETIME DeletionTime;
24 LARGE_INTEGER FileSize;
25 LARGE_INTEGER PhysicalFileSize;
26 DWORD Attributes;
27 WCHAR FileName[ANY_SIZE];
28 } DELETED_FILE_DETAILS_W, *PDELETED_FILE_DETAILS_W;
29 #ifdef UNICODE
30 #define DELETED_FILE_DETAILS DELETED_FILE_DETAILS_W
31 #define PDELETED_FILE_DETAILS PDELETED_FILE_DETAILS_W
32 #else
33 #define DELETED_FILE_DETAILS DELETED_FILE_DETAILS_A
34 #define PDELETED_FILE_DETAILS PDELETED_FILE_DETAILS_A
35 #endif
36
37 typedef BOOL (WINAPI *PENUMERATE_RECYCLEBIN_CALLBACK)(IN PVOID Context, IN HANDLE hDeletedFile);
38
39 BOOL WINAPI
40 CloseRecycleBinHandle(
41 IN HANDLE hDeletedFile);
42
43 BOOL WINAPI
44 DeleteFileToRecycleBinA(
45 IN LPCSTR FileName);
46 BOOL WINAPI
47 DeleteFileToRecycleBinW(
48 IN LPCWSTR FileName);
49 #ifdef UNICODE
50 #define DeleteFileToRecycleBin DeleteFileToRecycleBinW
51 #else
52 #define DeleteFileToRecycleBin DeleteFileToRecycleBinA
53 #endif
54
55 BOOL WINAPI
56 EmptyRecycleBinA(
57 IN CHAR driveLetter);
58 BOOL WINAPI
59 EmptyRecycleBinW(
60 IN WCHAR driveLetter);
61 #ifdef UNICODE
62 #define EmptyRecycleBin EmptyRecycleBinW
63 #else
64 #define EmptyRecycleBin EmptyRecycleBinA
65 #endif
66
67 BOOL WINAPI
68 EnumerateRecycleBinA(
69 IN CHAR driveLetter,
70 IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback,
71 IN PVOID Context);
72 BOOL WINAPI
73 EnumerateRecycleBinW(
74 IN WCHAR driveLetter,
75 IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback,
76 IN PVOID Context);
77 #ifdef UNICODE
78 #define EnumerateRecycleBin EnumerateRecycleBinW
79 #else
80 #define EnumerateRecycleBin EnumerateRecycleBinA
81 #endif
82
83 BOOL WINAPI
84 GetDeletedFileDetailsA(
85 IN HANDLE hDeletedFile,
86 IN DWORD BufferSize,
87 IN OUT PDELETED_FILE_DETAILS_A FileDetails,
88 OUT LPDWORD RequiredSize OPTIONAL);
89 BOOL WINAPI
90 GetDeletedFileDetailsW(
91 IN HANDLE hDeletedFile,
92 IN DWORD BufferSize,
93 IN OUT PDELETED_FILE_DETAILS_W FileDetails,
94 OUT LPDWORD RequiredSize OPTIONAL);
95 #ifdef UNICODE
96 #define GetDeletedFileDetails GetDeletedFileDetailsW
97 #else
98 #define GetDeletedFileDetails GetDeletedFileDetailsA
99 #endif
100
101 BOOL WINAPI
102 RestoreFile(
103 IN HANDLE hDeletedFile);
104
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif /* __RECYCLEBIN_H */