Home | History | Annotate | Download | only in include
      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