- DBGKD_WAIT_STATE_CHANGE64 is used in KD protocol 5, not number 6 that we use. Proto...
[reactos.git] / reactos / lib / recyclebin / recyclebin_v5.h
index 47047d6..7b05678 100644 (file)
-/* Recycle bin management\r
- * This file is under the GPLv2 licence\r
- * Copyright (C) 2006 HervĂ© Poussineau <hpoussin@reactos.org>\r
- */\r
-\r
-#include "recyclebin_private.h"\r
-\r
-#include <pshpack1.h>\r
-\r
-/* MS Windows 2000/XP/2003 */\r
-typedef struct _DELETED_FILE_RECORD\r
-{\r
-       CHAR FileNameA[MAX_PATH];\r
-       DWORD dwRecordUniqueId;\r
-       DWORD dwDriveNumber;\r
-       FILETIME DeletionTime;\r
-       DWORD dwPhysicalFileSize;\r
-       WCHAR FileNameW[MAX_PATH];\r
-} DELETED_FILE_RECORD, *PDELETED_FILE_RECORD;\r
-\r
-#include <poppack.h>\r
-\r
-static BOOL\r
-CloseHandle5(\r
-       IN HANDLE hDeletedFile);\r
-\r
-static BOOL\r
-DeleteFile5(\r
-       IN PRECYCLE_BIN Context,\r
-       IN LPCWSTR FullPath,\r
-       IN LPCWSTR FileName);\r
-\r
-static BOOL\r
-EmptyRecycleBin5(\r
-       IN PRECYCLE_BIN* bin);\r
-\r
-static BOOL\r
-EnumerateFiles5(\r
-       IN PRECYCLE_BIN bin,\r
-       IN PINT_ENUMERATE_RECYCLEBIN_CALLBACK pFnCallback,\r
-       IN PVOID Context);\r
-\r
-static BOOL\r
-GetDetails5(\r
-       IN PRECYCLE_BIN bin,\r
-       IN HANDLE hDeletedFile,\r
-       IN DWORD BufferSize,\r
-       IN OUT PDELETED_FILE_DETAILS_W FileDetails,\r
-       OUT LPDWORD RequiredSize OPTIONAL);\r
-\r
-static BOOL\r
-RestoreFile5(\r
-       IN PRECYCLE_BIN Context,\r
-       IN HANDLE hDeletedFile);\r
-\r
-static BOOL\r
-IntDeleteRecursive(\r
-       IN LPCWSTR FullName);\r
-\r
-static BOOL\r
-IntEmptyRecycleBinCallback(\r
-       IN PVOID Context,\r
-       IN HANDLE hDeletedFile);\r
-\r
-static BOOL\r
-IntGetFullName(\r
-       IN PRECYCLE_BIN bin,\r
-       IN PDELETED_FILE_RECORD pDeletedFile,\r
-       OUT LPWSTR* pFullName);\r
-\r
-static BOOL\r
-IntSearchRecord(\r
-       IN PRECYCLE_BIN bin,\r
-       IN HANDLE hDeletedFile,\r
-       OUT PDELETED_FILE_RECORD DeletedFile,\r
-       OUT PLARGE_INTEGER Position OPTIONAL);\r
+/* Recycle bin management
+ * This file is under the GPLv2 licence
+ * Copyright (C) 2006 HervĂ© Poussineau <hpoussin@reactos.org>
+ */
+
+#include "recyclebin_private.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <pshpack1.h>
+
+/* MS Windows 2000/XP/2003 */
+typedef struct _DELETED_FILE_RECORD
+{
+       CHAR FileNameA[MAX_PATH];
+       DWORD dwRecordUniqueId;
+       DWORD dwDriveNumber;
+       FILETIME DeletionTime;
+       DWORD dwPhysicalFileSize;
+       WCHAR FileNameW[MAX_PATH];
+} DELETED_FILE_RECORD, *PDELETED_FILE_RECORD;
+
+#include <poppack.h>
+
+/* COM interface */
+
+typedef interface IRecycleBin5 IRecycleBin5;
+EXTERN_C const IID IID_IRecycleBin5;
+
+typedef struct IRecycleBin5Vtbl
+{
+       /* IRecycleBin interface */
+       HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+               IN IRecycleBin5 *This,
+               IN REFIID riid,
+               OUT void **ppvObject);
+
+       ULONG (STDMETHODCALLTYPE *AddRef)(
+               IN IRecycleBin5 *This);
+
+       ULONG (STDMETHODCALLTYPE *Release)(
+               IN IRecycleBin5 *This);
+
+       HRESULT (STDMETHODCALLTYPE *DeleteFile)(
+               IN IRecycleBin5 *This,
+               IN LPCWSTR szFileName);
+
+       HRESULT (STDMETHODCALLTYPE *EmptyRecycleBin)(
+               IN IRecycleBin5 *This);
+
+       HRESULT (STDMETHODCALLTYPE *EnumObjects)(
+               IN IRecycleBin5 *This,
+               OUT IRecycleBinEnumList **ppEnumList);
+
+       /* IRecycleBin5 interface */
+       HRESULT (STDMETHODCALLTYPE *Delete)(
+               IN IRecycleBin5 *This,
+               IN LPCWSTR pDeletedFileName,
+               IN DELETED_FILE_RECORD *pDeletedFile);
+
+       HRESULT (STDMETHODCALLTYPE *Restore)(
+               IN IRecycleBin5 *This,
+               IN LPCWSTR pDeletedFileName,
+               IN DELETED_FILE_RECORD *pDeletedFile);
+
+       HRESULT (STDMETHODCALLTYPE *OnClosing)(
+               IN IRecycleBin5 *This,
+               IN IRecycleBinEnumList *prbel);
+} IRecycleBin5Vtbl;
+
+interface IRecycleBin5
+{
+       CONST_VTBL struct IRecycleBin5Vtbl *lpVtbl;
+};
+
+#ifdef COBJMACROS
+#define IRecycleBin5_QueryInterface(This, riid, ppvObject) \
+       (This)->lpVtbl->QueryInterface(This, riid, ppvObject)
+#define IRecycleBin5_AddRef(This) \
+       (This)->lpVtbl->AddRef(This)
+#define IRecycleBin5_Release(This) \
+       (This)->lpVtbl->Release(This)
+#define IRecycleBin5_DeleteFile(This, szFileName) \
+       (This)->lpVtbl->DeleteFile(This, szFileName)
+#define IRecycleBin5_EmptyRecycleBin(This) \
+       (This)->lpVtbl->EmptyRecycleBin(This)
+#define IRecycleBin5_EnumObjects(This, ppEnumList) \
+       (This)->lpVtbl->EnumObjects(This, ppEnumList)
+#define IRecycleBin5_Delete(This, pDeletedFileName, pDeletedFile) \
+       (This)->lpVtbl->Delete(This, pDeletedFileName, pDeletedFile)
+#define IRecycleBin5_Restore(This, pDeletedFileName, pDeletedFile) \
+       (This)->lpVtbl->Restore(This, pDeletedFileName, pDeletedFile)
+#define IRecycleBin5_OnClosing(This, prb5el) \
+       (This)->lpVtbl->OnClosing(This, prb5el)
+#endif
+
+HRESULT
+RecycleBin5Enum_Constructor(
+       IN IRecycleBin5 *prb,
+       IN HANDLE hInfo,
+       IN HANDLE hInfoMapped,
+       IN LPCWSTR szPrefix,
+       OUT IUnknown **ppUnknown);
+
+#ifdef __cplusplus
+}
+#endif