/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #ifndef _INC_MSRDC #define _INC_MSRDC #if (_WIN32_WINNT >= 0x0600) typedef UINT SimilarityFileIndexT; typedef enum _GeneratorParametersType { RDCGENTYPE_Unused = 0, RDCGENTYPE_FilterMax = 1 } GeneratorParametersType; typedef enum _RdcCreatedTables { RDCTABLE_InvalidOrUnknown = 0, RDCTABLE_Existing = 1, RDCTABLE_New = 2 } RdcCreatedTables; typedef enum _RdcMappingAccessMode { RDCMAPPING_Undefined = 0, RDCMAPPING_ReadOnly = 1, RDCMAPPING_ReadWrite = 2 } RdcMappingAccessMode; typedef enum _RDC_ErrorCode { RDC_NoError = 0, RDC_HeaderVersionNewer = 1, RDC_HeaderVersionOlder = 2, RDC_HeaderMissingOrCorrupt = 3, RDC_HeaderWrongType = 4, RDC_DataMissingOrCorrupt = 5, RDC_DataTooManyRecords = 6, RDC_FileChecksumMismatch = 7, RDC_ApplicationError = 8, RDC_Aborted = 9, RDC_Win32Error = 10 } RDC_ErrorCode; typedef enum _RdcNeedType { RDCNEED_SOURCE = 0, RDCNEED_TARGET = 1, RDCNEED_SEED = 2, RDCNEED_SEED_MAX = 255 } RdcNeedType; typedef struct _FindSimilarFileIndexResults { SimilarityFileIndexT m_FileIndex; unsigned m_MatchCount; } FindSimilarFileIndexResults; typedef struct _RdcBufferPointer { ULONG m_Size; ULONG m_Used; BYTE *m_Data; } RdcBufferPointer; typedef struct _RdcNeed { RdcNeedType m_BlockType; unsigned __int64 m_FileOffset; unsigned __int64 m_BlockLength; } RdcNeed; typedef struct _RdcNeedPointer { ULONG m_Size; ULONG m_Used; RdcNeed *m_Data; } RdcNeedPointer; typedef struct _RdcSignature { BYTE m_Signature[MSRDC_SIGNATURE_HASHSIZE]; USHORT m_BlockLength; } RdcSignature; typedef struct _RdcSignaturePointer { ULONG m_Size; ULONG m_Used; RdcSignature *m_Data; } RdcSignaturePointer; typedef struct _SimilarityData { unsigned char m_Data[16]; } SimilarityData; typedef struct _SimilarityDumpData { SimilarityFileIndexT m_FileIndex; SimilarityData m_Data; } SimilarityDumpData; typedef struct _SimilarityFileId { byte m_FileId[SimilarityFileIdMaxSize]; } SimilarityFileId; struct SimilarityMappedViewInfo { unsigned char *m_Data; DWORD m_Length; }; #undef INTERFACE #define INTERFACE IRdcFileWriter #ifdef __GNUC__ #warning COM interfaces layout in this header has not been verified. #warning COM interfaces with incorrect layout may not work at all. __MINGW_BROKEN_INTERFACE(INTERFACE) #endif DECLARE_INTERFACE_(IRdcFileWriter,IUnknown) { BEGIN_INTERFACE /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; STDMETHOD_(ULONG, AddRef)(THIS) PURE; STDMETHOD_(ULONG, Release)(THIS) PURE; /* IRdcFileWriter methods */ STDMETHOD_(HRESULT,Write)(THIS_ ULONGLONG offsetFileStart,ULONG bytesToWrite,BYTE *buffer) PURE; STDMETHOD_(HRESULT,Truncate)(THIS) PURE; STDMETHOD_(HRESULT,DeleteOnClose)(THIS) PURE; END_INTERFACE }; #ifdef COBJMACROS #define IRdcFileWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define IRdcFileWriter_AddRef(This) (This)->lpVtbl->AddRef(This) #define IRdcFileWriter_Release(This) (This)->lpVtbl->Release(This) #define IRdcFileWriter_Write(This,offsetFileStart,bytesToWrite,buffer) (This)->lpVtbl->Write(This,offsetFileStart,bytesToWrite,buffer) #define IRdcFileWriter_Truncate() (This)->lpVtbl->Truncate(This) #define IRdcFileWriter_DeleteOnClose() (This)->lpVtbl->DeleteOnClose(This) #endif /*COBJMACROS*/ #undef INTERFACE #define INTERFACE ISimilarityFileIdTable #ifdef __GNUC__ #warning COM interfaces layout in this header has not been verified. #warning COM interfaces with incorrect layout may not work at all. __MINGW_BROKEN_INTERFACE(INTERFACE) #endif DECLARE_INTERFACE_(ISimilarityFileIdTable,IUnknown) { BEGIN_INTERFACE /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; STDMETHOD_(ULONG, AddRef)(THIS) PURE; STDMETHOD_(ULONG, Release)(THIS) PURE; /* ISimilarityFileIdTable methods */ STDMETHOD_(HRESULT,CreateTable)(THIS_ wchar_t *path,WINBOOL truncate,BYTE *securityDescriptor,DWORD recordSize,RdcCreatedTables *isNew) PURE; STDMETHOD_(HRESULT,CreateTableIndirect)(THIS_ IRdcFileWriter *fileIdFile,WINBOOL truncate,DWORD recordSize,RdcCreatedTables *isNew) PURE; STDMETHOD_(HRESULT,CloseTable)(THIS_ WINBOOL isValid) PURE; STDMETHOD_(HRESULT,Append)(THIS_ SimilarityFileId *similarityFileId,SimilarityFileIndexT *similarityFileIndex) PURE; STDMETHOD_(HRESULT,Lookup)(THIS_ SimilarityFileIndexT similarityFileIndex,SimilarityFileId *similarityFileId) PURE; STDMETHOD_(HRESULT,Invalidate)(THIS_ SimilarityFileIndexT similarityFileIndex) PURE; STDMETHOD_(HRESULT,GetRecordCount)(THIS_ DWORD *recordCount) PURE; END_INTERFACE }; #ifdef COBJMACROS #define ISimilarityFileIdTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define ISimilarityFileIdTable_AddRef(This) (This)->lpVtbl->AddRef(This) #define ISimilarityFileIdTable_Release(This) (This)->lpVtbl->Release(This) #define ISimilarityFileIdTable_CreateTable(This,path,truncate,securityDescriptor,recordSize,isNew) (This)->lpVtbl->CreateTable(This,path,truncate,securityDescriptor,recordSize,isNew) #define ISimilarityFileIdTable_CreateTableIndirect(This,fileIdFile,truncate,recordSize,isNew) (This)->lpVtbl->CreateTableIndirect(This,fileIdFile,truncate,recordSize,isNew) #define ISimilarityFileIdTable_CloseTable(This,isValid) (This)->lpVtbl->CloseTable(This,isValid) #define ISimilarityFileIdTable_Append(This,similarityFileId,similarityFileIndex) (This)->lpVtbl->Append(This,similarityFileId,similarityFileIndex) #define ISimilarityFileIdTable_Lookup(This,similarityFileIndex,similarityFileId) (This)->lpVtbl->Lookup(This,similarityFileIndex,similarityFileId) #define ISimilarityFileIdTable_Invalidate(This,similarityFileIndex) (This)->lpVtbl->Invalidate(This,similarityFileIndex) #define ISimilarityFileIdTable_GetRecordCount(This,recordCount) (This)->lpVtbl->GetRecordCount(This,recordCount) #endif /*COBJMACROS*/ #undef INTERFACE #define INTERFACE ISimilarityTraitsMappedView #ifdef __GNUC__ #warning COM interfaces layout in this header has not been verified. #warning COM interfaces with incorrect layout may not work at all. __MINGW_BROKEN_INTERFACE(INTERFACE) #endif DECLARE_INTERFACE_(ISimilarityTraitsMappedView,IUnknown) { BEGIN_INTERFACE /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; STDMETHOD_(ULONG, AddRef)(THIS) PURE; STDMETHOD_(ULONG, Release)(THIS) PURE; /* ISimilarityTraitsMappedView methods */ STDMETHOD_(HRESULT,Flush)(THIS) PURE; STDMETHOD_(HRESULT,Unmap)(THIS) PURE; STDMETHOD_(HRESULT,Get)(THIS_ unsigned __int64 fileOffset,WINBOOL dirty,DWORD numElements,SimilarityMappedViewInfo *viewInfo) PURE; STDMETHOD(GetView)(THIS_ unsigned char const **mappedPageBegin,unsigned char const **mappedPageEnd) PURE; END_INTERFACE }; #ifdef COBJMACROS #define ISimilarityTraitsMappedView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define ISimilarityTraitsMappedView_AddRef(This) (This)->lpVtbl->AddRef(This) #define ISimilarityTraitsMappedView_Release(This) (This)->lpVtbl->Release(This) #define ISimilarityTraitsMappedView_Flush() (This)->lpVtbl->Flush(This) #define ISimilarityTraitsMappedView_Unmap() (This)->lpVtbl->Unmap(This) #define ISimilarityTraitsMappedView_Get(This,fileOffset,dirty,numElements,viewInfo) (This)->lpVtbl->Get(This,fileOffset,dirty,numElements,viewInfo) #define ISimilarityTraitsMappedView_GetView(This,mappedPageBegin,mappedPageEnd) (This)->lpVtbl->GetView(This,mappedPageBegin,mappedPageEnd) #endif /*COBJMACROS*/ #undef INTERFACE #define INTERFACE IFindSimilarResults #ifdef __GNUC__ #warning COM interfaces layout in this header has not been verified. #warning COM interfaces with incorrect layout may not work at all. __MINGW_BROKEN_INTERFACE(INTERFACE) #endif DECLARE_INTERFACE_(IFindSimilarResults,IUnknown) { BEGIN_INTERFACE /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; STDMETHOD_(ULONG, AddRef)(THIS) PURE; STDMETHOD_(ULONG, Release)(THIS) PURE; /* IFindSimilarResults methods */ STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD *size) PURE; STDMETHOD_(HRESULT,GetNextFileId)(THIS_ DWORD *numTraitsMatched,SimilarityFileId *similarityFileId) PURE; END_INTERFACE }; #ifdef COBJMACROS #define IFindSimilarResults_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define IFindSimilarResults_AddRef(This) (This)->lpVtbl->AddRef(This) #define IFindSimilarResults_Release(This) (This)->lpVtbl->Release(This) #define IFindSimilarResults_GetSize(This,size) (This)->lpVtbl->GetSize(This,size) #define IFindSimilarResults_GetNextFileId(This,numTraitsMatched,similarityFileId) (This)->lpVtbl->GetNextFileId(This,numTraitsMatched,similarityFileId) #endif /*COBJMACROS*/ #undef INTERFACE #define INTERFACE ISimilarityTraitsMapping #ifdef __GNUC__ #warning COM interfaces layout in this header has not been verified. #warning COM interfaces with incorrect layout may not work at all. __MINGW_BROKEN_INTERFACE(INTERFACE) #endif DECLARE_INTERFACE_(ISimilarityTraitsMapping,IUnknown) { BEGIN_INTERFACE /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; STDMETHOD_(ULONG, AddRef)(THIS) PURE; STDMETHOD_(ULONG, Release)(THIS) PURE; /* ISimilarityTraitsMapping methods */ STDMETHOD(CloseMapping)(THIS) PURE; STDMETHOD_(HRESULT,SetFileSize)(THIS_ unsigned __int64 *fileSize) PURE; STDMETHOD_(HRESULT,GetFileSize)(THIS_ unsigned __int64 *fileSize) PURE; STDMETHOD_(HRESULT,OpenMapping)(THIS_ RdcMappingAccessMode accessMode,unsigned __int64 begin,unsigned __int64 end,unsigned __int64 *actualEnd) PURE; STDMETHOD_(HRESULT,ResizeMapping)(THIS_ RdcMappingAccessMode accessMode,unsigned __int64 begin,unsigned __int64 end,unsigned __int64 *actualEnd) PURE; STDMETHOD(GetPageSize)(THIS_ DWORD *pageSize) PURE; STDMETHOD_(HRESULT,CreateView)(THIS_ DWORD minimumMappedPages,RdcMappingAccessMode accessMode,ISimilarityTraitsMappedView **mappedView) PURE; END_INTERFACE }; #ifdef COBJMACROS #define ISimilarityTraitsMapping_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define ISimilarityTraitsMapping_AddRef(This) (This)->lpVtbl->AddRef(This) #define ISimilarityTraitsMapping_Release(This) (This)->lpVtbl->Release(This) #define ISimilarityTraitsMapping_CloseMapping() (This)->lpVtbl->CloseMapping(This) #define ISimilarityTraitsMapping_SetFileSize(This,fileSize) (This)->lpVtbl->SetFileSize(This,fileSize) #define ISimilarityTraitsMapping_GetFileSize(This,fileSize) (This)->lpVtbl->GetFileSize(This,fileSize) #define ISimilarityTraitsMapping_OpenMapping(This,accessMode,begin,end,actualEnd) (This)->lpVtbl->OpenMapping(This,accessMode,begin,end,actualEnd) #define ISimilarityTraitsMapping_ResizeMapping(This,accessMode,begin,end,actualEnd) (This)->lpVtbl->ResizeMapping(This,accessMode,begin,end,actualEnd) #define ISimilarityTraitsMapping_GetPageSize(This,pageSize) (This)->lpVtbl->GetPageSize(This,pageSize) #define ISimilarityTraitsMapping_CreateView(This,minimumMappedPages,accessMode,mappedView) (This)->lpVtbl->CreateView(This,minimumMappedPages,accessMode,mappedView) #endif /*COBJMACROS*/ #undef INTERFACE #define INTERFACE ISimilarityReportProgress #ifdef __GNUC__ #warning COM interfaces layout in this header has not been verified. #warning COM interfaces with incorrect layout may not work at all. __MINGW_BROKEN_INTERFACE(INTERFACE) #endif DECLARE_INTERFACE_(ISimilarityReportProgress,IUnknown) { BEGIN_INTERFACE /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; STDMETHOD_(ULONG, AddRef)(THIS) PURE; STDMETHOD_(ULONG, Release)(THIS) PURE; /* ISimilarityReportProgress methods */ STDMETHOD_(HRESULT,ReportProgress)(THIS_ DWORD percentCompleted) PURE; END_INTERFACE }; #ifdef COBJMACROS #define ISimilarityReportProgress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define ISimilarityReportProgress_AddRef(This) (This)->lpVtbl->AddRef(This) #define ISimilarityReportProgress_Release(This) (This)->lpVtbl->Release(This) #define ISimilarityReportProgress_ReportProgress(This,percentCompleted) (This)->lpVtbl->ReportProgress(This,percentCompleted) #endif /*COBJMACROS*/ #undef INTERFACE #define INTERFACE ISimilarity #ifdef __GNUC__ #warning COM interfaces layout in this header has not been verified. #warning COM interfaces with incorrect layout may not work at all. __MINGW_BROKEN_INTERFACE(INTERFACE) #endif DECLARE_INTERFACE_(ISimilarity,IUnknown) { BEGIN_INTERFACE /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; STDMETHOD_(ULONG, AddRef)(THIS) PURE; STDMETHOD_(ULONG, Release)(THIS) PURE; /* ISimilarity methods */ STDMETHOD_(HRESULT,CreateTable)(THIS_ wchar_t *path,WINBOOL truncate,BYTE *securityDescriptor,DWORD recordSize,RdcCreatedTables *isNew) PURE; STDMETHOD_(HRESULT,CreateTableIndirect)(THIS_ ISimilarityTraitsMapping *mapping,IRdcFileWriter *fileIdFile,WINBOOL truncate,DWORD recordSize,RdcCreatedTables *isNew) PURE; STDMETHOD_(HRESULT,CloseTable)(THIS_ WINBOOL isValid) PURE; STDMETHOD_(HRESULT,Append)(THIS_ SimilarityFileId *similarityFileId,SimilarityData *similarityData) PURE; STDMETHOD_(HRESULT,FindSimilarFileId)(THIS_ SimilarityData *similarityData,DWORD resultsSize,IFindSimilarResults **findSimilarResults) PURE; STDMETHOD_(HRESULT,CopyAndSwap)(THIS_ ISimilarityReportProgress *reportProgress) PURE; STDMETHOD_(HRESULT,GetRecordCount)(THIS_ DWORD *recordCount) PURE; END_INTERFACE }; #ifdef COBJMACROS #define ISimilarity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define ISimilarity_AddRef(This) (This)->lpVtbl->AddRef(This) #define ISimilarity_Release(This) (This)->lpVtbl->Release(This) #define ISimilarity_CreateTable(This,path,truncate,securityDescriptor,recordSize,isNew) (This)->lpVtbl->CreateTable(This,path,truncate,securityDescriptor,recordSize,isNew) #define ISimilarity_CreateTableIndirect(This,mapping,fileIdFile,truncate,recordSize,isNew) (This)->lpVtbl->CreateTableIndirect(This,mapping,fileIdFile,truncate,recordSize,isNew) #define ISimilarity_CloseTable(This,isValid) (This)->lpVtbl->CloseTable(This,isValid) #define ISimilarity_Append(This,similarityFileId,similarityData) (This)->lpVtbl->Append(This,similarityFileId,similarityData) #define ISimilarity_FindSimilarFileId(This,similarityData,resultsSize,findSimilarResults) (This)->lpVtbl->FindSimilarFileId(This,similarityData,resultsSize,findSimilarResults) #define ISimilarity_CopyAndSwap(This,reportProgress) (This)->lpVtbl->CopyAndSwap(This,reportProgress) #define ISimilarity_GetRecordCount(This,recordCount) (This)->lpVtbl->GetRecordCount(This,recordCount) #endif /*COBJMACROS*/ #endif /*(_WIN32_WINNT >= 0x0600)*/ #endif /* _INC_MSRDC */