1 #ifndef _RECYCLEBIN_PRIVATE_H_
2 #define _RECYCLEBIN_PRIVATE_H_
3 
4 #include <stdio.h>
5 
6 #define COBJMACROS
7 
8 #include <shlobj.h>
9 
10 #include "recyclebin.h"
11 #include "recyclebin_v5.h"
12 
13 #include <wine/debug.h>
14 WINE_DEFAULT_DEBUG_CHANNEL(recyclebin);
15 
16 #ifdef __cplusplus
HResultFromWin32(DWORD hr)17 static inline HRESULT HResultFromWin32(DWORD hr)
18 {
19      // HRESULT_FROM_WIN32 will evaluate its parameter twice, this function will not.
20     return HRESULT_FROM_WIN32(hr);
21 }
22 #endif
23 
24 /* Defines */
25 
26 #define RECYCLE_BIN_DIRECTORY_WITH_ACL    L"RECYCLER"
27 #define RECYCLE_BIN_DIRECTORY_WITHOUT_ACL L"RECYCLED"
28 #define RECYCLE_BIN_FILE_NAME             L"INFO2"
29 #define RECYCLE_BIN_FILE_NAME_V1          L"INFO"
30 
31 #define ROUND_UP(N, S) ((( (N) + (S)  - 1) / (S) ) * (S) )
32 
33 /* Structures on disk */
34 
35 #include <pshpack1.h>
36 
37 typedef struct _INFO2_HEADER
38 {
39     DWORD dwVersion;
40     DWORD dwNumberOfEntries; /* unused */
41     DWORD dwHighestRecordUniqueId; /* unused */
42     DWORD dwRecordSize;
43     DWORD dwTotalLogicalSize;
44 } INFO2_HEADER, *PINFO2_HEADER;
45 
46 #include <poppack.h>
47 
48 /* Prototypes */
49 
50 /* recyclebin_generic.c */
51 
52 EXTERN_C
53 HRESULT RecycleBinGeneric_Constructor(OUT IUnknown **ppUnknown);
54 
55 EXTERN_C
56 BOOL RecycleBinGeneric_IsEqualFileIdentity(const RECYCLEBINFILEIDENTITY *p1, const RECYCLEBINFILEIDENTITY *p2);
57 
58 /* recyclebin_generic_enumerator.c */
59 
60 EXTERN_C
61 HRESULT RecycleBinGenericEnum_Constructor(OUT IRecycleBinEnumList **pprbel);
62 
63 /* recyclebin_v5.c */
64 
65 EXTERN_C
66 HRESULT RecycleBin5_Constructor(_In_ LPCWSTR VolumePath, _Out_ IUnknown **ppUnknown);
67 
68 #endif /* _RECYCLEBIN_PRIVATE_H_ */
69