- 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 0efa411..3db2f73 100644 (file)
-#include "recyclebin.h"\r
-#include "sddl.h"\r
-\r
-/* Defines */\r
-#define RECYCLEBIN_MAGIC  0x6e694252\r
-#define DELETEDFILE_MAGIC 0x6e694253\r
-\r
-#define RECYCLE_BIN_DIRECTORY_WITH_ACL    L"RECYCLER"\r
-#define RECYCLE_BIN_DIRECTORY_WITHOUT_ACL L"RECYCLED"\r
-#define RECYCLE_BIN_FILE_NAME             L"INFO2"\r
-\r
-#define ROUND_UP(N, S) ((( (N) + (S)  - 1) / (S) ) * (S) )\r
-\r
-/* List manipulation */\r
-#define InitializeListHead(le)  (void)((le)->Flink = (le)->Blink = (le))\r
-#define InsertTailList(le,e)    do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)\r
-#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; }\r
-\r
-/* Typedefs */\r
-struct _RECYCLE_BIN;\r
-typedef struct _RECYCLE_BIN *PRECYCLE_BIN;\r
-struct _REFCOUNT_DATA;\r
-typedef struct _REFCOUNT_DATA *PREFCOUNT_DATA;\r
-\r
-typedef BOOL (*PINT_ENUMERATE_RECYCLEBIN_CALLBACK)(IN PVOID Context, IN HANDLE hDeletedFile);\r
-typedef BOOL (*PDESTROY_DATA)    (IN PREFCOUNT_DATA pData);\r
-\r
-typedef BOOL (*PCLOSE_HANDLE)    (IN HANDLE hHandle);\r
-typedef BOOL (*PDELETE_FILE)     (IN PRECYCLE_BIN bin, IN LPCWSTR FullPath, IN LPCWSTR FileName);\r
-typedef BOOL (*PEMPTY_RECYCLEBIN)(IN PRECYCLE_BIN* bin);\r
-typedef BOOL (*PENUMERATE_FILES) (IN PRECYCLE_BIN bin, IN PINT_ENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context);\r
-typedef BOOL (*PGET_DETAILS)     (IN PRECYCLE_BIN bin, IN HANDLE hDeletedFile, IN DWORD BufferSize, IN OUT PDELETED_FILE_DETAILS_W FileDetails, OUT LPDWORD RequiredSize OPTIONAL);\r
-typedef BOOL (*PRESTORE_FILE)    (IN PRECYCLE_BIN bin, IN HANDLE hDeletedFile);\r
-\r
-typedef struct _RECYCLEBIN_CALLBACKS\r
-{\r
-       PCLOSE_HANDLE     CloseHandle;\r
-       PDELETE_FILE      DeleteFile;\r
-       PEMPTY_RECYCLEBIN EmptyRecycleBin;\r
-       PENUMERATE_FILES  EnumerateFiles;\r
-       PGET_DETAILS      GetDetails;\r
-       PRESTORE_FILE     RestoreFile;\r
-} RECYCLEBIN_CALLBACKS, *PRECYCLEBIN_CALLBACKS;\r
-\r
-typedef struct _REFCOUNT_DATA\r
-{\r
-       DWORD ReferenceCount;\r
-       PDESTROY_DATA Close;\r
-} REFCOUNT_DATA;\r
-\r
-typedef struct _RECYCLE_BIN\r
-{\r
-       DWORD magic; /* RECYCLEBIN_MAGIC */\r
-       LIST_ENTRY ListEntry;\r
-       REFCOUNT_DATA refCount;\r
-       HANDLE hInfo;\r
-       RECYCLEBIN_CALLBACKS Callbacks;\r
-       LPWSTR InfoFile;\r
-       WCHAR Folder[ANY_SIZE]; /* [drive]:\[RECYCLE_BIN_DIRECTORY]\{SID} */\r
-} RECYCLE_BIN;\r
-\r
-typedef struct _DELETED_FILE_HANDLE\r
-{\r
-       DWORD magic; /* DELETEDFILE_MAGIC */\r
-       REFCOUNT_DATA refCount;\r
-       PRECYCLE_BIN bin;\r
-       HANDLE hDeletedFile; /* specific to recycle bin format */\r
-} DELETED_FILE_HANDLE, *PDELETED_FILE_HANDLE;\r
-\r
-/* Structures on disk */\r
-\r
-#include <pshpack1.h>\r
-\r
-typedef struct _INFO2_HEADER\r
-{\r
-       DWORD dwVersion;\r
-       DWORD dwNumberOfEntries;\r
-       DWORD dwHighestRecordUniqueId;\r
-       DWORD dwRecordSize;\r
-       DWORD dwTotalLogicalSize;\r
-} INFO2_HEADER, *PINFO2_HEADER;\r
-\r
-#include <poppack.h>\r
-\r
-/* Prototypes */\r
-\r
-/* openclose.c */\r
-\r
-BOOL\r
-IntCheckDeletedFileHandle(\r
-       IN HANDLE hDeletedFile);\r
-\r
-PRECYCLE_BIN\r
-IntReferenceRecycleBin(\r
-       IN WCHAR driveLetter);\r
-\r
-/* recyclebin_v5.c */\r
-\r
-VOID\r
-InitializeCallbacks5(\r
-       IN OUT PRECYCLEBIN_CALLBACKS Callbacks);\r
-\r
-/* refcount.c */\r
-\r
-BOOL\r
-InitializeHandle(\r
-       IN PREFCOUNT_DATA pData,\r
-       IN PDESTROY_DATA pFnClose OPTIONAL);\r
-\r
-BOOL\r
-ReferenceHandle(\r
-       IN PREFCOUNT_DATA pData);\r
-\r
-BOOL\r
-DereferenceHandle(\r
-       IN PREFCOUNT_DATA pData);\r
+#include "recyclebin.h"
+#include "sddl.h"
+#include <wine/debug.h>
+
+/* Defines */
+
+#define RECYCLE_BIN_DIRECTORY_WITH_ACL    L"RECYCLER"
+#define RECYCLE_BIN_DIRECTORY_WITHOUT_ACL L"RECYCLED"
+#define RECYCLE_BIN_FILE_NAME             L"INFO2"
+
+#define ROUND_UP(N, S) ((( (N) + (S)  - 1) / (S) ) * (S) )
+
+/* Structures on disk */
+
+#include <pshpack1.h>
+
+typedef struct _INFO2_HEADER
+{
+       DWORD dwVersion;
+       DWORD dwNumberOfEntries; /* unused */
+       DWORD dwHighestRecordUniqueId; /* unused */
+       DWORD dwRecordSize;
+       DWORD dwTotalLogicalSize;
+} INFO2_HEADER, *PINFO2_HEADER;
+
+#include <poppack.h>
+
+/* Prototypes */
+
+/* recyclebin_generic.c */
+
+HRESULT RecycleBinGeneric_Constructor(OUT IUnknown **ppUnknown);
+
+/* recyclebin_generic_enumerator.c */
+
+HRESULT RecycleBinGenericEnum_Constructor(OUT IRecycleBinEnumList **pprbel);
+
+/* recyclebin_v5.c */
+
+HRESULT RecycleBin5_Constructor(IN LPCWSTR VolumePath, OUT IUnknown **ppUnknown);