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 __WINSYNC_H__
7#define __WINSYNC_H__
8#include <objbase.h>
9
10#if (_WIN32_WINNT >= 0x0601)
11
12typedef enum _CONFLICT_RESOLUTION_POLICY {
13  CRP_NONE = 0,
14  CRP_DESTINATION_PROVIDER_WINS,
15  CRP_SOURCE_PROVIDER_WINS,
16  CRP_LAST
17} CONFLICT_RESOLUTION_POLICY;
18
19typedef enum _FILTERING_TYPE {
20  FT_CURRENT_ITEMS_ONLY = 0
21} FILTERING_TYPE;
22
23typedef enum _KNOWLEDGE_COOKIE_COMPARISON_RESULT {
24  KCCR_COOKIE_KNOWLEDGE_EQUAL = 0,
25  KCCR_COOKIE_KNOWLEDGE_CONTAINED,
26  KCCR_COOKIE_KNOWLEDGE_CONTAINS,
27  KCCR_COOKIE_KNOWLEDGE_NOT_COMPARABLE
28} KNOWLEDGE_COOKIE_COMPARISON_RESULT;
29
30typedef enum _SYNC_FULL_ENUMERATION_ACTION {
31  SFEA_FULL_ENUMERATION = 0,
32  SFEA_PARTIAL_SYNC,
33  SFEA_ABORT
34} SYNC_FULL_ENUMERATION_ACTION;
35
36typedef enum _SYNC_PROGRESS_STAGE {
37  SPS_CHANGE_DETECTION = 0,
38  SPS_CHANGE_ENUMERATION,
39  SPS_CHANGE_APPLICATION
40} SYNC_PROGRESS_STAGE;
41
42typedef enum _SYNC_PROVIDER_ROLE {
43  SPR_SOURCE = 0,
44  SPR_DESTINATION
45} SYNC_PROVIDER_ROLE;
46
47typedef enum _SYNC_RESOLVE_ACTION {
48  SRA_DEFER = 0,
49  SRA_ACCEPT_DESTINATION_PROVIDER,
50  SRA_ACCEPT_SOURCE_PROVIDER,
51  SRA_MERGE,
52  SRA_TRANSFER_AND_DEFER,
53  SRA_LAST
54} SYNC_RESOLVE_ACTION;
55
56typedef enum _SYNC_SERIALIZATION_VERSION {
57  SYNC_SERIALIZATION_VERSION_V1 = 0,
58  SYNC_SERIALIZATION_VERSION_V2
59} SYNC_SERIALIZATION_VERSION;
60
61typedef enum _SYNC_STATISTICS {
62  SYNC_STATISTICS_RANGE_COUNT = 0
63} SYNC_STATISTICS;
64
65typedef struct _ID_PARAMETER_PAIR {
66  WINBOOL fIsVariable;
67  USHORT  cbIdSize;
68} ID_PARAMETER_PAIR;
69
70typedef struct _ID_PARAMETERS {
71  DWORD             dwSize;
72  ID_PARAMETER_PAIR replicaId;
73  ID_PARAMETER_PAIR itemId;
74  ID_PARAMETER_PAIR changeUnitId;
75} ID_PARAMETERS;
76
77typedef struct _SYNC_RANGE {
78  BYTE * pbClosedLowerBound;
79  BYTE * pbClosedUpperBound;
80} SYNC_RANGE;
81
82typedef struct _SYNC_SESSION_STATISTICS {
83  DWORD dwChangesApplied;
84  DWORD dwChangesFailed;
85} SYNC_SESSION_STATISTICS;
86
87typedef struct _SYNC_TIME {
88  DWORD dwDate;
89  DWORD dwTime;
90} SYNC_TIME;
91
92typedef struct _SYNC_VERSION {
93  DWORD     dwLastUpdatingReplicaKey;
94  ULONGLONG ullTickCount;
95} SYNC_VERSION;
96
97#ifndef __IAsynchronousDataRetriever_FWD_DEFINED__
98#define __IAsynchronousDataRetriever_FWD_DEFINED__
99typedef struct IAssociatedIdentityProvider IAssociatedIdentityProvider;
100#endif
101
102#ifndef __IDataRetrieverCallback_FWD_DEFINED__
103#define __IDataRetrieverCallback_FWD_DEFINED__
104typedef struct IDataRetrieverCallback IDataRetrieverCallback;
105#endif
106
107#ifndef __IChangeConflict_FWD_DEFINED__
108#define __IChangeConflict_FWD_DEFINED__
109typedef struct IChangeConflict IChangeConflict;
110#endif
111
112#ifndef __IChangeUnitException_FWD_DEFINED__
113#define __IChangeUnitException_FWD_DEFINED__
114typedef struct IChangeUnitException IChangeUnitException;
115#endif
116
117#ifndef __IChangeUnitListFilterInfo_FWD_DEFINED__
118#define __IChangeUnitListFilterInfo_FWD_DEFINED__
119typedef struct IChangeUnitListFilterInfo IChangeUnitListFilterInfo;
120#endif
121
122#ifndef __ISyncFilterInfo_FWD_DEFINED__
123#define __ISyncFilterInfo_FWD_DEFINED__
124typedef struct ISyncFilterInfo ISyncFilterInfo;
125#endif
126
127#ifndef __IClockVector_FWD_DEFINED__
128#define __IClockVector_FWD_DEFINED__
129typedef struct IClockVector IClockVector;
130#endif
131
132#ifndef __IClockVectorElement_FWD_DEFINED__
133#define __IClockVectorElement_FWD_DEFINED__
134typedef struct IClockVectorElement IClockVectorElement;
135#endif
136
137#ifndef __IConstructReplicaKeyMap_FWD_DEFINED__
138#define __IConstructReplicaKeyMap_FWD_DEFINED__
139typedef struct IConstructReplicaKeyMap IConstructReplicaKeyMap;
140#endif
141
142#ifndef __ICoreFragment_FWD_DEFINED__
143#define __ICoreFragment_FWD_DEFINED__
144typedef struct ICoreFragment ICoreFragment;
145#endif
146
147#ifndef __ILoadChangeContext_FWD_DEFINED__
148#define __ILoadChangeContext_FWD_DEFINED__
149typedef struct ILoadChangeContext ILoadChangeContext;
150#endif
151
152#ifndef __ISyncChange_FWD_DEFINED__
153#define __ISyncChange_FWD_DEFINED__
154typedef struct ISyncChange ISyncChange;
155#endif
156
157#ifndef __ISyncChangeUnit_FWD_DEFINED__
158#define __ISyncChangeUnit_FWD_DEFINED__
159typedef struct ISyncChangeUnit ISyncChangeUnit;
160#endif
161
162#ifndef __IRecoverableErrorData_FWD_DEFINED__
163#define __IRecoverableErrorData_FWD_DEFINED__
164typedef struct IRecoverableErrorData IRecoverableErrorData;
165#endif
166
167#ifndef __IEnumSyncChangeUnits_FWD_DEFINED__
168#define __IEnumSyncChangeUnits_FWD_DEFINED__
169typedef struct IEnumSyncChangeUnits IEnumSyncChangeUnits;
170#endif
171
172/* Fixme: ISyncKnowledge method list is missing from MSDN */
173#ifndef __ISyncKnowledge_FWD_DEFINED__
174#define __ISyncKnowledge_FWD_DEFINED__
175typedef struct ISyncKnowledge ISyncKnowledge;
176#endif
177
178#undef  INTERFACE
179#define INTERFACE IAsynchronousDataRetriever
180#ifdef __GNUC__
181#warning COM interfaces layout in this header has not been verified.
182#warning COM interfaces with incorrect layout may not work at all.
183__MINGW_BROKEN_INTERFACE(INTERFACE)
184#endif
185DECLARE_INTERFACE_(IAsynchronousDataRetriever,IUnknown)
186{
187    BEGIN_INTERFACE
188
189    /* IUnknown methods */
190    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
191    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
192    STDMETHOD_(ULONG, Release)(THIS) PURE;
193
194    /* IAsynchronousDataRetriever methods */
195    STDMETHOD_(HRESULT,GetIdParameters)(THIS_ ID_PARAMETERS *pIdParameters) PURE;
196    STDMETHOD_(HRESULT,LoadChangeData)(THIS_ ILoadChangeContext *pLoadChangeContext) PURE;
197    STDMETHOD_(HRESULT,RegisterCallback)(THIS_ IDataRetrieverCallback *pDataRetrieverCallback) PURE;
198    STDMETHOD_(HRESULT,RevokeCallback)(THIS_ IDataRetrieverCallback *pDataRetrieverCallback) PURE;
199
200    END_INTERFACE
201};
202#ifdef COBJMACROS
203#define IAsynchronousDataRetriever_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
204#define IAsynchronousDataRetriever_AddRef(This) (This)->lpVtbl->AddRef(This)
205#define IAsynchronousDataRetriever_Release(This) (This)->lpVtbl->Release(This)
206#define IAsynchronousDataRetriever_GetIdParameters(This,pIdParameters) (This)->lpVtbl->GetIdParameters(This,pIdParameters)
207#define IAsynchronousDataRetriever_LoadChangeData(This,pLoadChangeContext) (This)->lpVtbl->LoadChangeData(This,pLoadChangeContext)
208#define IAsynchronousDataRetriever_RegisterCallback(This,pDataRetrieverCallback) (This)->lpVtbl->RegisterCallback(This,pDataRetrieverCallback)
209#define IAsynchronousDataRetriever_RevokeCallback(This,pDataRetrieverCallback) (This)->lpVtbl->RevokeCallback(This,pDataRetrieverCallback)
210#endif /*COBJMACROS*/
211
212#undef  INTERFACE
213#define INTERFACE IDataRetrieverCallback
214#ifdef __GNUC__
215#warning COM interfaces layout in this header has not been verified.
216#warning COM interfaces with incorrect layout may not work at all.
217__MINGW_BROKEN_INTERFACE(INTERFACE)
218#endif
219DECLARE_INTERFACE_(IDataRetrieverCallback,IUnknown)
220{
221    BEGIN_INTERFACE
222
223    /* IUnknown methods */
224    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
225    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
226    STDMETHOD_(ULONG, Release)(THIS) PURE;
227
228    /* IDataRetrieverCallback methods */
229    STDMETHOD_(HRESULT,LoadChangeDataComplete)(THIS_ IUnknown *pUnkData) PURE;
230    STDMETHOD_(HRESULT,LoadChangeDataError)(THIS_ HRESULT hrError) PURE;
231
232    END_INTERFACE
233};
234#ifdef COBJMACROS
235#define IDataRetrieverCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
236#define IDataRetrieverCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
237#define IDataRetrieverCallback_Release(This) (This)->lpVtbl->Release(This)
238#define IDataRetrieverCallback_LoadChangeDataComplete(This,pUnkData) (This)->lpVtbl->LoadChangeDataComplete(This,pUnkData)
239#define IDataRetrieverCallback_LoadChangeDataError(This,hrError) (This)->lpVtbl->LoadChangeDataError(This,hrError)
240#endif /*COBJMACROS*/
241
242#undef  INTERFACE
243#define INTERFACE IChangeConflict
244#ifdef __GNUC__
245#warning COM interfaces layout in this header has not been verified.
246#warning COM interfaces with incorrect layout may not work at all.
247__MINGW_BROKEN_INTERFACE(INTERFACE)
248#endif
249DECLARE_INTERFACE_(IChangeConflict,IUnknown)
250{
251    BEGIN_INTERFACE
252
253    /* IUnknown methods */
254    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
255    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
256    STDMETHOD_(ULONG, Release)(THIS) PURE;
257
258    /* IChangeConflict methods */
259    STDMETHOD_(HRESULT,GetDestinationProviderConflictingChange)(THIS_ ISyncChange **ppConflictingChange) PURE;
260    STDMETHOD_(HRESULT,GetDestinationProviderConflictingData)(THIS_ IUnknown **ppConflictingData) PURE;
261    STDMETHOD_(HRESULT,GetResolveActionForChange)(THIS_ SYNC_RESOLVE_ACTION *pResolveAction) PURE;
262    STDMETHOD_(HRESULT,GetResolveActionForChangeUnit)(THIS_ ISyncChangeUnit *pChangeUnit,SYNC_RESOLVE_ACTION *pResolveAction) PURE;
263    STDMETHOD_(HRESULT,GetSourceProviderConflictingChange)(THIS_ ISyncChange **ppSyncChange) PURE;
264    STDMETHOD_(HRESULT,GetSourceProviderConflictingData)(THIS_ IUnknown **ppConflictingData) PURE;
265    STDMETHOD_(HRESULT,SetResolveActionForChange)(THIS_ SYNC_RESOLVE_ACTION resolveAction) PURE;
266    STDMETHOD_(HRESULT,SetResolveActionForChangeUnit)(THIS_ ISyncChangeUnit *pChangeUnit,SYNC_RESOLVE_ACTION resolveAction) PURE;
267
268    END_INTERFACE
269};
270#ifdef COBJMACROS
271#define IChangeConflict_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
272#define IChangeConflict_AddRef(This) (This)->lpVtbl->AddRef(This)
273#define IChangeConflict_Release(This) (This)->lpVtbl->Release(This)
274#define IChangeConflict_GetDestinationProviderConflictingChange(This,ppConflictingChange) (This)->lpVtbl->GetDestinationProviderConflictingChange(This,ppConflictingChange)
275#define IChangeConflict_GetDestinationProviderConflictingData(This,ppConflictingData) (This)->lpVtbl->GetDestinationProviderConflictingData(This,ppConflictingData)
276#define IChangeConflict_GetResolveActionForChange(This,pResolveAction) (This)->lpVtbl->GetResolveActionForChange(This,pResolveAction)
277#define IChangeConflict_GetResolveActionForChangeUnit(This,pChangeUnit,pResolveAction) (This)->lpVtbl->GetResolveActionForChangeUnit(This,pChangeUnit,pResolveAction)
278#define IChangeConflict_GetSourceProviderConflictingChange(This,ppSyncChange) (This)->lpVtbl->GetSourceProviderConflictingChange(This,ppSyncChange)
279#define IChangeConflict_GetSourceProviderConflictingData(This,ppConflictingData) (This)->lpVtbl->GetSourceProviderConflictingData(This,ppConflictingData)
280#define IChangeConflict_SetResolveActionForChange(This,resolveAction) (This)->lpVtbl->SetResolveActionForChange(This,resolveAction)
281#define IChangeConflict_SetResolveActionForChangeUnit(This,pChangeUnit,resolveAction) (This)->lpVtbl->SetResolveActionForChangeUnit(This,pChangeUnit,resolveAction)
282#endif /*COBJMACROS*/
283
284#undef  INTERFACE
285#define INTERFACE IChangeUnitException
286#ifdef __GNUC__
287#warning COM interfaces layout in this header has not been verified.
288#warning COM interfaces with incorrect layout may not work at all.
289__MINGW_BROKEN_INTERFACE(INTERFACE)
290#endif
291DECLARE_INTERFACE_(IChangeUnitException,IUnknown)
292{
293    BEGIN_INTERFACE
294
295    /* IUnknown methods */
296    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
297    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
298    STDMETHOD_(ULONG, Release)(THIS) PURE;
299
300    /* IChangeUnitException methods */
301    STDMETHOD_(HRESULT,GetChangeUnitId)(THIS_ DWORD *pcbIdSize) PURE;
302    STDMETHOD_(HRESULT,GetClockVector)(THIS_ REFIID riid,void **ppUnk) PURE;
303    STDMETHOD_(HRESULT,GetItemId)(THIS_ DWORD *pcbIdSize) PURE;
304
305    END_INTERFACE
306};
307#ifdef COBJMACROS
308#define IChangeUnitException_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
309#define IChangeUnitException_AddRef(This) (This)->lpVtbl->AddRef(This)
310#define IChangeUnitException_Release(This) (This)->lpVtbl->Release(This)
311#define IChangeUnitException_GetChangeUnitId(This,pcbIdSize) (This)->lpVtbl->GetChangeUnitId(This,pcbIdSize)
312#define IChangeUnitException_GetClockVector(This,riid,ppUnk) (This)->lpVtbl->GetClockVector(This,riid,ppUnk)
313#define IChangeUnitException_GetItemId(This,pcbIdSize) (This)->lpVtbl->GetItemId(This,pcbIdSize)
314#endif /*COBJMACROS*/
315
316#undef  INTERFACE
317#define INTERFACE ISyncFilterInfo
318DECLARE_INTERFACE_(ISyncFilterInfo,IUnknown)
319{
320    BEGIN_INTERFACE
321
322    /* IUnknown methods */
323    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
324    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
325    STDMETHOD_(ULONG, Release)(THIS) PURE;
326
327    /* ISyncFilterInfo methods */
328    STDMETHOD_(HRESULT,Serialize)(THIS_ DWORD *pcbBuffer) PURE;
329
330    END_INTERFACE
331};
332#ifdef COBJMACROS
333#define ISyncFilterInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
334#define ISyncFilterInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
335#define ISyncFilterInfo_Release(This) (This)->lpVtbl->Release(This)
336#define ISyncFilterInfo_Serialize(This,pcbBuffer) (This)->lpVtbl->Serialize(This,pcbBuffer)
337#endif /*COBJMACROS*/
338
339#undef  INTERFACE
340#define INTERFACE IChangeUnitListFilterInfo
341#ifdef __GNUC__
342#warning COM interfaces layout in this header has not been verified.
343#warning COM interfaces with incorrect layout may not work at all.
344__MINGW_BROKEN_INTERFACE(INTERFACE)
345#endif
346DECLARE_INTERFACE_(IChangeUnitListFilterInfo,ISyncFilterInfo)
347{
348    BEGIN_INTERFACE
349
350    /* IUnknown methods */
351    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
352    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
353    STDMETHOD_(ULONG, Release)(THIS) PURE;
354
355    /* ISyncFilterInfo methods */
356    STDMETHOD_(HRESULT,Serialize)(THIS_ DWORD *pcbBuffer) PURE;
357
358    /* IChangeUnitListFilterInfo methods */
359    STDMETHOD_(HRESULT,GetChangeUnitId)(THIS_ DWORD dwChangeUnitIdIndex,DWORD *pcbIdSize) PURE;
360    STDMETHOD_(HRESULT,GetChangeUnitIdCount)(THIS_ DWORD *pdwChangeUnitIdCount) PURE;
361    STDMETHOD_(HRESULT,Initialize)(THIS_ const BYTE * const *ppbChangeUnitIds,DWORD dwChangeUnitCount) PURE;
362
363    END_INTERFACE
364};
365#ifdef COBJMACROS
366#define IChangeUnitListFilterInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
367#define IChangeUnitListFilterInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
368#define IChangeUnitListFilterInfo_Release(This) (This)->lpVtbl->Release(This)
369#define IChangeUnitListFilterInfo_Serialize(This,pcbBuffer) (This)->lpVtbl->Serialize(This,pcbBuffer)
370#define IChangeUnitListFilterInfo_GetChangeUnitId(This,dwChangeUnitIdIndex,pcbIdSize) (This)->lpVtbl->GetChangeUnitId(This,dwChangeUnitIdIndex,pcbIdSize)
371#define IChangeUnitListFilterInfo_GetChangeUnitIdCount(This,pdwChangeUnitIdCount) (This)->lpVtbl->GetChangeUnitIdCount(This,pdwChangeUnitIdCount)
372#define IChangeUnitListFilterInfo_Initialize(This,ppbChangeUnitIds,dwChangeUnitCount) (This)->lpVtbl->Initialize(This,ppbChangeUnitIds,dwChangeUnitCount)
373#endif /*COBJMACROS*/
374
375#undef  INTERFACE
376#define INTERFACE IClockVector
377#ifdef __GNUC__
378#warning COM interfaces layout in this header has not been verified.
379#warning COM interfaces with incorrect layout may not work at all.
380__MINGW_BROKEN_INTERFACE(INTERFACE)
381#endif
382DECLARE_INTERFACE_(IClockVector,IUnknown)
383{
384    BEGIN_INTERFACE
385
386    /* IUnknown methods */
387    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
388    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
389    STDMETHOD_(ULONG, Release)(THIS) PURE;
390
391    /* IClockVector methods */
392    STDMETHOD_(HRESULT,GetClockVectorElementCount)(THIS_ DWORD *pdwCount) PURE;
393    STDMETHOD_(HRESULT,GetClockVectorElements)(THIS_ REFIID riid,void **ppiEnumClockVector) PURE;
394
395    END_INTERFACE
396};
397#ifdef COBJMACROS
398#define IClockVector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
399#define IClockVector_AddRef(This) (This)->lpVtbl->AddRef(This)
400#define IClockVector_Release(This) (This)->lpVtbl->Release(This)
401#define IClockVector_GetClockVectorElementCount(This,pdwCount) (This)->lpVtbl->GetClockVectorElementCount(This,pdwCount)
402#define IClockVector_GetClockVectorElements(This,riid,ppiEnumClockVector) (This)->lpVtbl->GetClockVectorElements(This,riid,ppiEnumClockVector)
403#endif /*COBJMACROS*/
404
405#undef  INTERFACE
406#define INTERFACE IClockVectorElement
407#ifdef __GNUC__
408#warning COM interfaces layout in this header has not been verified.
409#warning COM interfaces with incorrect layout may not work at all.
410__MINGW_BROKEN_INTERFACE(INTERFACE)
411#endif
412DECLARE_INTERFACE_(IClockVectorElement,IUnknown)
413{
414    BEGIN_INTERFACE
415
416    /* IUnknown methods */
417    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
418    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
419    STDMETHOD_(ULONG, Release)(THIS) PURE;
420
421    /* IClockVectorElement methods */
422    STDMETHOD_(HRESULT,GetReplicaKey)(THIS_ DWORD *pdwReplicaKey) PURE;
423    STDMETHOD_(HRESULT,GetTickCount)(THIS_ ULONGLONG *pullTickCount) PURE;
424
425    END_INTERFACE
426};
427#ifdef COBJMACROS
428#define IClockVectorElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
429#define IClockVectorElement_AddRef(This) (This)->lpVtbl->AddRef(This)
430#define IClockVectorElement_Release(This) (This)->lpVtbl->Release(This)
431#define IClockVectorElement_GetReplicaKey(This,pdwReplicaKey) (This)->lpVtbl->GetReplicaKey(This,pdwReplicaKey)
432#define IClockVectorElement_GetTickCount(This,pullTickCount) (This)->lpVtbl->GetTickCount(This,pullTickCount)
433#endif /*COBJMACROS*/
434
435#undef  INTERFACE
436#define INTERFACE IConstructReplicaKeyMap
437DECLARE_INTERFACE_(IConstructReplicaKeyMap,IUnknown)
438{
439    BEGIN_INTERFACE
440
441    /* IUnknown methods */
442    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
443    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
444    STDMETHOD_(ULONG, Release)(THIS) PURE;
445
446    /* IConstructReplicaKeyMap methods */
447    STDMETHOD_(HRESULT,FindOrAddReplica)(THIS_ BYTE *pbReplicaId,DWORD *pdwReplicaKey) PURE;
448
449    END_INTERFACE
450};
451#ifdef COBJMACROS
452#define IConstructReplicaKeyMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
453#define IConstructReplicaKeyMap_AddRef(This) (This)->lpVtbl->AddRef(This)
454#define IConstructReplicaKeyMap_Release(This) (This)->lpVtbl->Release(This)
455#define IConstructReplicaKeyMap_FindOrAddReplica(This,pbReplicaId,pdwReplicaKey) (This)->lpVtbl->FindOrAddReplica(This,pbReplicaId,pdwReplicaKey)
456#endif /*COBJMACROS*/
457
458#undef  INTERFACE
459#define INTERFACE ICoreFragment
460#ifdef __GNUC__
461#warning COM interfaces layout in this header has not been verified.
462#warning COM interfaces with incorrect layout may not work at all.
463__MINGW_BROKEN_INTERFACE(INTERFACE)
464#endif
465DECLARE_INTERFACE_(ICoreFragment,IUnknown)
466{
467    BEGIN_INTERFACE
468
469    /* IUnknown methods */
470    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
471    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
472    STDMETHOD_(ULONG, Release)(THIS) PURE;
473
474    /* ICoreFragment methods */
475    STDMETHOD_(HRESULT,GetColumnCount)(THIS_ DWORD *pColumnCount) PURE;
476    STDMETHOD_(HRESULT,GetRangeCount)(THIS_ DWORD *pRangeCount) PURE;
477    STDMETHOD_(HRESULT,NextColumn)(THIS_ DWORD *pChangeUnitIdSize) PURE;
478    STDMETHOD_(HRESULT,NextRange)(THIS_ DWORD *pItemIdSize,IClockVector **piClockVector) PURE;
479    STDMETHOD_(HRESULT,Reset)(THIS) PURE;
480
481    END_INTERFACE
482};
483#ifdef COBJMACROS
484#define ICoreFragment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
485#define ICoreFragment_AddRef(This) (This)->lpVtbl->AddRef(This)
486#define ICoreFragment_Release(This) (This)->lpVtbl->Release(This)
487#define ICoreFragment_GetColumnCount(This,pColumnCount) (This)->lpVtbl->GetColumnCount(This,pColumnCount)
488#define ICoreFragment_GetRangeCount(This,pRangeCount) (This)->lpVtbl->GetRangeCount(This,pRangeCount)
489#define ICoreFragment_NextColumn(This,pChangeUnitIdSize) (This)->lpVtbl->NextColumn(This,pChangeUnitIdSize)
490#define ICoreFragment_NextRange(This,pItemIdSize,piClockVector) (This)->lpVtbl->NextRange(This,pItemIdSize,piClockVector)
491#define ICoreFragment_Reset() (This)->lpVtbl->Reset(This)
492#endif /*COBJMACROS*/
493
494#undef  INTERFACE
495#define INTERFACE ILoadChangeContext
496#ifdef __GNUC__
497#warning COM interfaces layout in this header has not been verified.
498#warning COM interfaces with incorrect layout may not work at all.
499__MINGW_BROKEN_INTERFACE(INTERFACE)
500#endif
501DECLARE_INTERFACE_(ILoadChangeContext,IUnknown)
502{
503    BEGIN_INTERFACE
504
505    /* IUnknown methods */
506    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
507    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
508    STDMETHOD_(ULONG, Release)(THIS) PURE;
509
510    /* ILoadChangeContext methods */
511    STDMETHOD_(HRESULT,GetSyncChange)(THIS_ ISyncChange **ppSyncChange) PURE;
512    STDMETHOD_(HRESULT,SetRecoverableErrorOnChange)(THIS_ HRESULT hrError,IRecoverableErrorData *pErrorData) PURE;
513    STDMETHOD_(HRESULT,SetRecoverableErrorOnChangeUnit)(THIS_ HRESULT hrError,ISyncChangeUnit *pChangeUnit,IRecoverableErrorData *pErrorData) PURE;
514
515    END_INTERFACE
516};
517#ifdef COBJMACROS
518#define ILoadChangeContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
519#define ILoadChangeContext_AddRef(This) (This)->lpVtbl->AddRef(This)
520#define ILoadChangeContext_Release(This) (This)->lpVtbl->Release(This)
521#define ILoadChangeContext_GetSyncChange(This,ppSyncChange) (This)->lpVtbl->GetSyncChange(This,ppSyncChange)
522#define ILoadChangeContext_SetRecoverableErrorOnChange(This,hrError,pErrorData) (This)->lpVtbl->SetRecoverableErrorOnChange(This,hrError,pErrorData)
523#define ILoadChangeContext_SetRecoverableErrorOnChangeUnit(This,hrError,pChangeUnit,pErrorData) (This)->lpVtbl->SetRecoverableErrorOnChangeUnit(This,hrError,pChangeUnit,pErrorData)
524#endif /*COBJMACROS*/
525
526#undef  INTERFACE
527#define INTERFACE ISyncChange
528#ifdef __GNUC__
529#warning COM interfaces layout in this header has not been verified.
530#warning COM interfaces with incorrect layout may not work at all.
531__MINGW_BROKEN_INTERFACE(INTERFACE)
532#endif
533DECLARE_INTERFACE_(ISyncChange,IUnknown)
534{
535    BEGIN_INTERFACE
536
537    /* IUnknown methods */
538    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
539    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
540    STDMETHOD_(ULONG, Release)(THIS) PURE;
541
542    /* ISyncChange methods */
543    STDMETHOD_(HRESULT,GetChangeUnits)(THIS_ IEnumSyncChangeUnits **ppEnum) PURE;
544    STDMETHOD_(HRESULT,GetChangeVersion)(THIS_ const BYTE *pbCurrentReplicaId,SYNC_VERSION *pVersion) PURE;
545    STDMETHOD_(HRESULT,GetCreationVersion)(THIS_ const BYTE *pbCurrentReplicaId,SYNC_VERSION *pVersion) PURE;
546    STDMETHOD_(HRESULT,GetFlags)(THIS_ DWORD *pdwFlags) PURE;
547    STDMETHOD_(HRESULT,GetLearnedKnowledge)(THIS_ ISyncKnowledge **ppMadeWithKnowledge) PURE;
548    STDMETHOD_(HRESULT,GetMadeWithKnowledge)(THIS_ ISyncKnowledge **ppMadeWithKnowledge) PURE;
549    STDMETHOD_(HRESULT,GetOwnerReplicaId)(THIS_ DWORD *pcbIdSize) PURE;
550    STDMETHOD_(HRESULT,GetRootItemId)(THIS_ DWORD *pcbIdSize) PURE;
551    STDMETHOD_(HRESULT,GetWorkEstimate)(THIS_ DWORD *pdwWork) PURE;
552    STDMETHOD_(HRESULT,SetWorkEstimate)(THIS_ DWORD dwWork) PURE;
553
554    END_INTERFACE
555};
556#ifdef COBJMACROS
557#define ISyncChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
558#define ISyncChange_AddRef(This) (This)->lpVtbl->AddRef(This)
559#define ISyncChange_Release(This) (This)->lpVtbl->Release(This)
560#define ISyncChange_GetChangeUnits(This,ppEnum) (This)->lpVtbl->GetChangeUnits(This,ppEnum)
561#define ISyncChange_GetChangeVersion(This,pbCurrentReplicaId,pVersion) (This)->lpVtbl->GetChangeVersion(This,pbCurrentReplicaId,pVersion)
562#define ISyncChange_GetCreationVersion(This,pbCurrentReplicaId,pVersion) (This)->lpVtbl->GetCreationVersion(This,pbCurrentReplicaId,pVersion)
563#define ISyncChange_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
564#define ISyncChange_GetLearnedKnowledge(This,ppMadeWithKnowledge) (This)->lpVtbl->GetLearnedKnowledge(This,ppMadeWithKnowledge)
565#define ISyncChange_GetMadeWithKnowledge(This,ppMadeWithKnowledge) (This)->lpVtbl->GetMadeWithKnowledge(This,ppMadeWithKnowledge)
566#define ISyncChange_GetOwnerReplicaId(This,pcbIdSize) (This)->lpVtbl->GetOwnerReplicaId(This,pcbIdSize)
567#define ISyncChange_GetRootItemId(This,pcbIdSize) (This)->lpVtbl->GetRootItemId(This,pcbIdSize)
568#define ISyncChange_GetWorkEstimate(This,pdwWork) (This)->lpVtbl->GetWorkEstimate(This,pdwWork)
569#define ISyncChange_SetWorkEstimate(This,dwWork) (This)->lpVtbl->SetWorkEstimate(This,dwWork)
570#endif /*COBJMACROS*/
571
572#undef  INTERFACE
573#define INTERFACE ISyncChangeUnit
574#ifdef __GNUC__
575#warning COM interfaces layout in this header has not been verified.
576#warning COM interfaces with incorrect layout may not work at all.
577__MINGW_BROKEN_INTERFACE(INTERFACE)
578#endif
579DECLARE_INTERFACE_(ISyncChangeUnit,IUnknown)
580{
581    BEGIN_INTERFACE
582
583    /* IUnknown methods */
584    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
585    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
586    STDMETHOD_(ULONG, Release)(THIS) PURE;
587
588    /* ISyncChangeUnit methods */
589    STDMETHOD_(HRESULT,GetChangeUnitId)(THIS_ DWORD *pcbIdSize) PURE;
590    STDMETHOD_(HRESULT,GetChangeUnitVersion)(THIS_ const BYTE *pbCurrentReplicaId,SYNC_VERSION *pVersion) PURE;
591    STDMETHOD_(HRESULT,GetItemChange)(THIS_ ISyncChange **ppSyncChange) PURE;
592
593    END_INTERFACE
594};
595#ifdef COBJMACROS
596#define ISyncChangeUnit_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
597#define ISyncChangeUnit_AddRef(This) (This)->lpVtbl->AddRef(This)
598#define ISyncChangeUnit_Release(This) (This)->lpVtbl->Release(This)
599#define ISyncChangeUnit_GetChangeUnitId(This,pcbIdSize) (This)->lpVtbl->GetChangeUnitId(This,pcbIdSize)
600#define ISyncChangeUnit_GetChangeUnitVersion(This,pbCurrentReplicaId,pVersion) (This)->lpVtbl->GetChangeUnitVersion(This,pbCurrentReplicaId,pVersion)
601#define ISyncChangeUnit_GetItemChange(This,ppSyncChange) (This)->lpVtbl->GetItemChange(This,ppSyncChange)
602#endif /*COBJMACROS*/
603
604#undef  INTERFACE
605#define INTERFACE IRecoverableErrorData
606#ifdef __GNUC__
607#warning COM interfaces layout in this header has not been verified.
608#warning COM interfaces with incorrect layout may not work at all.
609__MINGW_BROKEN_INTERFACE(INTERFACE)
610#endif
611DECLARE_INTERFACE_(IRecoverableErrorData,IUnknown)
612{
613    BEGIN_INTERFACE
614
615    /* IUnknown methods */
616    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
617    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
618    STDMETHOD_(ULONG, Release)(THIS) PURE;
619
620    /* IRecoverableErrorData methods */
621    STDMETHOD_(HRESULT,GetErrorDescription)(THIS_ DWORD *pcchErrorDescription) PURE;
622    STDMETHOD_(HRESULT,GetItemDisplayName)(THIS_ DWORD *pcchItemDisplayName) PURE;
623    STDMETHOD_(HRESULT,Initialize)(THIS_ LPCWSTR pcszItemDisplayName,LPCWSTR pcszErrorDescription) PURE;
624
625    END_INTERFACE
626};
627#ifdef COBJMACROS
628#define IRecoverableErrorData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
629#define IRecoverableErrorData_AddRef(This) (This)->lpVtbl->AddRef(This)
630#define IRecoverableErrorData_Release(This) (This)->lpVtbl->Release(This)
631#define IRecoverableErrorData_GetErrorDescription(This,pcchErrorDescription) (This)->lpVtbl->GetErrorDescription(This,pcchErrorDescription)
632#define IRecoverableErrorData_GetItemDisplayName(This,pcchItemDisplayName) (This)->lpVtbl->GetItemDisplayName(This,pcchItemDisplayName)
633#define IRecoverableErrorData_Initialize(This,pcszItemDisplayName,pcszErrorDescription) (This)->lpVtbl->Initialize(This,pcszItemDisplayName,pcszErrorDescription)
634#endif /*COBJMACROS*/
635
636#undef  INTERFACE
637#define INTERFACE IEnumSyncChangeUnits
638#ifdef __GNUC__
639#warning COM interfaces layout in this header has not been verified.
640#warning COM interfaces with incorrect layout may not work at all.
641__MINGW_BROKEN_INTERFACE(INTERFACE)
642#endif
643DECLARE_INTERFACE_(IEnumSyncChangeUnits,IUnknown)
644{
645    BEGIN_INTERFACE
646
647    /* IUnknown methods */
648    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
649    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
650    STDMETHOD_(ULONG, Release)(THIS) PURE;
651
652    /* IEnumSyncChangeUnits methods */
653    STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSyncChangeUnits **ppEnum) PURE;
654    STDMETHOD_(HRESULT,Next)(THIS_ ULONG cChanges,ISyncChangeUnit **ppChangeUnit,ULONG *pcFetched) PURE;
655    STDMETHOD_(HRESULT,Reset)(THIS) PURE;
656    STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cChanges) PURE;
657
658    END_INTERFACE
659};
660#ifdef COBJMACROS
661#define IEnumSyncChangeUnits_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
662#define IEnumSyncChangeUnits_AddRef(This) (This)->lpVtbl->AddRef(This)
663#define IEnumSyncChangeUnits_Release(This) (This)->lpVtbl->Release(This)
664#define IEnumSyncChangeUnits_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
665#define IEnumSyncChangeUnits_Next(This,cChanges,ppChangeUnit,pcFetched) (This)->lpVtbl->Next(This,cChanges,ppChangeUnit,pcFetched)
666#define IEnumSyncChangeUnits_Reset() (This)->lpVtbl->Reset(This)
667#define IEnumSyncChangeUnits_Skip(This,cChanges) (This)->lpVtbl->Skip(This,cChanges)
668#endif /*COBJMACROS*/
669
670#endif /*(_WIN32_WINNT >= 0x0601)*/
671#endif /* __WINSYNC_H__ */
672