Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenrecyclebin.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
1.7.6.1
|