1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _INC_MSRDC 7 #define _INC_MSRDC 8 9 #if (_WIN32_WINNT >= 0x0600) 10 11 typedef UINT SimilarityFileIndexT; 12 13 typedef enum _GeneratorParametersType { 14 RDCGENTYPE_Unused = 0, 15 RDCGENTYPE_FilterMax = 1 16 } GeneratorParametersType; 17 18 typedef enum _RdcCreatedTables { 19 RDCTABLE_InvalidOrUnknown = 0, 20 RDCTABLE_Existing = 1, 21 RDCTABLE_New = 2 22 } RdcCreatedTables; 23 24 typedef enum _RdcMappingAccessMode { 25 RDCMAPPING_Undefined = 0, 26 RDCMAPPING_ReadOnly = 1, 27 RDCMAPPING_ReadWrite = 2 28 } RdcMappingAccessMode; 29 30 typedef enum _RDC_ErrorCode { 31 RDC_NoError = 0, 32 RDC_HeaderVersionNewer = 1, 33 RDC_HeaderVersionOlder = 2, 34 RDC_HeaderMissingOrCorrupt = 3, 35 RDC_HeaderWrongType = 4, 36 RDC_DataMissingOrCorrupt = 5, 37 RDC_DataTooManyRecords = 6, 38 RDC_FileChecksumMismatch = 7, 39 RDC_ApplicationError = 8, 40 RDC_Aborted = 9, 41 RDC_Win32Error = 10 42 } RDC_ErrorCode; 43 44 typedef enum _RdcNeedType { 45 RDCNEED_SOURCE = 0, 46 RDCNEED_TARGET = 1, 47 RDCNEED_SEED = 2, 48 RDCNEED_SEED_MAX = 255 49 } RdcNeedType; 50 51 typedef struct _FindSimilarFileIndexResults { 52 SimilarityFileIndexT m_FileIndex; 53 unsigned m_MatchCount; 54 } FindSimilarFileIndexResults; 55 56 typedef struct _RdcBufferPointer { 57 ULONG m_Size; 58 ULONG m_Used; 59 BYTE *m_Data; 60 } RdcBufferPointer; 61 62 typedef struct _RdcNeed { 63 RdcNeedType m_BlockType; 64 unsigned __int64 m_FileOffset; 65 unsigned __int64 m_BlockLength; 66 } RdcNeed; 67 68 typedef struct _RdcNeedPointer { 69 ULONG m_Size; 70 ULONG m_Used; 71 RdcNeed *m_Data; 72 } RdcNeedPointer; 73 74 typedef struct _RdcSignature { 75 BYTE m_Signature[MSRDC_SIGNATURE_HASHSIZE]; 76 USHORT m_BlockLength; 77 } RdcSignature; 78 79 typedef struct _RdcSignaturePointer { 80 ULONG m_Size; 81 ULONG m_Used; 82 RdcSignature *m_Data; 83 } RdcSignaturePointer; 84 85 typedef struct _SimilarityData { 86 unsigned char m_Data[16]; 87 } SimilarityData; 88 89 typedef struct _SimilarityDumpData { 90 SimilarityFileIndexT m_FileIndex; 91 SimilarityData m_Data; 92 } SimilarityDumpData; 93 94 typedef struct _SimilarityFileId { 95 byte m_FileId[SimilarityFileIdMaxSize]; 96 } SimilarityFileId; 97 98 struct SimilarityMappedViewInfo { 99 unsigned char *m_Data; 100 DWORD m_Length; 101 }; 102 103 #undef INTERFACE 104 #define INTERFACE IRdcFileWriter 105 #ifdef __GNUC__ 106 #warning COM interfaces layout in this header has not been verified. 107 #warning COM interfaces with incorrect layout may not work at all. 108 __MINGW_BROKEN_INTERFACE(INTERFACE) 109 #endif 110 DECLARE_INTERFACE_(IRdcFileWriter,IUnknown) 111 { 112 BEGIN_INTERFACE 113 114 /* IUnknown methods */ 115 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 116 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 117 STDMETHOD_(ULONG, Release)(THIS) PURE; 118 119 /* IRdcFileWriter methods */ 120 STDMETHOD_(HRESULT,Write)(THIS_ ULONGLONG offsetFileStart,ULONG bytesToWrite,BYTE *buffer) PURE; 121 STDMETHOD_(HRESULT,Truncate)(THIS) PURE; 122 STDMETHOD_(HRESULT,DeleteOnClose)(THIS) PURE; 123 124 END_INTERFACE 125 }; 126 #ifdef COBJMACROS 127 #define IRdcFileWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 128 #define IRdcFileWriter_AddRef(This) (This)->lpVtbl->AddRef(This) 129 #define IRdcFileWriter_Release(This) (This)->lpVtbl->Release(This) 130 #define IRdcFileWriter_Write(This,offsetFileStart,bytesToWrite,buffer) (This)->lpVtbl->Write(This,offsetFileStart,bytesToWrite,buffer) 131 #define IRdcFileWriter_Truncate() (This)->lpVtbl->Truncate(This) 132 #define IRdcFileWriter_DeleteOnClose() (This)->lpVtbl->DeleteOnClose(This) 133 #endif /*COBJMACROS*/ 134 135 #undef INTERFACE 136 #define INTERFACE ISimilarityFileIdTable 137 #ifdef __GNUC__ 138 #warning COM interfaces layout in this header has not been verified. 139 #warning COM interfaces with incorrect layout may not work at all. 140 __MINGW_BROKEN_INTERFACE(INTERFACE) 141 #endif 142 DECLARE_INTERFACE_(ISimilarityFileIdTable,IUnknown) 143 { 144 BEGIN_INTERFACE 145 146 /* IUnknown methods */ 147 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 148 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 149 STDMETHOD_(ULONG, Release)(THIS) PURE; 150 151 /* ISimilarityFileIdTable methods */ 152 STDMETHOD_(HRESULT,CreateTable)(THIS_ wchar_t *path,WINBOOL truncate,BYTE *securityDescriptor,DWORD recordSize,RdcCreatedTables *isNew) PURE; 153 STDMETHOD_(HRESULT,CreateTableIndirect)(THIS_ IRdcFileWriter *fileIdFile,WINBOOL truncate,DWORD recordSize,RdcCreatedTables *isNew) PURE; 154 STDMETHOD_(HRESULT,CloseTable)(THIS_ WINBOOL isValid) PURE; 155 STDMETHOD_(HRESULT,Append)(THIS_ SimilarityFileId *similarityFileId,SimilarityFileIndexT *similarityFileIndex) PURE; 156 STDMETHOD_(HRESULT,Lookup)(THIS_ SimilarityFileIndexT similarityFileIndex,SimilarityFileId *similarityFileId) PURE; 157 STDMETHOD_(HRESULT,Invalidate)(THIS_ SimilarityFileIndexT similarityFileIndex) PURE; 158 STDMETHOD_(HRESULT,GetRecordCount)(THIS_ DWORD *recordCount) PURE; 159 160 END_INTERFACE 161 }; 162 #ifdef COBJMACROS 163 #define ISimilarityFileIdTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 164 #define ISimilarityFileIdTable_AddRef(This) (This)->lpVtbl->AddRef(This) 165 #define ISimilarityFileIdTable_Release(This) (This)->lpVtbl->Release(This) 166 #define ISimilarityFileIdTable_CreateTable(This,path,truncate,securityDescriptor,recordSize,isNew) (This)->lpVtbl->CreateTable(This,path,truncate,securityDescriptor,recordSize,isNew) 167 #define ISimilarityFileIdTable_CreateTableIndirect(This,fileIdFile,truncate,recordSize,isNew) (This)->lpVtbl->CreateTableIndirect(This,fileIdFile,truncate,recordSize,isNew) 168 #define ISimilarityFileIdTable_CloseTable(This,isValid) (This)->lpVtbl->CloseTable(This,isValid) 169 #define ISimilarityFileIdTable_Append(This,similarityFileId,similarityFileIndex) (This)->lpVtbl->Append(This,similarityFileId,similarityFileIndex) 170 #define ISimilarityFileIdTable_Lookup(This,similarityFileIndex,similarityFileId) (This)->lpVtbl->Lookup(This,similarityFileIndex,similarityFileId) 171 #define ISimilarityFileIdTable_Invalidate(This,similarityFileIndex) (This)->lpVtbl->Invalidate(This,similarityFileIndex) 172 #define ISimilarityFileIdTable_GetRecordCount(This,recordCount) (This)->lpVtbl->GetRecordCount(This,recordCount) 173 #endif /*COBJMACROS*/ 174 175 #undef INTERFACE 176 #define INTERFACE ISimilarityTraitsMappedView 177 #ifdef __GNUC__ 178 #warning COM interfaces layout in this header has not been verified. 179 #warning COM interfaces with incorrect layout may not work at all. 180 __MINGW_BROKEN_INTERFACE(INTERFACE) 181 #endif 182 DECLARE_INTERFACE_(ISimilarityTraitsMappedView,IUnknown) 183 { 184 BEGIN_INTERFACE 185 186 /* IUnknown methods */ 187 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 188 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 189 STDMETHOD_(ULONG, Release)(THIS) PURE; 190 191 /* ISimilarityTraitsMappedView methods */ 192 STDMETHOD_(HRESULT,Flush)(THIS) PURE; 193 STDMETHOD_(HRESULT,Unmap)(THIS) PURE; 194 STDMETHOD_(HRESULT,Get)(THIS_ unsigned __int64 fileOffset,WINBOOL dirty,DWORD numElements,SimilarityMappedViewInfo *viewInfo) PURE; 195 STDMETHOD(GetView)(THIS_ unsigned char const **mappedPageBegin,unsigned char const **mappedPageEnd) PURE; 196 197 END_INTERFACE 198 }; 199 #ifdef COBJMACROS 200 #define ISimilarityTraitsMappedView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 201 #define ISimilarityTraitsMappedView_AddRef(This) (This)->lpVtbl->AddRef(This) 202 #define ISimilarityTraitsMappedView_Release(This) (This)->lpVtbl->Release(This) 203 #define ISimilarityTraitsMappedView_Flush() (This)->lpVtbl->Flush(This) 204 #define ISimilarityTraitsMappedView_Unmap() (This)->lpVtbl->Unmap(This) 205 #define ISimilarityTraitsMappedView_Get(This,fileOffset,dirty,numElements,viewInfo) (This)->lpVtbl->Get(This,fileOffset,dirty,numElements,viewInfo) 206 #define ISimilarityTraitsMappedView_GetView(This,mappedPageBegin,mappedPageEnd) (This)->lpVtbl->GetView(This,mappedPageBegin,mappedPageEnd) 207 #endif /*COBJMACROS*/ 208 209 #undef INTERFACE 210 #define INTERFACE IFindSimilarResults 211 #ifdef __GNUC__ 212 #warning COM interfaces layout in this header has not been verified. 213 #warning COM interfaces with incorrect layout may not work at all. 214 __MINGW_BROKEN_INTERFACE(INTERFACE) 215 #endif 216 DECLARE_INTERFACE_(IFindSimilarResults,IUnknown) 217 { 218 BEGIN_INTERFACE 219 220 /* IUnknown methods */ 221 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 222 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 223 STDMETHOD_(ULONG, Release)(THIS) PURE; 224 225 /* IFindSimilarResults methods */ 226 STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD *size) PURE; 227 STDMETHOD_(HRESULT,GetNextFileId)(THIS_ DWORD *numTraitsMatched,SimilarityFileId *similarityFileId) PURE; 228 229 END_INTERFACE 230 }; 231 #ifdef COBJMACROS 232 #define IFindSimilarResults_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 233 #define IFindSimilarResults_AddRef(This) (This)->lpVtbl->AddRef(This) 234 #define IFindSimilarResults_Release(This) (This)->lpVtbl->Release(This) 235 #define IFindSimilarResults_GetSize(This,size) (This)->lpVtbl->GetSize(This,size) 236 #define IFindSimilarResults_GetNextFileId(This,numTraitsMatched,similarityFileId) (This)->lpVtbl->GetNextFileId(This,numTraitsMatched,similarityFileId) 237 #endif /*COBJMACROS*/ 238 239 #undef INTERFACE 240 #define INTERFACE ISimilarityTraitsMapping 241 #ifdef __GNUC__ 242 #warning COM interfaces layout in this header has not been verified. 243 #warning COM interfaces with incorrect layout may not work at all. 244 __MINGW_BROKEN_INTERFACE(INTERFACE) 245 #endif 246 DECLARE_INTERFACE_(ISimilarityTraitsMapping,IUnknown) 247 { 248 BEGIN_INTERFACE 249 250 /* IUnknown methods */ 251 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 252 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 253 STDMETHOD_(ULONG, Release)(THIS) PURE; 254 255 /* ISimilarityTraitsMapping methods */ 256 STDMETHOD(CloseMapping)(THIS) PURE; 257 STDMETHOD_(HRESULT,SetFileSize)(THIS_ unsigned __int64 *fileSize) PURE; 258 STDMETHOD_(HRESULT,GetFileSize)(THIS_ unsigned __int64 *fileSize) PURE; 259 STDMETHOD_(HRESULT,OpenMapping)(THIS_ RdcMappingAccessMode accessMode,unsigned __int64 begin,unsigned __int64 end,unsigned __int64 *actualEnd) PURE; 260 STDMETHOD_(HRESULT,ResizeMapping)(THIS_ RdcMappingAccessMode accessMode,unsigned __int64 begin,unsigned __int64 end,unsigned __int64 *actualEnd) PURE; 261 STDMETHOD(GetPageSize)(THIS_ DWORD *pageSize) PURE; 262 STDMETHOD_(HRESULT,CreateView)(THIS_ DWORD minimumMappedPages,RdcMappingAccessMode accessMode,ISimilarityTraitsMappedView **mappedView) PURE; 263 264 END_INTERFACE 265 }; 266 #ifdef COBJMACROS 267 #define ISimilarityTraitsMapping_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 268 #define ISimilarityTraitsMapping_AddRef(This) (This)->lpVtbl->AddRef(This) 269 #define ISimilarityTraitsMapping_Release(This) (This)->lpVtbl->Release(This) 270 #define ISimilarityTraitsMapping_CloseMapping() (This)->lpVtbl->CloseMapping(This) 271 #define ISimilarityTraitsMapping_SetFileSize(This,fileSize) (This)->lpVtbl->SetFileSize(This,fileSize) 272 #define ISimilarityTraitsMapping_GetFileSize(This,fileSize) (This)->lpVtbl->GetFileSize(This,fileSize) 273 #define ISimilarityTraitsMapping_OpenMapping(This,accessMode,begin,end,actualEnd) (This)->lpVtbl->OpenMapping(This,accessMode,begin,end,actualEnd) 274 #define ISimilarityTraitsMapping_ResizeMapping(This,accessMode,begin,end,actualEnd) (This)->lpVtbl->ResizeMapping(This,accessMode,begin,end,actualEnd) 275 #define ISimilarityTraitsMapping_GetPageSize(This,pageSize) (This)->lpVtbl->GetPageSize(This,pageSize) 276 #define ISimilarityTraitsMapping_CreateView(This,minimumMappedPages,accessMode,mappedView) (This)->lpVtbl->CreateView(This,minimumMappedPages,accessMode,mappedView) 277 #endif /*COBJMACROS*/ 278 279 #undef INTERFACE 280 #define INTERFACE ISimilarityReportProgress 281 #ifdef __GNUC__ 282 #warning COM interfaces layout in this header has not been verified. 283 #warning COM interfaces with incorrect layout may not work at all. 284 __MINGW_BROKEN_INTERFACE(INTERFACE) 285 #endif 286 DECLARE_INTERFACE_(ISimilarityReportProgress,IUnknown) 287 { 288 BEGIN_INTERFACE 289 290 /* IUnknown methods */ 291 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 292 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 293 STDMETHOD_(ULONG, Release)(THIS) PURE; 294 295 /* ISimilarityReportProgress methods */ 296 STDMETHOD_(HRESULT,ReportProgress)(THIS_ DWORD percentCompleted) PURE; 297 298 END_INTERFACE 299 }; 300 #ifdef COBJMACROS 301 #define ISimilarityReportProgress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 302 #define ISimilarityReportProgress_AddRef(This) (This)->lpVtbl->AddRef(This) 303 #define ISimilarityReportProgress_Release(This) (This)->lpVtbl->Release(This) 304 #define ISimilarityReportProgress_ReportProgress(This,percentCompleted) (This)->lpVtbl->ReportProgress(This,percentCompleted) 305 #endif /*COBJMACROS*/ 306 307 #undef INTERFACE 308 #define INTERFACE ISimilarity 309 #ifdef __GNUC__ 310 #warning COM interfaces layout in this header has not been verified. 311 #warning COM interfaces with incorrect layout may not work at all. 312 __MINGW_BROKEN_INTERFACE(INTERFACE) 313 #endif 314 DECLARE_INTERFACE_(ISimilarity,IUnknown) 315 { 316 BEGIN_INTERFACE 317 318 /* IUnknown methods */ 319 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 320 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 321 STDMETHOD_(ULONG, Release)(THIS) PURE; 322 323 /* ISimilarity methods */ 324 STDMETHOD_(HRESULT,CreateTable)(THIS_ wchar_t *path,WINBOOL truncate,BYTE *securityDescriptor,DWORD recordSize,RdcCreatedTables *isNew) PURE; 325 STDMETHOD_(HRESULT,CreateTableIndirect)(THIS_ ISimilarityTraitsMapping *mapping,IRdcFileWriter *fileIdFile,WINBOOL truncate,DWORD recordSize,RdcCreatedTables *isNew) PURE; 326 STDMETHOD_(HRESULT,CloseTable)(THIS_ WINBOOL isValid) PURE; 327 STDMETHOD_(HRESULT,Append)(THIS_ SimilarityFileId *similarityFileId,SimilarityData *similarityData) PURE; 328 STDMETHOD_(HRESULT,FindSimilarFileId)(THIS_ SimilarityData *similarityData,DWORD resultsSize,IFindSimilarResults **findSimilarResults) PURE; 329 STDMETHOD_(HRESULT,CopyAndSwap)(THIS_ ISimilarityReportProgress *reportProgress) PURE; 330 STDMETHOD_(HRESULT,GetRecordCount)(THIS_ DWORD *recordCount) PURE; 331 332 END_INTERFACE 333 }; 334 #ifdef COBJMACROS 335 #define ISimilarity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 336 #define ISimilarity_AddRef(This) (This)->lpVtbl->AddRef(This) 337 #define ISimilarity_Release(This) (This)->lpVtbl->Release(This) 338 #define ISimilarity_CreateTable(This,path,truncate,securityDescriptor,recordSize,isNew) (This)->lpVtbl->CreateTable(This,path,truncate,securityDescriptor,recordSize,isNew) 339 #define ISimilarity_CreateTableIndirect(This,mapping,fileIdFile,truncate,recordSize,isNew) (This)->lpVtbl->CreateTableIndirect(This,mapping,fileIdFile,truncate,recordSize,isNew) 340 #define ISimilarity_CloseTable(This,isValid) (This)->lpVtbl->CloseTable(This,isValid) 341 #define ISimilarity_Append(This,similarityFileId,similarityData) (This)->lpVtbl->Append(This,similarityFileId,similarityData) 342 #define ISimilarity_FindSimilarFileId(This,similarityData,resultsSize,findSimilarResults) (This)->lpVtbl->FindSimilarFileId(This,similarityData,resultsSize,findSimilarResults) 343 #define ISimilarity_CopyAndSwap(This,reportProgress) (This)->lpVtbl->CopyAndSwap(This,reportProgress) 344 #define ISimilarity_GetRecordCount(This,recordCount) (This)->lpVtbl->GetRecordCount(This,recordCount) 345 #endif /*COBJMACROS*/ 346 347 #endif /*(_WIN32_WINNT >= 0x0600)*/ 348 349 #endif /* _INC_MSRDC */ 350 351