Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

201 lines
5.4 KiB

  1. /*
  2. * reconcil.h - OLE reconciliation interface definitions.
  3. */
  4. #ifndef __RECONCIL_H__
  5. #define __RECONCIL_H__
  6. /* Headers
  7. **********/
  8. #include <recguids.h>
  9. #ifdef __cplusplus
  10. extern "C" { /* Assume C declarations for C++. */
  11. #endif /* __cplusplus */
  12. /* Constants
  13. ************/
  14. /* for use in IStorage::SetStateBits() */
  15. #define STATEBITS_FLAT (0x0001)
  16. /* reconciliation SCODEs */
  17. #define REC_S_IDIDTHEUPDATES MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1000)
  18. #define REC_S_NOTCOMPLETE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1001)
  19. #define REC_S_NOTCOMPLETEBUTPROPAGATE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1002)
  20. #define REC_E_ABORTED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000)
  21. #define REC_E_NOCALLBACK MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001)
  22. #define REC_E_NORESIDUES MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1002)
  23. #define REC_E_TOODIFFERENT MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1003)
  24. #define REC_E_INEEDTODOTHEUPDATES MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1004)
  25. /* Interfaces
  26. *************/
  27. #undef INTERFACE
  28. #define INTERFACE INotifyReplica
  29. DECLARE_INTERFACE_(INotifyReplica, IUnknown)
  30. {
  31. /* IUnknown methods */
  32. STDMETHOD(QueryInterface)(THIS_
  33. REFIID riid,
  34. PVOID *ppvObject) PURE;
  35. STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  36. STDMETHOD_(ULONG, Release)(THIS) PURE;
  37. /* INotifyReplica methods */
  38. STDMETHOD(YouAreAReplica)(THIS_
  39. ULONG ulcOtherReplicas,
  40. IMoniker **rgpmkOtherReplicas) PURE;
  41. };
  42. #undef INTERFACE
  43. #define INTERFACE IReconcileInitiator
  44. DECLARE_INTERFACE_(IReconcileInitiator, IUnknown)
  45. {
  46. /* IUnknown methods */
  47. STDMETHOD(QueryInterface)(THIS_
  48. REFIID riid,
  49. PVOID *ppvObject) PURE;
  50. STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  51. STDMETHOD_(ULONG, Release)(THIS) PURE;
  52. /* IReconcileInitiator methods */
  53. STDMETHOD(SetAbortCallback)(THIS_
  54. IUnknown *punkForAbort) PURE;
  55. STDMETHOD(SetProgressFeedback)(THIS_
  56. ULONG ulProgress,
  57. ULONG ulProgressMax) PURE;
  58. };
  59. /* IReconcilableObject::Reconcile() flags */
  60. typedef enum _reconcilef
  61. {
  62. /* interaction with the user is allowed */
  63. RECONCILEF_MAYBOTHERUSER = 0x0001,
  64. /*
  65. * hwndProgressFeedback may be used to provide reconciliation progress
  66. * feedback to the user.
  67. */
  68. RECONCILEF_FEEDBACKWINDOWVALID = 0x0002,
  69. /* residue support not required */
  70. RECONCILEF_NORESIDUESOK = 0x0004,
  71. /* caller not interested in callee's residues */
  72. RECONCILEF_OMITSELFRESIDUE = 0x0008,
  73. /*
  74. * Reconcile() call resuming after a previous Reconcile() call returned
  75. * REC_E_NOTCOMPLETE
  76. */
  77. RECONCILEF_RESUMERECONCILIATION = 0x0010,
  78. /* Object may perform all updates. */
  79. RECONCILEF_YOUMAYDOTHEUPDATES = 0x0020,
  80. /* Only this object has been changed. */
  81. RECONCILEF_ONLYYOUWERECHANGED = 0x0040,
  82. /* flag combinations */
  83. ALL_RECONCILE_FLAGS = (RECONCILEF_MAYBOTHERUSER |
  84. RECONCILEF_FEEDBACKWINDOWVALID |
  85. RECONCILEF_NORESIDUESOK |
  86. RECONCILEF_OMITSELFRESIDUE |
  87. RECONCILEF_RESUMERECONCILIATION |
  88. RECONCILEF_YOUMAYDOTHEUPDATES |
  89. RECONCILEF_ONLYYOUWERECHANGED)
  90. }
  91. RECONCILEF;
  92. #undef INTERFACE
  93. #define INTERFACE IReconcilableObject
  94. DECLARE_INTERFACE_(IReconcilableObject, IUnknown)
  95. {
  96. /* IUnknown methods */
  97. STDMETHOD(QueryInterface)(THIS_
  98. REFIID riid,
  99. PVOID *ppvObject) PURE;
  100. STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  101. STDMETHOD_(ULONG, Release)(THIS) PURE;
  102. /* IReconcilableObject methods */
  103. STDMETHOD(Reconcile)(THIS_
  104. IReconcileInitiator *pInitiator,
  105. DWORD dwFlags,
  106. HWND hwndOwner,
  107. HWND hwndProgressFeedback,
  108. ULONG ulcInput,
  109. IMoniker **rgpmkOtherInput,
  110. PLONG plOutIndex,
  111. IStorage *pstgNewResidues,
  112. PVOID pvReserved) PURE;
  113. STDMETHOD(GetProgressFeedbackMaxEstimate)(THIS_
  114. PULONG pulProgressMax) PURE;
  115. };
  116. #undef INTERFACE
  117. #define INTERFACE IBriefcaseInitiator
  118. DECLARE_INTERFACE_(IBriefcaseInitiator, IUnknown)
  119. {
  120. /* IUnknown methods */
  121. STDMETHOD(QueryInterface)(THIS_
  122. REFIID riid,
  123. PVOID *ppvObject) PURE;
  124. STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  125. STDMETHOD_(ULONG, Release)(THIS) PURE;
  126. /* IBriefcaseInitiator methods */
  127. STDMETHOD(IsMonikerInBriefcase)(THIS_
  128. IMoniker *pmk) PURE;
  129. };
  130. #ifdef __cplusplus
  131. } /* End of extern "C" {. */
  132. #endif /* __cplusplus */
  133. #endif /* ! __RECONCIL_H__ */