| /** |
| * 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 */ |
| |