blob: 36ec15d7d021f9f98483c5ec0f26d775924892b1 [file] [log] [blame]
/**
* 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 */