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 
12 typedef 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 
19 typedef enum _FILTERING_TYPE {
20   FT_CURRENT_ITEMS_ONLY = 0
21 } FILTERING_TYPE;
22 
23 typedef 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 
30 typedef enum _SYNC_FULL_ENUMERATION_ACTION {
31   SFEA_FULL_ENUMERATION = 0,
32   SFEA_PARTIAL_SYNC,
33   SFEA_ABORT
34 } SYNC_FULL_ENUMERATION_ACTION;
35 
36 typedef enum _SYNC_PROGRESS_STAGE {
37   SPS_CHANGE_DETECTION = 0,
38   SPS_CHANGE_ENUMERATION,
39   SPS_CHANGE_APPLICATION
40 } SYNC_PROGRESS_STAGE;
41 
42 typedef enum _SYNC_PROVIDER_ROLE {
43   SPR_SOURCE = 0,
44   SPR_DESTINATION
45 } SYNC_PROVIDER_ROLE;
46 
47 typedef 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 
56 typedef enum _SYNC_SERIALIZATION_VERSION {
57   SYNC_SERIALIZATION_VERSION_V1 = 0,
58   SYNC_SERIALIZATION_VERSION_V2
59 } SYNC_SERIALIZATION_VERSION;
60 
61 typedef enum _SYNC_STATISTICS {
62   SYNC_STATISTICS_RANGE_COUNT = 0
63 } SYNC_STATISTICS;
64 
65 typedef struct _ID_PARAMETER_PAIR {
66   WINBOOL fIsVariable;
67   USHORT  cbIdSize;
68 } ID_PARAMETER_PAIR;
69 
70 typedef 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 
77 typedef struct _SYNC_RANGE {
78   BYTE * pbClosedLowerBound;
79   BYTE * pbClosedUpperBound;
80 } SYNC_RANGE;
81 
82 typedef struct _SYNC_SESSION_STATISTICS {
83   DWORD dwChangesApplied;
84   DWORD dwChangesFailed;
85 } SYNC_SESSION_STATISTICS;
86 
87 typedef struct _SYNC_TIME {
88   DWORD dwDate;
89   DWORD dwTime;
90 } SYNC_TIME;
91 
92 typedef struct _SYNC_VERSION {
93   DWORD     dwLastUpdatingReplicaKey;
94   ULONGLONG ullTickCount;
95 } SYNC_VERSION;
96 
97 #ifndef __IAsynchronousDataRetriever_FWD_DEFINED__
98 #define __IAsynchronousDataRetriever_FWD_DEFINED__
99 typedef struct IAssociatedIdentityProvider IAssociatedIdentityProvider;
100 #endif
101 
102 #ifndef __IDataRetrieverCallback_FWD_DEFINED__
103 #define __IDataRetrieverCallback_FWD_DEFINED__
104 typedef struct IDataRetrieverCallback IDataRetrieverCallback;
105 #endif
106 
107 #ifndef __IChangeConflict_FWD_DEFINED__
108 #define __IChangeConflict_FWD_DEFINED__
109 typedef struct IChangeConflict IChangeConflict;
110 #endif
111 
112 #ifndef __IChangeUnitException_FWD_DEFINED__
113 #define __IChangeUnitException_FWD_DEFINED__
114 typedef struct IChangeUnitException IChangeUnitException;
115 #endif
116 
117 #ifndef __IChangeUnitListFilterInfo_FWD_DEFINED__
118 #define __IChangeUnitListFilterInfo_FWD_DEFINED__
119 typedef struct IChangeUnitListFilterInfo IChangeUnitListFilterInfo;
120 #endif
121 
122 #ifndef __ISyncFilterInfo_FWD_DEFINED__
123 #define __ISyncFilterInfo_FWD_DEFINED__
124 typedef struct ISyncFilterInfo ISyncFilterInfo;
125 #endif
126 
127 #ifndef __IClockVector_FWD_DEFINED__
128 #define __IClockVector_FWD_DEFINED__
129 typedef struct IClockVector IClockVector;
130 #endif
131 
132 #ifndef __IClockVectorElement_FWD_DEFINED__
133 #define __IClockVectorElement_FWD_DEFINED__
134 typedef struct IClockVectorElement IClockVectorElement;
135 #endif
136 
137 #ifndef __IConstructReplicaKeyMap_FWD_DEFINED__
138 #define __IConstructReplicaKeyMap_FWD_DEFINED__
139 typedef struct IConstructReplicaKeyMap IConstructReplicaKeyMap;
140 #endif
141 
142 #ifndef __ICoreFragment_FWD_DEFINED__
143 #define __ICoreFragment_FWD_DEFINED__
144 typedef struct ICoreFragment ICoreFragment;
145 #endif
146 
147 #ifndef __ILoadChangeContext_FWD_DEFINED__
148 #define __ILoadChangeContext_FWD_DEFINED__
149 typedef struct ILoadChangeContext ILoadChangeContext;
150 #endif
151 
152 #ifndef __ISyncChange_FWD_DEFINED__
153 #define __ISyncChange_FWD_DEFINED__
154 typedef struct ISyncChange ISyncChange;
155 #endif
156 
157 #ifndef __ISyncChangeUnit_FWD_DEFINED__
158 #define __ISyncChangeUnit_FWD_DEFINED__
159 typedef struct ISyncChangeUnit ISyncChangeUnit;
160 #endif
161 
162 #ifndef __IRecoverableErrorData_FWD_DEFINED__
163 #define __IRecoverableErrorData_FWD_DEFINED__
164 typedef struct IRecoverableErrorData IRecoverableErrorData;
165 #endif
166 
167 #ifndef __IEnumSyncChangeUnits_FWD_DEFINED__
168 #define __IEnumSyncChangeUnits_FWD_DEFINED__
169 typedef 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__
175 typedef 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
DECLARE_INTERFACE_(IAsynchronousDataRetriever,IUnknown)185 DECLARE_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
DECLARE_INTERFACE_(IDataRetrieverCallback,IUnknown)219 DECLARE_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
DECLARE_INTERFACE_(IChangeConflict,IUnknown)249 DECLARE_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
DECLARE_INTERFACE_(IChangeUnitException,IUnknown)291 DECLARE_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
DECLARE_INTERFACE_(ISyncFilterInfo,IUnknown)318 DECLARE_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
DECLARE_INTERFACE_(IChangeUnitListFilterInfo,ISyncFilterInfo)346 DECLARE_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
DECLARE_INTERFACE_(IClockVector,IUnknown)382 DECLARE_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
DECLARE_INTERFACE_(IClockVectorElement,IUnknown)412 DECLARE_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
DECLARE_INTERFACE_(IConstructReplicaKeyMap,IUnknown)437 DECLARE_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
DECLARE_INTERFACE_(ICoreFragment,IUnknown)465 DECLARE_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
DECLARE_INTERFACE_(ILoadChangeContext,IUnknown)501 DECLARE_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
DECLARE_INTERFACE_(ISyncChange,IUnknown)533 DECLARE_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
DECLARE_INTERFACE_(ISyncChangeUnit,IUnknown)579 DECLARE_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
DECLARE_INTERFACE_(IRecoverableErrorData,IUnknown)611 DECLARE_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
DECLARE_INTERFACE_(IEnumSyncChangeUnits,IUnknown)643 DECLARE_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