mapiutil.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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 _MAPIUTIL_H_
  7. #define _MAPIUTIL_H_
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #include <mapix.h>
  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. STDAPI_(SCODE) CreateIProp(LPCIID lpInterface,ALLOCATEBUFFER *lpAllocateBuffer,ALLOCATEMORE *lpAllocateMore,FREEBUFFER *lpFreeBuffer,LPVOID lpvReserved,LPPROPDATA *lppPropData);
  38. #define IPROP_READONLY ((ULONG) 0x00000001)
  39. #define IPROP_READWRITE ((ULONG) 0x00000002)
  40. #define IPROP_CLEAN ((ULONG) 0x00010000)
  41. #define IPROP_DIRTY ((ULONG) 0x00020000)
  42. #ifndef NOIDLEENGINE
  43. #define PRILOWEST -32768
  44. #define PRIHIGHEST 32767
  45. #define PRIUSER 0
  46. #define IRONULL ((USHORT) 0x0000)
  47. #define FIROWAIT ((USHORT) 0x0001)
  48. #define FIROINTERVAL ((USHORT) 0x0002)
  49. #define FIROPERBLOCK ((USHORT) 0x0004)
  50. #define FIRODISABLED ((USHORT) 0x0020)
  51. #define FIROONCEONLY ((USHORT) 0x0040)
  52. #define IRCNULL ((USHORT) 0x0000)
  53. #define FIRCPFN ((USHORT) 0x0001)
  54. #define FIRCPV ((USHORT) 0x0002)
  55. #define FIRCPRI ((USHORT) 0x0004)
  56. #define FIRCCSEC ((USHORT) 0x0008)
  57. #define FIRCIRO ((USHORT) 0x0010)
  58. typedef WINBOOL (WINAPI FNIDLE) (LPVOID);
  59. typedef FNIDLE *PFNIDLE;
  60. typedef void *FTG;
  61. typedef FTG *PFTG;
  62. #define FTGNULL ((FTG) NULL)
  63. STDAPI_(LONG) MAPIInitIdle (LPVOID lpvReserved);
  64. STDAPI_(VOID) MAPIDeinitIdle (VOID);
  65. STDAPI_(FTG) FtgRegisterIdleRoutine (PFNIDLE lpfnIdle,LPVOID lpvIdleParam,short priIdle,ULONG csecIdle,USHORT iroIdle);
  66. STDAPI_(void) DeregisterIdleRoutine (FTG ftg);
  67. STDAPI_(void) EnableIdleRoutine (FTG ftg,WINBOOL fEnable);
  68. STDAPI_(void) ChangeIdleRoutine (FTG ftg,PFNIDLE lpfnIdle,LPVOID lpvIdleParam,short priIdle,ULONG csecIdle,USHORT iroIdle,USHORT ircIdle);
  69. #endif
  70. STDAPI_(LPMALLOC) MAPIGetDefaultMalloc(VOID);
  71. #define SOF_UNIQUEFILENAME ((ULONG) 0x80000000)
  72. STDMETHODIMP OpenStreamOnFile(LPALLOCATEBUFFER lpAllocateBuffer,LPFREEBUFFER lpFreeBuffer,ULONG ulFlags,LPTSTR lpszFileName,LPTSTR lpszPrefix,LPSTREAM *lppStream);
  73. typedef HRESULT (WINAPI *LPOPENSTREAMONFILE) (LPALLOCATEBUFFER lpAllocateBuffer,LPFREEBUFFER lpFreeBuffer,ULONG ulFlags,LPTSTR lpszFileName,LPTSTR lpszPrefix,LPSTREAM *lppStream);
  74. #define OPENSTREAMONFILE "OpenStreamOnFile"
  75. STDAPI_(SCODE) PropCopyMore(LPSPropValue lpSPropValueDest,LPSPropValue lpSPropValueSrc,ALLOCATEMORE *lpfAllocMore,LPVOID lpvObject);
  76. STDAPI_(ULONG) UlPropSize(LPSPropValue lpSPropValue);
  77. STDAPI_(WINBOOL) FEqualNames(LPMAPINAMEID lpName1,LPMAPINAMEID lpName2);
  78. #if !defined(_WINNT) && !defined(_WIN95)
  79. #define _WINNT
  80. #endif
  81. STDAPI_(void) GetInstance(LPSPropValue lpPropMv,LPSPropValue lpPropSv,ULONG uliInst);
  82. extern char rgchCsds[];
  83. extern char rgchCids[];
  84. extern char rgchCsdi[];
  85. extern char rgchCidi[];
  86. STDAPI_(WINBOOL) FPropContainsProp(LPSPropValue lpSPropValueDst,LPSPropValue lpSPropValueSrc,ULONG ulFuzzyLevel);
  87. STDAPI_(WINBOOL) FPropCompareProp(LPSPropValue lpSPropValue1,ULONG ulRelOp,LPSPropValue lpSPropValue2);
  88. STDAPI_(LONG) LPropCompareProp(LPSPropValue lpSPropValueA,LPSPropValue lpSPropValueB);
  89. STDAPI_(HRESULT) HrAddColumns(LPMAPITABLE lptbl,LPSPropTagArray lpproptagColumnsNew,LPALLOCATEBUFFER lpAllocateBuffer,LPFREEBUFFER lpFreeBuffer);
  90. STDAPI_(HRESULT) HrAddColumnsEx(LPMAPITABLE lptbl,LPSPropTagArray lpproptagColumnsNew,LPALLOCATEBUFFER lpAllocateBuffer,LPFREEBUFFER lpFreeBuffer,void (*lpfnFilterColumns)(LPSPropTagArray ptaga));
  91. STDAPI HrAllocAdviseSink(LPNOTIFCALLBACK lpfnCallback,LPVOID lpvContext,LPMAPIADVISESINK *lppAdviseSink);
  92. STDAPI HrThisThreadAdviseSink(LPMAPIADVISESINK lpAdviseSink,LPMAPIADVISESINK *lppAdviseSink);
  93. STDAPI HrDispatchNotifications(ULONG ulFlags);
  94. typedef struct {
  95. ULONG ulCtlType;
  96. ULONG ulCtlFlags;
  97. LPBYTE lpbNotif;
  98. ULONG cbNotif;
  99. LPTSTR lpszFilter;
  100. ULONG ulItemID;
  101. union {
  102. LPVOID lpv;
  103. LPDTBLLABEL lplabel;
  104. LPDTBLEDIT lpedit;
  105. LPDTBLLBX lplbx;
  106. LPDTBLCOMBOBOX lpcombobox;
  107. LPDTBLDDLBX lpddlbx;
  108. LPDTBLCHECKBOX lpcheckbox;
  109. LPDTBLGROUPBOX lpgroupbox;
  110. LPDTBLBUTTON lpbutton;
  111. LPDTBLRADIOBUTTON lpradiobutton;
  112. LPDTBLMVLISTBOX lpmvlbx;
  113. LPDTBLMVDDLBX lpmvddlbx;
  114. LPDTBLPAGE lppage;
  115. } ctl;
  116. } DTCTL,*LPDTCTL;
  117. typedef struct {
  118. ULONG cctl;
  119. LPTSTR lpszResourceName;
  120. __C89_NAMELESS union {
  121. LPTSTR lpszComponent;
  122. ULONG ulItemID;
  123. };
  124. LPDTCTL lpctl;
  125. } DTPAGE,*LPDTPAGE;
  126. STDAPI BuildDisplayTable(LPALLOCATEBUFFER lpAllocateBuffer,LPALLOCATEMORE lpAllocateMore,LPFREEBUFFER lpFreeBuffer,LPMALLOC lpMalloc,HINSTANCE hInstance,UINT cPages,LPDTPAGE lpPage,ULONG ulFlags,LPMAPITABLE *lppTable,LPTABLEDATA *lppTblData);
  127. STDAPI_(SCODE) ScCountNotifications(int cNotifications,LPNOTIFICATION lpNotifications,ULONG *lpcb);
  128. STDAPI_(SCODE) ScCopyNotifications(int cNotification,LPNOTIFICATION lpNotifications,LPVOID lpvDst,ULONG *lpcb);
  129. STDAPI_(SCODE) ScRelocNotifications(int cNotification,LPNOTIFICATION lpNotifications,LPVOID lpvBaseOld,LPVOID lpvBaseNew,ULONG *lpcb);
  130. STDAPI_(SCODE) ScCountProps(int cValues,LPSPropValue lpPropArray,ULONG *lpcb);
  131. STDAPI_(LPSPropValue) LpValFindProp(ULONG ulPropTag,ULONG cValues,LPSPropValue lpPropArray);
  132. STDAPI_(SCODE) ScCopyProps(int cValues,LPSPropValue lpPropArray,LPVOID lpvDst,ULONG *lpcb);
  133. STDAPI_(SCODE) ScRelocProps(int cValues,LPSPropValue lpPropArray,LPVOID lpvBaseOld,LPVOID lpvBaseNew,ULONG *lpcb);
  134. STDAPI_(SCODE) ScDupPropset(int cValues,LPSPropValue lpPropArray,LPALLOCATEBUFFER lpAllocateBuffer,LPSPropValue *lppPropArray);
  135. STDAPI_(ULONG) UlAddRef(LPVOID lpunk);
  136. STDAPI_(ULONG) UlRelease(LPVOID lpunk);
  137. STDAPI HrGetOneProp(LPMAPIPROP lpMapiProp,ULONG ulPropTag,LPSPropValue *lppProp);
  138. STDAPI HrSetOneProp(LPMAPIPROP lpMapiProp,LPSPropValue lpProp);
  139. STDAPI_(WINBOOL) FPropExists(LPMAPIPROP lpMapiProp,ULONG ulPropTag);
  140. STDAPI_(LPSPropValue) PpropFindProp(LPSPropValue lpPropArray,ULONG cValues,ULONG ulPropTag);
  141. STDAPI_(void) FreePadrlist(LPADRLIST lpAdrlist);
  142. STDAPI_(void) FreeProws(LPSRowSet lpRows);
  143. STDAPI HrQueryAllRows(LPMAPITABLE lpTable,LPSPropTagArray lpPropTags,LPSRestriction lpRestriction,LPSSortOrderSet lpSortOrderSet,LONG crowsMax,LPSRowSet *lppRows);
  144. #define MAPI_FORCE_CREATE 1
  145. #define MAPI_FULL_IPM_TREE 2
  146. STDAPI HrValidateIPMSubtree(LPMDB lpMDB,ULONG ulFlags,ULONG *lpcValues,LPSPropValue *lppValues,LPMAPIERROR *lpperr);
  147. STDAPI_(WINBOOL) FBinFromHex(LPTSTR lpsz,LPBYTE lpb);
  148. STDAPI_(SCODE) ScBinFromHexBounded(LPTSTR lpsz,LPBYTE lpb,ULONG cb);
  149. STDAPI_(void) HexFromBin(LPBYTE lpb,int cb,LPTSTR lpsz);
  150. STDAPI_(ULONG) UlFromSzHex(LPCTSTR lpsz);
  151. STDAPI HrEntryIDFromSz(LPTSTR lpsz,ULONG *lpcb,LPENTRYID *lppEntryID);
  152. STDAPI HrSzFromEntryID(ULONG cb,LPENTRYID lpEntryID,LPTSTR *lpsz);
  153. STDAPI HrComposeEID(LPMAPISESSION lpSession,ULONG cbStoreRecordKey,LPBYTE lpStoreRecordKey,ULONG cbMsgEntryID,LPENTRYID lpMsgEntryID,ULONG *lpcbEID,LPENTRYID *lppEntryID);
  154. STDAPI HrDecomposeEID(LPMAPISESSION lpSession,ULONG cbEntryID,LPENTRYID lpEntryID,ULONG *lpcbStoreEntryID,LPENTRYID *lppStoreEntryID,ULONG *lpcbMsgEntryID,LPENTRYID *lppMsgEntryID);
  155. STDAPI HrComposeMsgID(LPMAPISESSION lpSession,ULONG cbStoreSearchKey,LPBYTE pStoreSearchKey,ULONG cbMsgEntryID,LPENTRYID lpMsgEntryID,LPTSTR *lpszMsgID);
  156. STDAPI HrDecomposeMsgID(LPMAPISESSION lpSession,LPTSTR lpszMsgID,ULONG *lpcbStoreEntryID,LPENTRYID *lppStoreEntryID,ULONG *lppcbMsgEntryID,LPENTRYID *lppMsgEntryID);
  157. STDAPI_(LPTSTR) SzFindCh(LPCTSTR lpsz,USHORT ch);
  158. STDAPI_(LPTSTR) SzFindLastCh(LPCTSTR lpsz,USHORT ch);
  159. STDAPI_(LPTSTR) SzFindSz(LPCTSTR lpsz,LPCTSTR lpszKey);
  160. STDAPI_(unsigned int) UFromSz(LPCTSTR lpsz);
  161. STDAPI_(SCODE) ScUNCFromLocalPath(LPSTR lpszLocal,LPSTR lpszUNC,UINT cchUNC);
  162. STDAPI_(SCODE) ScLocalPathFromUNC(LPSTR lpszUNC,LPSTR lpszLocal,UINT cchLocal);
  163. STDAPI_(FILETIME) FtAddFt(FILETIME ftAddend1,FILETIME ftAddend2);
  164. STDAPI_(FILETIME) FtMulDwDw(DWORD ftMultiplicand,DWORD ftMultiplier);
  165. STDAPI_(FILETIME) FtMulDw(DWORD ftMultiplier,FILETIME ftMultiplicand);
  166. STDAPI_(FILETIME) FtSubFt(FILETIME ftMinuend,FILETIME ftSubtrahend);
  167. STDAPI_(FILETIME) FtNegFt(FILETIME ft);
  168. STDAPI_(SCODE) ScCreateConversationIndex(ULONG cbParent,LPBYTE lpbParent,ULONG *lpcbConvIndex,LPBYTE *lppbConvIndex);
  169. STDAPI WrapStoreEntryID(ULONG ulFlags,LPTSTR lpszDLLName,ULONG cbOrigEntry,LPENTRYID lpOrigEntry,ULONG *lpcbWrappedEntry,LPENTRYID *lppWrappedEntry);
  170. #define RTF_SYNC_RTF_CHANGED ((ULONG) 0x00000001)
  171. #define RTF_SYNC_BODY_CHANGED ((ULONG) 0x00000002)
  172. STDAPI_(HRESULT) RTFSync(LPMESSAGE lpMessage,ULONG ulFlags,WINBOOL *lpfMessageUpdated);
  173. STDAPI_(HRESULT) WrapCompressedRTFStream(LPSTREAM lpCompressedRTFStream,ULONG ulFlags,LPSTREAM *lpUncompressedRTFStream);
  174. STDAPI_(HRESULT) HrIStorageFromStream(LPUNKNOWN lpUnkIn,LPCIID lpInterface,ULONG ulFlags,LPSTORAGE *lppStorageOut);
  175. STDAPI_(SCODE) ScInitMapiUtil(ULONG ulFlags);
  176. STDAPI_(VOID) DeinitMapiUtil(VOID);
  177. #ifdef _X86_
  178. #define szHrDispatchNotifications "_HrDispatchNotifications@4"
  179. #elif defined(_IA64_)
  180. #define szHrDispatchNotifications "HrDispatchNotifications"
  181. #endif
  182. typedef HRESULT (WINAPI DISPATCHNOTIFICATIONS)(ULONG ulFlags);
  183. typedef DISPATCHNOTIFICATIONS *LPDISPATCHNOTIFICATIONS;
  184. #ifdef _X86_
  185. #define szScCreateConversationIndex "_ScCreateConversationIndex@16"
  186. #elif defined(_IA64_)
  187. #define szScCreateConversationIndex "ScCreateConversationIndex"
  188. #endif
  189. typedef SCODE (WINAPI CREATECONVERSATIONINDEX)(ULONG cbParent,LPBYTE lpbParent,ULONG *lpcbConvIndex,LPBYTE *lppbConvIndex);
  190. typedef CREATECONVERSATIONINDEX *LPCREATECONVERSATIONINDEX;
  191. #ifdef __cplusplus
  192. }
  193. #endif
  194. #endif