- DBGKD_WAIT_STATE_CHANGE64 is used in KD protocol 5, not number 6 that we use. Proto...
[reactos.git] / reactos / lib / recyclebin / recyclebin_private.h
index 004733f..3db2f73 100644 (file)
@@ -1,9 +1,8 @@
 #include "recyclebin.h"
 #include "sddl.h"
+#include <wine/debug.h>
 
 /* Defines */
-#define RECYCLEBIN_MAGIC  0x6e694252
-#define DELETEDFILE_MAGIC 0x6e694253
 
 #define RECYCLE_BIN_DIRECTORY_WITH_ACL    L"RECYCLER"
 #define RECYCLE_BIN_DIRECTORY_WITHOUT_ACL L"RECYCLED"
 
 #define ROUND_UP(N, S) ((( (N) + (S)  - 1) / (S) ) * (S) )
 
-/* List manipulation */
-#define InitializeListHead(le)  (void)((le)->Flink = (le)->Blink = (le))
-#define InsertTailList(le,e)    do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
-#define RemoveEntryList(Entry)  { PLIST_ENTRY _EX_Blink, _EX_Flink; _EX_Flink = (Entry)->Flink; _EX_Blink = (Entry)->Blink; _EX_Blink->Flink = _EX_Flink; _EX_Flink->Blink = _EX_Blink; }
-
-/* Typedefs */
-struct _RECYCLE_BIN;
-typedef struct _RECYCLE_BIN *PRECYCLE_BIN;
-struct _REFCOUNT_DATA;
-typedef struct _REFCOUNT_DATA *PREFCOUNT_DATA;
-
-typedef BOOL (*PINT_ENUMERATE_RECYCLEBIN_CALLBACK)(IN PVOID Context OPTIONAL, IN HANDLE hDeletedFile);
-typedef BOOL (*PDESTROY_DATA)    (IN PREFCOUNT_DATA pData);
-
-typedef BOOL (*PCLOSE_HANDLE)    (IN HANDLE hHandle);
-typedef BOOL (*PDELETE_FILE)     (IN PRECYCLE_BIN bin, IN LPCWSTR FullPath, IN LPCWSTR FileName);
-typedef BOOL (*PEMPTY_RECYCLEBIN)(IN PRECYCLE_BIN* bin);
-typedef BOOL (*PENUMERATE_FILES) (IN PRECYCLE_BIN bin, IN PINT_ENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL);
-typedef BOOL (*PGET_DETAILS)     (IN PRECYCLE_BIN bin, IN HANDLE hDeletedFile, IN DWORD BufferSize, IN OUT PDELETED_FILE_DETAILS_W FileDetails OPTIONAL, OUT LPDWORD RequiredSize OPTIONAL);
-typedef BOOL (*PRESTORE_FILE)    (IN PRECYCLE_BIN bin, IN HANDLE hDeletedFile);
-
-typedef struct _RECYCLEBIN_CALLBACKS
-{
-       PCLOSE_HANDLE     CloseHandle;
-       PDELETE_FILE      DeleteFile;
-       PEMPTY_RECYCLEBIN EmptyRecycleBin;
-       PENUMERATE_FILES  EnumerateFiles;
-       PGET_DETAILS      GetDetails;
-       PRESTORE_FILE     RestoreFile;
-} RECYCLEBIN_CALLBACKS, *PRECYCLEBIN_CALLBACKS;
-
-typedef struct _REFCOUNT_DATA
-{
-       DWORD ReferenceCount;
-       PDESTROY_DATA Close;
-} REFCOUNT_DATA;
-
-typedef struct _RECYCLE_BIN
-{
-       DWORD magic; /* RECYCLEBIN_MAGIC */
-       LIST_ENTRY ListEntry;
-       REFCOUNT_DATA refCount;
-       HANDLE hInfo;
-       RECYCLEBIN_CALLBACKS Callbacks;
-       LPWSTR InfoFile;
-       WCHAR Folder[ANY_SIZE]; /* [drive]:\[RECYCLE_BIN_DIRECTORY]\{SID} */
-} RECYCLE_BIN;
-
-typedef struct _DELETED_FILE_HANDLE
-{
-       DWORD magic; /* DELETEDFILE_MAGIC */
-       REFCOUNT_DATA refCount;
-       PRECYCLE_BIN bin;
-       HANDLE hDeletedFile; /* specific to recycle bin format */
-} DELETED_FILE_HANDLE, *PDELETED_FILE_HANDLE;
-
 /* Structures on disk */
 
 #include <pshpack1.h>
@@ -74,8 +17,8 @@ typedef struct _DELETED_FILE_HANDLE
 typedef struct _INFO2_HEADER
 {
        DWORD dwVersion;
-       DWORD dwNumberOfEntries;
-       DWORD dwHighestRecordUniqueId;
+       DWORD dwNumberOfEntries; /* unused */
+       DWORD dwHighestRecordUniqueId; /* unused */
        DWORD dwRecordSize;
        DWORD dwTotalLogicalSize;
 } INFO2_HEADER, *PINFO2_HEADER;
@@ -84,33 +27,14 @@ typedef struct _INFO2_HEADER
 
 /* Prototypes */
 
-/* openclose.c */
-
-BOOL
-IntCheckDeletedFileHandle(
-       IN HANDLE hDeletedFile);
+/* recyclebin_generic.c */
 
-PRECYCLE_BIN
-IntReferenceRecycleBin(
-       IN WCHAR driveLetter);
+HRESULT RecycleBinGeneric_Constructor(OUT IUnknown **ppUnknown);
 
-/* recyclebin_v5.c */
-
-VOID
-InitializeCallbacks5(
-       IN OUT PRECYCLEBIN_CALLBACKS Callbacks);
+/* recyclebin_generic_enumerator.c */
 
-/* refcount.c */
+HRESULT RecycleBinGenericEnum_Constructor(OUT IRecycleBinEnumList **pprbel);
 
-BOOL
-InitializeHandle(
-       IN PREFCOUNT_DATA pData,
-       IN PDESTROY_DATA pFnClose OPTIONAL);
-
-BOOL
-ReferenceHandle(
-       IN PREFCOUNT_DATA pData);
+/* recyclebin_v5.c */
 
-BOOL
-DereferenceHandle(
-       IN PREFCOUNT_DATA pData);
+HRESULT RecycleBin5_Constructor(IN LPCWSTR VolumePath, OUT IUnknown **ppUnknown);