wabutil.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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. #if !defined(_MAPIUTIL_H) && !defined(_WABUTIL_H)
  7. #define _WABUTIL_H
  8. #include "mapidefs.h"
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #ifndef BEGIN_INTERFACE
  13. #define BEGIN_INTERFACE
  14. #endif
  15. DECLARE_MAPI_INTERFACE_PTR(ITableData,LPTABLEDATA);
  16. typedef void (WINAPI CALLERRELEASE)(ULONG ulCallerData,LPTABLEDATA lpTblData,LPMAPITABLE lpVue);
  17. #define MAPI_ITABLEDATA_METHODS(IPURE) MAPIMETHOD(HrGetView) (THIS_ LPSSortOrderSet lpSSortOrderSet,CALLERRELEASE *lpfCallerRelease,ULONG ulCallerData,LPMAPITABLE *lppMAPITable) IPURE; MAPIMETHOD(HrModifyRow) (THIS_ LPSRow) IPURE; MAPIMETHOD(HrDeleteRow) (THIS_ LPSPropValue lpSPropValue) IPURE; MAPIMETHOD(HrQueryRow) (THIS_ LPSPropValue lpsPropValue,LPSRow *lppSRow,ULONG *lpuliRow) IPURE; MAPIMETHOD(HrEnumRow) (THIS_ ULONG ulRowNumber,LPSRow *lppSRow) IPURE; MAPIMETHOD(HrNotify) (THIS_ ULONG ulFlags,ULONG cValues,LPSPropValue lpSPropValue) IPURE; MAPIMETHOD(HrInsertRow) (THIS_ ULONG uliRow,LPSRow lpSRow) IPURE; MAPIMETHOD(HrModifyRows) (THIS_ ULONG ulFlags,LPSRowSet lpSRowSet) IPURE; MAPIMETHOD(HrDeleteRows) (THIS_ ULONG ulFlags,LPSRowSet lprowsetToDelete,ULONG *cRowsDeleted) IPURE;
  18. #undef INTERFACE
  19. #define INTERFACE ITableData
  20. DECLARE_MAPI_INTERFACE_(ITableData,IUnknown) {
  21. BEGIN_INTERFACE
  22. MAPI_IUNKNOWN_METHODS(PURE)
  23. MAPI_ITABLEDATA_METHODS(PURE)
  24. };
  25. STDAPI_(SCODE) CreateTable(LPCIID lpInterface,ALLOCATEBUFFER *lpAllocateBuffer,ALLOCATEMORE *lpAllocateMore,FREEBUFFER *lpFreeBuffer,LPVOID lpvReserved,ULONG ulTableType,ULONG ulPropTagIndexColumn,LPSPropTagArray lpSPropTagArrayColumns,LPTABLEDATA *lppTableData);
  26. #define TAD_ALL_ROWS 1
  27. #define MAPI_IPROPDATA_METHODS(IPURE) MAPIMETHOD(HrSetObjAccess) (THIS_ ULONG ulAccess) IPURE; MAPIMETHOD(HrSetPropAccess) (THIS_ LPSPropTagArray lpPropTagArray,ULONG *rgulAccess) IPURE; MAPIMETHOD(HrGetPropAccess) (THIS_ LPSPropTagArray *lppPropTagArray,ULONG **lprgulAccess) IPURE; MAPIMETHOD(HrAddObjProps) (THIS_ LPSPropTagArray lppPropTagArray,LPSPropProblemArray *lprgulAccess) IPURE;
  28. #undef INTERFACE
  29. #define INTERFACE IPropData
  30. DECLARE_MAPI_INTERFACE_(IPropData,IMAPIProp) {
  31. BEGIN_INTERFACE
  32. MAPI_IUNKNOWN_METHODS(PURE)
  33. MAPI_IMAPIPROP_METHODS(PURE)
  34. MAPI_IPROPDATA_METHODS(PURE)
  35. };
  36. DECLARE_MAPI_INTERFACE_PTR(IPropData,LPPROPDATA);
  37. #ifndef CreateIProp
  38. STDAPI_(SCODE) CreateIProp(LPCIID lpInterface,ALLOCATEBUFFER *lpAllocateBuffer,ALLOCATEMORE *lpAllocateMore,FREEBUFFER *lpFreeBuffer,LPVOID lpvReserved,LPPROPDATA *lppPropData);
  39. #endif
  40. STDAPI_(SCODE) WABCreateIProp(LPCIID lpInterface,ALLOCATEBUFFER *lpAllocateBuffer,ALLOCATEMORE *lpAllocateMore,FREEBUFFER *lpFreeBuffer,LPVOID lpvReserved,LPPROPDATA *lppPropData);
  41. #define IPROP_READONLY ((ULONG) 0x00000001)
  42. #define IPROP_READWRITE ((ULONG) 0x00000002)
  43. #define IPROP_CLEAN ((ULONG) 0x00010000)
  44. #define IPROP_DIRTY ((ULONG) 0x00020000)
  45. #ifndef NOIDLEENGINE
  46. #define PRILOWEST -32768
  47. #define PRIHIGHEST 32767
  48. #define PRIUSER 0
  49. #define IRONULL ((USHORT) 0x0000)
  50. #define FIROWAIT ((USHORT) 0x0001)
  51. #define FIROINTERVAL ((USHORT) 0x0002)
  52. #define FIROPERBLOCK ((USHORT) 0x0004)
  53. #define FIRODISABLED ((USHORT) 0x0020)
  54. #define FIROONCEONLY ((USHORT) 0x0040)
  55. #define IRCNULL ((USHORT) 0x0000)
  56. #define FIRCPFN ((USHORT) 0x0001)
  57. #define FIRCPV ((USHORT) 0x0002)
  58. #define FIRCPRI ((USHORT) 0x0004)
  59. #define FIRCCSEC ((USHORT) 0x0008)
  60. #define FIRCIRO ((USHORT) 0x0010)
  61. typedef WINBOOL (WINAPI FNIDLE)(LPVOID);
  62. typedef FNIDLE *PFNIDLE;
  63. typedef void *FTG;
  64. typedef FTG *PFTG;
  65. #define FTGNULL ((FTG) NULL)
  66. STDAPI_(LONG) MAPIInitIdle(LPVOID lpvReserved);
  67. STDAPI_(VOID) MAPIDeinitIdle(VOID);
  68. STDAPI_(FTG) FtgRegisterIdleRoutine(PFNIDLE lpfnIdle,LPVOID lpvIdleParam,short priIdle,ULONG csecIdle,USHORT iroIdle);
  69. STDAPI_(void) DeregisterIdleRoutine(FTG ftg);
  70. STDAPI_(void) EnableIdleRoutine(FTG ftg,WINBOOL fEnable);
  71. STDAPI_(void) ChangeIdleRoutine(FTG ftg,PFNIDLE lpfnIdle,LPVOID lpvIdleParam,short priIdle,ULONG csecIdle,USHORT iroIdle,USHORT ircIdle);
  72. #endif
  73. STDAPI_(LPMALLOC) MAPIGetDefaultMalloc(VOID);
  74. #define SOF_UNIQUEFILENAME ((ULONG) 0x80000000)
  75. STDMETHODIMP OpenStreamOnFile(LPALLOCATEBUFFER lpAllocateBuffer,LPFREEBUFFER lpFreeBuffer,ULONG ulFlags,LPTSTR lpszFileName,LPTSTR lpszPrefix,LPSTREAM *lppStream);
  76. typedef HRESULT (WINAPI *LPOPENSTREAMONFILE) (LPALLOCATEBUFFER lpAllocateBuffer,LPFREEBUFFER lpFreeBuffer,ULONG ulFlags,LPTSTR lpszFileName,LPTSTR lpszPrefix,LPSTREAM *lppStream);
  77. #define OPENSTREAMONFILE "OpenStreamOnFile"
  78. STDAPI_(SCODE) PropCopyMore(LPSPropValue lpSPropValueDest,LPSPropValue lpSPropValueSrc,ALLOCATEMORE *lpfAllocMore,LPVOID lpvObject);
  79. STDAPI_(ULONG) UlPropSize(LPSPropValue lpSPropValue);
  80. STDAPI_(WINBOOL) FEqualNames(LPMAPINAMEID lpName1,LPMAPINAMEID lpName2);
  81. #ifndef _WINNT
  82. #define _WINNT
  83. #endif
  84. STDAPI_(void) GetInstance(LPSPropValue lpPropMv,LPSPropValue lpPropSv,ULONG uliInst);
  85. extern unsigned char rgchCsds[];
  86. extern unsigned char rgchCids[];
  87. extern unsigned char rgchCsdi[];
  88. extern unsigned char rgchCidi[];
  89. STDAPI_(WINBOOL) FPropContainsProp(LPSPropValue lpSPropValueDst,LPSPropValue lpSPropValueSrc,ULONG ulFuzzyLevel);
  90. STDAPI_(WINBOOL) FPropCompareProp(LPSPropValue lpSPropValue1,ULONG ulRelOp,LPSPropValue lpSPropValue2);
  91. STDAPI_(LONG) LPropCompareProp(LPSPropValue lpSPropValueA,LPSPropValue lpSPropValueB);
  92. STDAPI_(HRESULT) HrAddColumns(LPMAPITABLE lptbl,LPSPropTagArray lpproptagColumnsNew,LPALLOCATEBUFFER lpAllocateBuffer,LPFREEBUFFER lpFreeBuffer);
  93. STDAPI_(HRESULT) HrAddColumnsEx(LPMAPITABLE lptbl,LPSPropTagArray lpproptagColumnsNew,LPALLOCATEBUFFER lpAllocateBuffer,LPFREEBUFFER lpFreeBuffer,void (*lpfnFilterColumns)(LPSPropTagArray ptaga));
  94. STDAPI HrAllocAdviseSink(LPNOTIFCALLBACK lpfnCallback,LPVOID lpvContext,LPMAPIADVISESINK *lppAdviseSink);
  95. STDAPI HrThisThreadAdviseSink(LPMAPIADVISESINK lpAdviseSink,LPMAPIADVISESINK *lppAdviseSink);
  96. STDAPI HrDispatchNotifications(ULONG ulFlags);
  97. typedef struct {
  98. ULONG ulCtlType;
  99. ULONG ulCtlFlags;
  100. LPBYTE lpbNotif;
  101. ULONG cbNotif;
  102. LPTSTR lpszFilter;
  103. ULONG ulItemID;
  104. union {
  105. LPVOID lpv;
  106. LPDTBLLABEL lplabel;
  107. LPDTBLEDIT lpedit;
  108. LPDTBLLBX lplbx;
  109. LPDTBLCOMBOBOX lpcombobox;
  110. LPDTBLDDLBX lpddlbx;
  111. LPDTBLCHECKBOX lpcheckbox;
  112. LPDTBLGROUPBOX lpgroupbox;
  113. LPDTBLBUTTON lpbutton;
  114. LPDTBLRADIOBUTTON lpradiobutton;
  115. LPDTBLMVLISTBOX lpmvlbx;
  116. LPDTBLMVDDLBX lpmvddlbx;
  117. LPDTBLPAGE lppage;
  118. } ctl;
  119. } DTCTL,*LPDTCTL;
  120. typedef struct {
  121. ULONG cctl;
  122. LPTSTR lpszResourceName;
  123. __C89_NAMELESS union {
  124. LPTSTR lpszComponent;
  125. ULONG ulItemID;
  126. };
  127. LPDTCTL lpctl;
  128. } DTPAGE,*LPDTPAGE;
  129. STDAPI BuildDisplayTable(LPALLOCATEBUFFER lpAllocateBuffer,LPALLOCATEMORE lpAllocateMore,LPFREEBUFFER lpFreeBuffer,LPMALLOC lpMalloc,HINSTANCE hInstance,UINT cPages,LPDTPAGE lpPage,ULONG ulFlags,LPMAPITABLE *lppTable,LPTABLEDATA *lppTblData);
  130. STDAPI_(SCODE) ScCountNotifications(int cNotifications,LPNOTIFICATION lpNotifications,ULONG *lpcb);
  131. STDAPI_(SCODE) ScCopyNotifications(int cNotification,LPNOTIFICATION lpNotifications,LPVOID lpvDst,ULONG *lpcb);
  132. STDAPI_(SCODE) ScRelocNotifications(int cNotification,LPNOTIFICATION lpNotifications,LPVOID lpvBaseOld,LPVOID lpvBaseNew,ULONG *lpcb);
  133. STDAPI_(SCODE) ScCountProps(int cValues,LPSPropValue lpPropArray,ULONG *lpcb);
  134. STDAPI_(LPSPropValue) LpValFindProp(ULONG ulPropTag,ULONG cValues,LPSPropValue lpPropArray);
  135. STDAPI_(SCODE) ScCopyProps(int cValues,LPSPropValue lpPropArray,LPVOID lpvDst,ULONG *lpcb);
  136. STDAPI_(SCODE) ScRelocProps(int cValues,LPSPropValue lpPropArray,LPVOID lpvBaseOld,LPVOID lpvBaseNew,ULONG *lpcb);
  137. STDAPI_(SCODE) ScDupPropset(int cValues,LPSPropValue lpPropArray,LPALLOCATEBUFFER lpAllocateBuffer,LPSPropValue *lppPropArray);
  138. STDAPI_(ULONG) UlAddRef(LPVOID lpunk);
  139. STDAPI_(ULONG) UlRelease(LPVOID lpunk);
  140. STDAPI HrGetOneProp(LPMAPIPROP lpMapiProp,ULONG ulPropTag,LPSPropValue *lppProp);
  141. STDAPI HrSetOneProp(LPMAPIPROP lpMapiProp,LPSPropValue lpProp);
  142. STDAPI_(WINBOOL) FPropExists(LPMAPIPROP lpMapiProp,ULONG ulPropTag);
  143. STDAPI_(LPSPropValue) PpropFindProp(LPSPropValue lpPropArray,ULONG cValues,ULONG ulPropTag);
  144. STDAPI_(void) FreePadrlist(LPADRLIST lpAdrlist);
  145. STDAPI_(void) FreeProws(LPSRowSet lpRows);
  146. STDAPI HrQueryAllRows(LPMAPITABLE lpTable,LPSPropTagArray lpPropTags,LPSRestriction lpRestriction,LPSSortOrderSet lpSortOrderSet,LONG crowsMax,LPSRowSet *lppRows);
  147. STDAPI_(LPTSTR) SzFindCh(LPCTSTR lpsz,USHORT ch);
  148. STDAPI_(LPTSTR) SzFindLastCh(LPCTSTR lpsz,USHORT ch);
  149. STDAPI_(LPTSTR) SzFindSz(LPCTSTR lpsz,LPCTSTR lpszKey);
  150. STDAPI_(unsigned int) UFromSz(LPCTSTR lpsz);
  151. STDAPI_(SCODE) ScUNCFromLocalPath(LPSTR lpszLocal,LPSTR lpszUNC,UINT cchUNC);
  152. STDAPI_(SCODE) ScLocalPathFromUNC(LPSTR lpszUNC,LPSTR lpszLocal,UINT cchLocal);
  153. STDAPI_(FILETIME) FtAddFt(FILETIME ftAddend1,FILETIME ftAddend2);
  154. STDAPI_(FILETIME) FtMulDwDw(DWORD ftMultiplicand,DWORD ftMultiplier);
  155. STDAPI_(FILETIME) FtMulDw(DWORD ftMultiplier,FILETIME ftMultiplicand);
  156. STDAPI_(FILETIME) FtSubFt(FILETIME ftMinuend,FILETIME ftSubtrahend);
  157. STDAPI_(FILETIME) FtNegFt(FILETIME ft);
  158. STDAPI_(SCODE) ScCreateConversationIndex(ULONG cbParent,LPBYTE lpbParent,ULONG *lpcbConvIndex,LPBYTE *lppbConvIndex);
  159. STDAPI WrapStoreEntryID(ULONG ulFlags,LPTSTR lpszDLLName,ULONG cbOrigEntry,LPENTRYID lpOrigEntry,ULONG *lpcbWrappedEntry,LPENTRYID *lppWrappedEntry);
  160. #define RTF_SYNC_RTF_CHANGED ((ULONG) 0x00000001)
  161. #define RTF_SYNC_BODY_CHANGED ((ULONG) 0x00000002)
  162. STDAPI_(HRESULT) RTFSync (LPMESSAGE lpMessage,ULONG ulFlags,WINBOOL *lpfMessageUpdated);
  163. STDAPI_(HRESULT) WrapCompressedRTFStream (LPSTREAM lpCompressedRTFStream,ULONG ulFlags,LPSTREAM *lpUncompressedRTFStream);
  164. STDAPI_(HRESULT) HrIStorageFromStream (LPUNKNOWN lpUnkIn,LPCIID lpInterface,ULONG ulFlags,LPSTORAGE *lppStorageOut);
  165. STDAPI_(SCODE) ScInitMapiUtil(ULONG ulFlags);
  166. STDAPI_(VOID) DeinitMapiUtil(VOID);
  167. #ifdef _X86_
  168. #define szHrDispatchNotifications "_HrDispatchNotifications@4"
  169. #endif
  170. typedef HRESULT (WINAPI DISPATCHNOTIFICATIONS)(ULONG ulFlags);
  171. typedef DISPATCHNOTIFICATIONS *LPDISPATCHNOTIFICATIONS;
  172. #ifdef _X86_
  173. #define szScCreateConversationIndex "_ScCreateConversationIndex@16"
  174. #endif
  175. typedef SCODE (WINAPI CREATECONVERSATIONINDEX)(ULONG cbParent,LPBYTE lpbParent,ULONG *lpcbConvIndex,LPBYTE *lppbConvIndex);
  176. typedef CREATECONVERSATIONINDEX *LPCREATECONVERSATIONINDEX;
  177. #ifdef __cplusplus
  178. }
  179. #endif
  180. #endif