mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 04:25:08 +00:00
350 lines
15 KiB
C
350 lines
15 KiB
C
/**
|
|
* 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 */
|
|
|