ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

recyclebin.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #ifdef __cplusplus
00004 extern "C" {
00005 #endif
00006 
00007 #include <windows.h>
00008 #include <objbase.h>
00009 #define ANY_SIZE 1
00010 
00011 /* Structures used by the API Interface */
00012 
00013 typedef struct _DELETED_FILE_DETAILS_A
00014 {
00015     FILETIME      LastModification;
00016     FILETIME      DeletionTime;
00017     ULARGE_INTEGER FileSize;
00018     ULARGE_INTEGER PhysicalFileSize;
00019     DWORD         Attributes;
00020     CHAR          FileName[ANY_SIZE];
00021 } DELETED_FILE_DETAILS_A, *PDELETED_FILE_DETAILS_A;
00022 typedef struct _DELETED_FILE_DETAILS_W
00023 {
00024     FILETIME      LastModification;
00025     FILETIME      DeletionTime;
00026     ULARGE_INTEGER FileSize;
00027     ULARGE_INTEGER PhysicalFileSize;
00028     DWORD         Attributes;
00029     WCHAR         FileName[ANY_SIZE];
00030 } DELETED_FILE_DETAILS_W, *PDELETED_FILE_DETAILS_W;
00031 #ifdef UNICODE
00032 #define DELETED_FILE_DETAILS  DELETED_FILE_DETAILS_W
00033 #define PDELETED_FILE_DETAILS PDELETED_FILE_DETAILS_W
00034 #else
00035 #define DELETED_FILE_DETAILS  DELETED_FILE_DETAILS_A
00036 #define PDELETED_FILE_DETAILS PDELETED_FILE_DETAILS_A
00037 #endif
00038 
00039 /* API Interface */
00040 
00041 /* Function called for each deleted file in the recycle bin
00042  * Context: value given by the caller of the EnumerateRecycleBin function
00043  * hDeletedFile: a handle to the deleted file
00044  * Returning FALSE stops the enumeration.
00045  * Remarks: the handle must be closed with the CloseRecycleBinHandle function
00046  */
00047 typedef BOOL (WINAPI *PENUMERATE_RECYCLEBIN_CALLBACK)(IN PVOID Context, IN HANDLE hDeletedFile);
00048 
00049 /* Closes a file deleted handle.
00050  * hDeletedFile: the handle to close
00051  * Returns TRUE if operation succeeded, FALSE otherwise.
00052  * Remark: The handle is obtained in the PENUMERATE_RECYCLEBIN_CALLBACK callback
00053  */
00054 BOOL WINAPI
00055 CloseRecycleBinHandle(
00056     IN HANDLE hDeletedFile);
00057 
00058 /* Moves a file to the recycle bin.
00059  * FileName: the name of the file to move the recycle bin
00060  * Returns TRUE if operation succeeded, FALSE otherwise.
00061  */
00062 BOOL WINAPI
00063 DeleteFileToRecycleBinA(
00064     IN LPCSTR FileName);
00065 BOOL WINAPI
00066 DeleteFileToRecycleBinW(
00067     IN LPCWSTR FileName);
00068 #ifdef UNICODE
00069 #define DeleteFileToRecycleBin DeleteFileToRecycleBinW
00070 #else
00071 #define DeleteFileToRecycleBin DeleteFileToRecycleBinA
00072 #endif
00073 
00074 /* Moves a file to the recycle bin.
00075  * hDeletedFile: handle of the deleted file to delete
00076  * Returns TRUE if operation succeeded, FALSE otherwise.
00077  * Remark: The handle is obtained in the PENUMERATE_RECYCLEBIN_CALLBACK callback
00078  */
00079 BOOL WINAPI
00080 DeleteFileHandleToRecycleBin(
00081     IN HANDLE hDeletedFile);
00082 
00083 /* Removes all elements contained in a recycle bin
00084  * pszRoot: the name of the drive containing the recycle bin
00085  * Returns TRUE if operation succeeded, FALSE otherwise.
00086  * Remarks: 'pszRoot' can be NULL to mean 'all recycle bins'.
00087  */
00088 BOOL WINAPI
00089 EmptyRecycleBinA(
00090     IN LPCSTR pszRoot OPTIONAL);
00091 BOOL WINAPI
00092 EmptyRecycleBinW(
00093     IN LPCWSTR pszRoot OPTIONAL);
00094 #ifdef UNICODE
00095 #define EmptyRecycleBin EmptyRecycleBinW
00096 #else
00097 #define EmptyRecycleBin EmptyRecycleBinA
00098 #endif
00099 
00100 /* Enumerate contents of a recycle bin.
00101  * pszRoot: the name of the drive containing the recycle bin
00102  * pFnCallback: callback function to be called for each deleted item found
00103  * Context: some value which will be given back in the callback function
00104  * Returns TRUE if operation succeeded, FALSE otherwise.
00105  * Remarks: 'pszRoot' can be NULL to mean 'all recycle bins'.
00106  */
00107 BOOL WINAPI
00108 EnumerateRecycleBinA(
00109     IN LPCSTR pszRoot OPTIONAL,
00110     IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback,
00111     IN PVOID Context OPTIONAL);
00112 BOOL WINAPI
00113 EnumerateRecycleBinW(
00114     IN LPCWSTR pszRoot OPTIONAL,
00115     IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback,
00116     IN PVOID Context OPTIONAL);
00117 #ifdef UNICODE
00118 #define EnumerateRecycleBin EnumerateRecycleBinW
00119 #else
00120 #define EnumerateRecycleBin EnumerateRecycleBinA
00121 #endif
00122 
00123 /* Gets details about a deleted file
00124  * hDeletedFile: handle of the deleted file to get details about
00125  * BufferSize: size of the 'FileDetails' buffer, in bytes
00126  * FileDetails: if the function succeeded, contains details about the deleted file
00127  * RequiredSize: contains the minimal buffer size required to get file information details
00128  * Returns TRUE if operation succeeded, FALSE otherwise.
00129  * Remark: The handle is obtained in the PENUMERATE_RECYCLEBIN_CALLBACK callback
00130  */
00131 BOOL WINAPI
00132 GetDeletedFileDetailsA(
00133     IN HANDLE hDeletedFile,
00134     IN DWORD BufferSize,
00135     IN OUT PDELETED_FILE_DETAILS_A FileDetails OPTIONAL,
00136     OUT LPDWORD RequiredSize OPTIONAL);
00137 BOOL WINAPI
00138 GetDeletedFileDetailsW(
00139     IN HANDLE hDeletedFile,
00140     IN DWORD BufferSize,
00141     IN OUT PDELETED_FILE_DETAILS_W FileDetails OPTIONAL,
00142     OUT LPDWORD RequiredSize OPTIONAL);
00143 #ifdef UNICODE
00144 #define GetDeletedFileDetails GetDeletedFileDetailsW
00145 #else
00146 #define GetDeletedFileDetails GetDeletedFileDetailsA
00147 #endif
00148 
00149 /* Get details about a whole recycle bin
00150  * pszVolume:
00151  * pulTotalItems:
00152  * pulTotalSize
00153  */
00154 BOOL WINAPI
00155 GetRecycleBinDetails(
00156     IN LPCWSTR pszVolume OPTIONAL,
00157     OUT ULARGE_INTEGER *pulTotalItems,
00158     OUT ULARGE_INTEGER *pulTotalSize);
00159 
00160 /* Restores a deleted file
00161  * hDeletedFile: handle of the deleted file to restore
00162  * Returns TRUE if operation succeeded, FALSE otherwise.
00163  * Remarks: if the function succeeds, the handle is not valid anymore.
00164  */
00165 BOOL WINAPI
00166 RestoreFile(
00167     IN HANDLE hDeletedFile);
00168 
00169 /* COM interface */
00170 
00171 #undef INTERFACE
00172 #define INTERFACE IRecycleBinFile
00173 
00174 DECLARE_INTERFACE_(IRecycleBinFile, IUnknown)
00175 {
00176     BEGIN_INTERFACE
00177 
00178     /* IUnknown methods */
00179     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
00180     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
00181     STDMETHOD_(ULONG, Release)(THIS) PURE;
00182 
00183     /* IRecycleBinFile methods */
00184     STDMETHOD(GetLastModificationTime)(THIS_ FILETIME *pLastModificationTime) PURE;
00185     STDMETHOD(GetDeletionTime)(THIS_ FILETIME *pDeletionTime) PURE;
00186     STDMETHOD(GetFileSize)(THIS_ ULARGE_INTEGER *pFileSize) PURE;
00187     STDMETHOD(GetPhysicalFileSize)(THIS_ ULARGE_INTEGER *pPhysicalFileSize) PURE;
00188     STDMETHOD(GetAttributes)(THIS_ DWORD *pAttributes) PURE;
00189     STDMETHOD(GetFileName)(THIS_ SIZE_T BufferSize, LPWSTR Buffer, SIZE_T *RequiredSize) PURE;
00190     STDMETHOD(Delete)(THIS) PURE;
00191     STDMETHOD(Restore)(THIS) PURE;
00192 
00193     END_INTERFACE
00194 };
00195 
00196 #undef INTERFACE
00197 #define INTERFACE IRecycleBinEnumList
00198 
00199 DECLARE_INTERFACE_(IRecycleBinEnumList, IUnknown)
00200 {
00201     BEGIN_INTERFACE
00202 
00203     /* IUnknown methods */
00204     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
00205     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
00206     STDMETHOD_(ULONG, Release)(THIS) PURE;
00207 
00208     /* IRecycleBinEnumList methods */
00209     STDMETHOD(Next)(THIS_ DWORD celt, IRecycleBinFile **rgelt, DWORD *pceltFetched);
00210     STDMETHOD(Skip)(THIS_ DWORD celt) PURE;
00211     STDMETHOD(Reset)(THIS) PURE;
00212 
00213     END_INTERFACE
00214 };
00215 
00216 #undef INTERFACE
00217 #define INTERFACE IRecycleBin
00218 
00219 DECLARE_INTERFACE_(IRecycleBin, IUnknown)
00220 {
00221     BEGIN_INTERFACE
00222 
00223     /* IUnknown methods */
00224     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
00225     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
00226     STDMETHOD_(ULONG, Release)(THIS) PURE;
00227 
00228     /* IRecycleBin methods */
00229     STDMETHOD(DeleteFile)(THIS_ LPCWSTR szFileName);
00230     STDMETHOD(EmptyRecycleBin)(THIS);
00231     STDMETHOD(EnumObjects)(THIS_ IRecycleBinEnumList **ppEnumList);
00232 
00233     END_INTERFACE
00234 };
00235 
00236 EXTERN_C const IID IID_IRecycleBinFile;
00237 EXTERN_C const IID IID_IRecycleBinEnumList;
00238 EXTERN_C const IID IID_IRecycleBin;
00239 
00240 #if (!defined(__cplusplus) || defined(CINTERFACE)) && defined(COBJMACROS)
00241 #define IRecycleBinFile_QueryInterface(This, riid, ppvObject) \
00242     (This)->lpVtbl->QueryInterface(This, riid, ppvObject)
00243 #define IRecycleBinFile_AddRef(This) \
00244     (This)->lpVtbl->AddRef(This)
00245 #define IRecycleBinFile_Release(This) \
00246     (This)->lpVtbl->Release(This)
00247 #define IRecycleBinFile_GetLastModificationTime(This, pLastModificationTime) \
00248     (This)->lpVtbl->GetLastModificationTime(This, pLastModificationTime)
00249 #define IRecycleBinFile_GetDeletionTime(This, pDeletionTime) \
00250     (This)->lpVtbl->GetDeletionTime(This, pDeletionTime)
00251 #define IRecycleBinFile_GetFileSize(This, pFileSize) \
00252     (This)->lpVtbl->GetFileSize(This, pFileSize)
00253 #define IRecycleBinFile_GetPhysicalFileSize(This, pPhysicalFileSize) \
00254     (This)->lpVtbl->GetPhysicalFileSize(This, pPhysicalFileSize)
00255 #define IRecycleBinFile_GetAttributes(This, pAttributes) \
00256     (This)->lpVtbl->GetAttributes(This, pAttributes)
00257 #define IRecycleBinFile_GetFileName(This, BufferSize, Buffer, RequiredSize) \
00258     (This)->lpVtbl->GetFileName(This, BufferSize, Buffer, RequiredSize)
00259 #define IRecycleBinFile_Delete(This) \
00260     (This)->lpVtbl->Delete(This)
00261 #define IRecycleBinFile_Restore(This) \
00262     (This)->lpVtbl->Restore(This)
00263 
00264 #define IRecycleBinEnumList_QueryInterface(This, riid, ppvObject) \
00265     (This)->lpVtbl->QueryInterface(This, riid, ppvObject)
00266 #define IRecycleBinEnumList_AddRef(This) \
00267     (This)->lpVtbl->AddRef(This)
00268 #define IRecycleBinEnumList_Release(This) \
00269     (This)->lpVtbl->Release(This)
00270 #define IRecycleBinEnumList_Next(This, celt, rgelt, pceltFetched) \
00271     (This)->lpVtbl->Next(This, celt, rgelt, pceltFetched)
00272 #define IRecycleBinEnumList_Skip(This, celt) \
00273     (This)->lpVtbl->Skip(This, celt)
00274 #define IRecycleBinEnumList_Reset(This) \
00275     (This)->lpVtbl->Reset(This)
00276 
00277 #define IRecycleBin_QueryInterface(This, riid, ppvObject) \
00278     (This)->lpVtbl->QueryInterface(This, riid, ppvObject)
00279 #define IRecycleBin_AddRef(This) \
00280     (This)->lpVtbl->AddRef(This)
00281 #define IRecycleBin_Release(This) \
00282     (This)->lpVtbl->Release(This)
00283 #define IRecycleBin_DeleteFile(This, szFileName) \
00284     (This)->lpVtbl->DeleteFile(This, szFileName)
00285 #define IRecycleBin_EmptyRecycleBin(This) \
00286     (This)->lpVtbl->EmptyRecycleBin(This)
00287 #define IRecycleBin_EnumObjects(This, ppEnumList) \
00288     (This)->lpVtbl->EnumObjects(This, ppEnumList)
00289 #endif
00290 
00291 HRESULT WINAPI
00292 GetDefaultRecycleBin(
00293     IN LPCWSTR pszVolume OPTIONAL,
00294     OUT IRecycleBin **pprb);
00295 
00296 #ifdef __cplusplus
00297 }
00298 #endif

Generated on Sun May 27 2012 04:26:23 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.