mapidefs.i 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. %module mapidefs
  2. %{
  3. #undef LOCK_WRITE
  4. #undef LOCK_EXCLUSIVE
  5. #include <mapidefs.h>
  6. %}
  7. #define MAPI_MODIFY (0x00000001)
  8. #define MAPI_ACCESS_MODIFY (0x00000001)
  9. #define MAPI_ACCESS_READ (0x00000002)
  10. #define MAPI_ACCESS_DELETE (0x00000004)
  11. #define MAPI_ACCESS_CREATE_HIERARCHY (0x00000008)
  12. #define MAPI_ACCESS_CREATE_CONTENTS (0x00000010)
  13. #define MAPI_ACCESS_CREATE_ASSOCIATED (0x00000020)
  14. %constant unsigned int MAPI_UNICODE = 0x80000000;
  15. #define hrSuccess 0
  16. #define MAPI_SHORTTERM 0x80
  17. #define MAPI_NOTRECIP 0x40
  18. #define MAPI_THISSESSION 0x20
  19. #define MAPI_NOW 0x10
  20. #define MAPI_NOTRESERVED 0x08
  21. #define MAPI_COMPOUND 0x80
  22. #define MAPI_ONE_OFF_UID { 0x81, 0x2b, 0x1f, 0xa4, 0xbe, 0xa3, 0x10, 0x19, \
  23. 0x9d, 0x6e, 0x00, 0xdd, 0x01, 0x0f, 0x54, 0x02 }
  24. #define MAPI_ONE_OFF_UNICODE 0x8000
  25. #define MAPI_ONE_OFF_NO_RICH_INFO 0x0001
  26. #define MAPI_STORE (0x00000001)
  27. #define MAPI_ADDRBOOK (0x00000002)
  28. #define MAPI_FOLDER (0x00000003)
  29. #define MAPI_ABCONT (0x00000004)
  30. #define MAPI_MESSAGE (0x00000005)
  31. #define MAPI_MAILUSER (0x00000006)
  32. #define MAPI_ATTACH (0x00000007)
  33. #define MAPI_DISTLIST (0x00000008)
  34. #define MAPI_PROFSECT (0x00000009)
  35. #define MAPI_STATUS (0x0000000A)
  36. #define MAPI_SESSION (0x0000000B)
  37. #define MAPI_FORMINFO (0x0000000C)
  38. #define MV_FLAG 0x1000
  39. #define PT_UNSPECIFIED (0x0000)
  40. #define PT_NULL (0x0001)
  41. #define PT_SHORT (0x0002)
  42. #define PT_LONG (0x0003)
  43. #define PT_FLOAT (0x0004)
  44. #define PT_DOUBLE (0x0005)
  45. #define PT_CURRENCY (0x0006)
  46. #define PT_APPTIME (0x0007)
  47. #define PT_ERROR (0x000A)
  48. #define PT_BOOLEAN (0x000B)
  49. #define PT_OBJECT (0x000D)
  50. #define PT_LONGLONG (0x0014)
  51. #define PT_STRING8 (0x001E)
  52. #define PT_UNICODE (0x001F)
  53. #define PT_SYSTIME (0x0040)
  54. #define PT_CLSID (0x0048)
  55. #define PT_SVREID (0x00FB)
  56. #define PT_SRESTRICT (0x00FD)
  57. #define PT_ACTIONS (0x00FE)
  58. #define PT_BINARY (0x0102)
  59. #define PT_I2 PT_SHORT
  60. #define PT_I4 PT_LONG
  61. #define PT_R4 PT_FLOAT
  62. #define PT_R8 PT_DOUBLE
  63. #define PT_I8 PT_LONGLONG
  64. #define PT_MV_SHORT (MV_FLAG|PT_SHORT)
  65. #define PT_MV_LONG (MV_FLAG|PT_LONG)
  66. #define PT_MV_FLOAT (MV_FLAG|PT_FLOAT)
  67. #define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE)
  68. #define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY)
  69. #define PT_MV_APPTIME (MV_FLAG|PT_APPTIME)
  70. #define PT_MV_SYSTIME (MV_FLAG|PT_SYSTIME)
  71. #define PT_MV_STRING8 (MV_FLAG|PT_STRING8)
  72. #define PT_MV_BINARY (MV_FLAG|PT_BINARY)
  73. #define PT_MV_UNICODE (MV_FLAG|PT_UNICODE)
  74. #define PT_MV_CLSID (MV_FLAG|PT_CLSID)
  75. #define PT_MV_LONGLONG (MV_FLAG|PT_LONGLONG)
  76. #define PT_MV_I2 PT_MV_SHORT
  77. #define PT_MV_I4 PT_MV_LONG
  78. #define PT_MV_R4 PT_MV_FLOAT
  79. #define PT_MV_R8 PT_MV_DOUBLE
  80. #define PT_MV_I8 PT_MV_LONGLONG
  81. #define MV_INSTANCE 0x2000
  82. #define MVI_FLAG (MV_FLAG | MV_INSTANCE)
  83. #define MVI_PROP(tag) ((tag) | MVI_FLAG)
  84. #define MAPI_ERROR_VERSION 0x00000000L
  85. #define KEEP_OPEN_READONLY (0x00000001)
  86. #define KEEP_OPEN_READWRITE (0x00000002)
  87. #define FORCE_SAVE (0x00000004)
  88. #define MAPI_CREATE (0x00000002)
  89. #define STREAM_APPEND (0x00000004)
  90. #define MAPI_MOVE (0x00000001)
  91. #define MAPI_NOREPLACE (0x00000002)
  92. #define MAPI_DECLINE_OK (0x00000004)
  93. #define MAPI_NO_STRINGS (0x00000001)
  94. #define MAPI_NO_IDS (0x00000002)
  95. #define MNID_ID 0
  96. #define MNID_STRING 1
  97. class IMAPIProp : public IUnknown {
  98. public:
  99. // virtual ~IMAPIProp() = 0;
  100. virtual HRESULT GetLastError(HRESULT hResult, ULONG ulFlags, LPMAPIERROR* OUTPUT /*lppMAPIError*/) = 0;
  101. virtual HRESULT SaveChanges(ULONG ulFlags) = 0;
  102. virtual HRESULT GetProps(const SPropTagArray *lpPropTagArray, ULONG ulFlags, ULONG *OUTPUTC /*lpcValues*/, LPSPropValue *OUTPUTP /*lppPropArray*/) = 0;
  103. virtual HRESULT GetPropList(ULONG ulFlags, LPSPropTagArray* OUTPUT /*lppPropTagArray*/) = 0;
  104. virtual HRESULT OpenProperty(ULONG ulPropTag, LPCIID USE_IID_FOR_OUTPUT, ULONG ulInterfaceOptions, ULONG ulFlags, LPUNKNOWN* OUTPUT_USE_IID /*lppUnk*/) = 0;
  105. virtual HRESULT SetProps(ULONG cValues, const SPropValue *lpProps, LPSPropProblemArray *OUTPUT /*lppProblems*/) = 0;
  106. virtual HRESULT DeleteProps(const SPropTagArray *lpPropTagArray, LPSPropProblemArray *OUTPUT /*lppProblems*/) = 0;
  107. virtual HRESULT CopyTo(ULONG cInterfaces, LPCIID lpInterfaces, const SPropTagArray *lpExcludeProps, ULONG ulUIParam, IMAPIProgress *lpProgress, LPCIID lpInterface, void *lpDestObj, ULONG ulFlags, LPSPropProblemArray *OUTPUT /*lppProblems*/) = 0;
  108. virtual HRESULT CopyProps(const SPropTagArray *lpIncludeProps, ULONG ulUIParam, IMAPIProgress *lpProgress, LPCIID lpInterface, void *lpDestObj, ULONG ulFlags, LPSPropProblemArray *OUTPUT /*lppProblems*/) = 0;
  109. virtual HRESULT GetNamesFromIDs(LPSPropTagArray* lppPropTags, LPGUID lpPropSetGuid, ULONG ulFlags, ULONG* OUTPUTC,
  110. LPMAPINAMEID** OUTPUTP /*lpppPropNames*/) = 0;
  111. virtual HRESULT GetIDsFromNames(ULONG cPropNames, LPMAPINAMEID* lppPropNames, ULONG ulFlags, LPSPropTagArray* OUTPUT /*lppPropTags*/) = 0;
  112. %extend {
  113. ~IMAPIProp() { self->Release(); }
  114. }
  115. };
  116. #define MAPI_BEST_ACCESS (0x00000010)
  117. #define CONVENIENT_DEPTH (0x00000001)
  118. #define SEARCH_RUNNING (0x00000001)
  119. #define SEARCH_REBUILD (0x00000002)
  120. #define SEARCH_RECURSIVE (0x00000004)
  121. #define SEARCH_FOREGROUND (0x00000008)
  122. #define STOP_SEARCH (0x00000001)
  123. #define RESTART_SEARCH (0x00000002)
  124. #define RECURSIVE_SEARCH (0x00000004)
  125. #define SHALLOW_SEARCH (0x00000008)
  126. #define FOREGROUND_SEARCH (0x00000010)
  127. #define BACKGROUND_SEARCH (0x00000020)
  128. class IMAPIContainer : public IMAPIProp {
  129. public:
  130. // virtual ~IMAPIContainer() = 0;
  131. virtual HRESULT GetContentsTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  132. virtual HRESULT GetHierarchyTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  133. virtual HRESULT OpenEntry(ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, ULONG* OUTPUT /* lpulObjType */,
  134. IUnknown ** OUTPUT /*lppUnk*/) = 0;
  135. virtual HRESULT SetSearchCriteria(LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) = 0;
  136. virtual HRESULT GetSearchCriteria(ULONG ulFlags, LPSRestriction* OUTPUT /*lppRestriction*/, LPENTRYLIST* OUTPUT /*lppContainerList*/,
  137. ULONG* OUTPUT /*lpulSearchState*/) = 0;
  138. %extend {
  139. ~IMAPIContainer() { self->Release(); }
  140. }
  141. };
  142. #define fnevCriticalError (0x00000001)
  143. #define fnevNewMail (0x00000002)
  144. #define fnevObjectCreated (0x00000004)
  145. #define fnevObjectDeleted (0x00000008)
  146. #define fnevObjectModified (0x00000010)
  147. #define fnevObjectMoved (0x00000020)
  148. #define fnevObjectCopied (0x00000040)
  149. #define fnevSearchComplete (0x00000080)
  150. #define fnevTableModified (0x00000100)
  151. #define fnevStatusObjectModified (0x00000200)
  152. #define fnevReservedForMapi (0x40000000)
  153. #define fnevExtended (0x80000000)
  154. #define TABLE_CHANGED 1
  155. #define TABLE_ERROR 2
  156. #define TABLE_ROW_ADDED 3
  157. #define TABLE_ROW_DELETED 4
  158. #define TABLE_ROW_MODIFIED 5
  159. #define TABLE_SORT_DONE 6
  160. #define TABLE_RESTRICT_DONE 7
  161. #define TABLE_SETCOL_DONE 8
  162. #define TABLE_RELOAD 9
  163. /* Interface used for registering and issuing notification callbacks. */
  164. class IMAPIAdviseSink : public IUnknown {
  165. public:
  166. virtual ULONG OnNotify(ULONG cNotif, LPNOTIFICATION lpNotifications) = 0;
  167. %extend {
  168. ~IMAPIAdviseSink() { self->Release(); }
  169. }
  170. };
  171. #if SWIGPYTHON
  172. %{
  173. #include <kopano/swig_iunknown.h>
  174. typedef IUnknownImplementor<IMAPIAdviseSink> MAPIAdviseSink;
  175. typedef IUnknownImplementor<IMAPIProp> MAPIProp;
  176. typedef IUnknownImplementor<IMessage> Message;
  177. typedef IUnknownImplementor<IAttach> Attach;
  178. typedef IUnknownImplementor<IMAPITable> MAPITable;
  179. %}
  180. %feature("director") MAPIAdviseSink;
  181. %feature("nodirector") MAPIAdviseSink::QueryInterface;
  182. class MAPIAdviseSink : public IMAPIAdviseSink {
  183. public:
  184. MAPIAdviseSink(ULONG cInterfaces, LPCIID lpInterfaces);
  185. %extend {
  186. virtual ~MAPIAdviseSink() { delete self; }
  187. }
  188. };
  189. #endif // SWIGPYTHON
  190. #define STORE_ENTRYID_UNIQUE (0x00000001)
  191. #define STORE_READONLY (0x00000002)
  192. #define STORE_SEARCH_OK (0x00000004)
  193. #define STORE_MODIFY_OK (0x00000008)
  194. #define STORE_CREATE_OK (0x00000010)
  195. #define STORE_ATTACH_OK (0x00000020)
  196. #define STORE_OLE_OK (0x00000040)
  197. #define STORE_SUBMIT_OK (0x00000080)
  198. #define STORE_NOTIFY_OK (0x00000100)
  199. #define STORE_MV_PROPS_OK (0x00000200)
  200. #define STORE_CATEGORIZE_OK (0x00000400)
  201. #define STORE_RTF_OK (0x00000800)
  202. #define STORE_RESTRICTION_OK (0x00001000)
  203. #define STORE_SORT_OK (0x00002000)
  204. #define STORE_PUBLIC_FOLDERS (0x00004000)
  205. #define STORE_UNCOMPRESSED_RTF (0x00008000)
  206. #define STORE_HAS_SEARCHES (0x01000000)
  207. #define LOGOFF_NO_WAIT (0x00000001)
  208. #define LOGOFF_ORDERLY (0x00000002)
  209. #define LOGOFF_PURGE (0x00000004)
  210. #define LOGOFF_ABORT (0x00000008)
  211. #define LOGOFF_QUIET (0x00000010)
  212. #define LOGOFF_COMPLETE (0x00010000)
  213. #define LOGOFF_INBOUND (0x00020000)
  214. #define LOGOFF_OUTBOUND (0x00040000)
  215. #define LOGOFF_OUTBOUND_QUEUE (0x00080000)
  216. #define MSG_LOCKED (0x00000001)
  217. #define MSG_UNLOCKED (0x00000000)
  218. #define FOLDER_IPM_SUBTREE_VALID (0x00000001)
  219. #define FOLDER_IPM_INBOX_VALID (0x00000002)
  220. #define FOLDER_IPM_OUTBOX_VALID (0x00000004)
  221. #define FOLDER_IPM_WASTEBASKET_VALID (0x00000008)
  222. #define FOLDER_IPM_SENTMAIL_VALID (0x00000010)
  223. #define FOLDER_VIEWS_VALID (0x00000020)
  224. #define FOLDER_COMMON_VIEWS_VALID (0x00000040)
  225. #define FOLDER_FINDER_VALID (0x00000080)
  226. class IMsgStore : public IMAPIProp {
  227. public:
  228. // virtual ~IMsgStore() = 0;
  229. virtual HRESULT Advise(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulEventMask, IMAPIAdviseSink *lpAdviseSink,
  230. ULONG* OUTPUT /*lpulConnection*/) = 0;
  231. virtual HRESULT Unadvise(ULONG ulConnection) = 0;
  232. virtual HRESULT CompareEntryIDs(ULONG cbEntryID1, LPENTRYID lpEntryID1, ULONG cbEntryID2, LPENTRYID lpEntryID2,
  233. ULONG ulFlags, ULONG* OUTPUT /*lpulResult*/) = 0;
  234. virtual HRESULT OpenEntry(ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, ULONG* OUTPUT /*lpulObjType*/,
  235. IUnknown ** OUTPUT /*lppUnk*/) = 0;
  236. virtual HRESULT SetReceiveFolder(LPTSTR lpszMessageClass, ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) = 0;
  237. virtual HRESULT GetReceiveFolder(LPTSTR lpszMessageClass, ULONG ulFlags, ULONG *OUTPUT, LPENTRYID* OUTPUT /*lppEntryID*/,
  238. LPTSTR* OUTPUT /*lppszExplicitClass*/) = 0;
  239. virtual HRESULT GetReceiveFolderTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  240. virtual HRESULT StoreLogoff(ULONG * INOUT /*lpulFlags*/) = 0;
  241. virtual HRESULT AbortSubmit(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags) = 0;
  242. virtual HRESULT GetOutgoingQueue(ULONG ulFlags, IMAPITable ** OUTPUT/*lppTable*/) = 0;
  243. virtual HRESULT SetLockState(IMessage *lpMessage, ULONG ulLockState) = 0;
  244. virtual HRESULT FinishedMsg(ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) = 0;
  245. virtual HRESULT NotifyNewMail(LPNOTIFICATION lpNotification) = 0;
  246. %extend {
  247. ~IMsgStore() { self->Release(); }
  248. }
  249. };
  250. class IProxyStoreObject : public IUnknown {
  251. public:
  252. virtual HRESULT PlaceHolder1() = 0;
  253. virtual HRESULT PlaceHolder2() = 0;
  254. %extend {
  255. ~IProxyStoreObject() { self->Release(); }
  256. virtual HRESULT UnwrapNoRef(IUnknown **OUTPUT /*ppvObject*/) {
  257. HRESULT hr = hrSuccess;
  258. hr = self->UnwrapNoRef((LPVOID*)OUTPUT);
  259. if(hr == hrSuccess)
  260. (*OUTPUT)->AddRef();
  261. return hr;
  262. };
  263. }
  264. };
  265. #define FOLDER_ROOT (0x00000000)
  266. #define FOLDER_GENERIC (0x00000001)
  267. #define FOLDER_SEARCH (0x00000002)
  268. #define MESSAGE_MOVE (0x00000001)
  269. #define MESSAGE_DIALOG (0x00000002)
  270. #define OPEN_IF_EXISTS (0x00000001)
  271. #define DEL_MESSAGES (0x00000001)
  272. #define FOLDER_DIALOG (0x00000002)
  273. #define DEL_FOLDERS (0x00000004)
  274. #define DEL_ASSOCIATED (0x00000008)
  275. #define FOLDER_MOVE (0x00000001)
  276. #define COPY_SUBFOLDERS (0x00000010)
  277. #define MSGSTATUS_HIGHLIGHTED (0x00000001)
  278. #define MSGSTATUS_TAGGED (0x00000002)
  279. #define MSGSTATUS_HIDDEN (0x00000004)
  280. #define MSGSTATUS_DELMARKED (0x00000008)
  281. #define MSGSTATUS_REMOTE_DOWNLOAD (0x00001000)
  282. #define MSGSTATUS_REMOTE_DELETE (0x00002000)
  283. #define RECURSIVE_SORT (0x00000002)
  284. #define FLDSTATUS_HIGHLIGHTED (0x00000001)
  285. #define FLDSTATUS_TAGGED (0x00000002)
  286. #define FLDSTATUS_HIDDEN (0x00000004)
  287. #define FLDSTATUS_DELMARKED (0x00000008)
  288. class IMAPIFolder : public IMAPIContainer {
  289. public:
  290. // virtual ~IMAPIFolder() = 0;
  291. virtual HRESULT CreateMessage(LPCIID lpInterface, ULONG ulFlags, IMessage ** OUTPUT /*lppMessage*/) = 0;
  292. virtual HRESULT CopyMessages(LPENTRYLIST lpMsgList, LPCIID lpInterface, IUnknown *lpDestFolder, ULONG ulUIParam,
  293. IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  294. virtual HRESULT DeleteMessages(LPENTRYLIST lpMsgList, ULONG ulUIParam, IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  295. virtual HRESULT CreateFolder(ULONG ulFolderType, LPTSTR lpszFolderName, LPTSTR lpszFolderComment, LPCIID lpInterface,
  296. ULONG ulFlags, IMAPIFolder** OUTPUT /*lppFolder*/) = 0;
  297. virtual HRESULT CopyFolder(ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, IUnknown *lpDestFolder, LPTSTR lpszNewFolderName,
  298. ULONG ulUIParam, IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  299. virtual HRESULT DeleteFolder(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulUIParam, IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  300. virtual HRESULT SetReadFlags(LPENTRYLIST lpMsgList, ULONG ulUIParam, IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  301. virtual HRESULT GetMessageStatus(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags, ULONG* OUTPUT /*lpulMessageStatus*/) = 0;
  302. virtual HRESULT SetMessageStatus(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulNewStatus, ULONG ulNewStatusMask,
  303. ULONG* OUTPUT /*lpulOldStatus*/) = 0;
  304. virtual HRESULT SaveContentsSort(const SSortOrderSet *lpSortCriteria, ULONG ulFlags) = 0;
  305. virtual HRESULT EmptyFolder(ULONG ulUIParam, IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  306. %extend {
  307. ~IMAPIFolder() { self->Release(); }
  308. }
  309. };
  310. #define FORCE_SUBMIT (0x00000001)
  311. #define MSGFLAG_READ (0x00000001)
  312. #define MSGFLAG_UNMODIFIED (0x00000002)
  313. #define MSGFLAG_SUBMIT (0x00000004)
  314. #define MSGFLAG_UNSENT (0x00000008)
  315. #define MSGFLAG_HASATTACH (0x00000010)
  316. #define MSGFLAG_FROMME (0x00000020)
  317. #define MSGFLAG_ASSOCIATED (0x00000040)
  318. #define MSGFLAG_RESEND (0x00000080)
  319. #define MSGFLAG_RN_PENDING (0x00000100)
  320. #define MSGFLAG_NRN_PENDING (0x00000200)
  321. #define SUBMITFLAG_LOCKED (0x00000001)
  322. #define SUBMITFLAG_PREPROCESS (0x00000002)
  323. #define MODRECIP_ADD (0x00000002)
  324. #define MODRECIP_MODIFY (0x00000004)
  325. #define MODRECIP_REMOVE (0x00000008)
  326. #define SUPPRESS_RECEIPT (0x00000001)
  327. #define CLEAR_READ_FLAG (0x00000004)
  328. #define GENERATE_RECEIPT_ONLY (0x00000010)
  329. #define CLEAR_RN_PENDING (0x00000020)
  330. #define CLEAR_NRN_PENDING (0x00000040)
  331. #define ATTACH_DIALOG (0x00000001)
  332. #define SECURITY_SIGNED (0x00000001)
  333. #define SECURITY_ENCRYPTED (0x00000002)
  334. #define PRIO_URGENT ( 1)
  335. #define PRIO_NORMAL ( 0)
  336. #define PRIO_NONURGENT (-1)
  337. #define SENSITIVITY_NONE (0x00000000)
  338. #define SENSITIVITY_PERSONAL (0x00000001)
  339. #define SENSITIVITY_PRIVATE (0x00000002)
  340. #define SENSITIVITY_COMPANY_CONFIDENTIAL (0x00000003)
  341. #define IMPORTANCE_LOW (0)
  342. #define IMPORTANCE_NORMAL (1)
  343. #define IMPORTANCE_HIGH (2)
  344. class IMessage : public IMAPIProp {
  345. public:
  346. // virtual ~IMessage() = 0;
  347. virtual HRESULT GetAttachmentTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  348. virtual HRESULT OpenAttach(ULONG ulAttachmentNum, LPCIID lpInterface, ULONG ulFlags, IAttach** OUTPUT /*lppAttach*/) = 0;
  349. virtual HRESULT CreateAttach(LPCIID lpInterface, ULONG ulFlags, ULONG *lpulAttachmentNum, IAttach** OUTPUT /*lppAttach*/) = 0;
  350. virtual HRESULT DeleteAttach(ULONG ulAttachmentNum, ULONG ulUIParam, IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  351. virtual HRESULT GetRecipientTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  352. virtual HRESULT ModifyRecipients(ULONG ulFlags, const ADRLIST *INPUT /*lpMods*/) = 0;
  353. virtual HRESULT SubmitMessage(ULONG ulFlags) = 0;
  354. virtual HRESULT SetReadFlag(ULONG ulFlags) = 0;
  355. %extend {
  356. ~IMessage() { self->Release(); }
  357. }
  358. };
  359. #define NO_ATTACHMENT (0x00000000)
  360. #define ATTACH_BY_VALUE (0x00000001)
  361. #define ATTACH_BY_REFERENCE (0x00000002)
  362. #define ATTACH_BY_REF_RESOLVE (0x00000003)
  363. #define ATTACH_BY_REF_ONLY (0x00000004)
  364. #define ATTACH_EMBEDDED_MSG (0x00000005)
  365. #define ATTACH_OLE (0x00000006)
  366. class IAttach : public IMAPIProp {
  367. public:
  368. %extend {
  369. ~IAttach() { self->Release(); }
  370. }
  371. };
  372. #define AB_RECIPIENTS (0x00000001)
  373. #define AB_SUBCONTAINERS (0x00000002)
  374. #define AB_MODIFIABLE (0x00000004)
  375. #define AB_UNMODIFIABLE (0x00000008)
  376. #define AB_FIND_ON_OPEN (0x00000010)
  377. #define AB_NOT_DEFAULT (0x00000020)
  378. #define CREATE_CHECK_DUP_STRICT (0x00000001)
  379. #define CREATE_CHECK_DUP_LOOSE (0x00000002)
  380. #define CREATE_REPLACE (0x00000004)
  381. #define MAPI_UNRESOLVED (0x00000000)
  382. #define MAPI_AMBIGUOUS (0x00000001)
  383. #define MAPI_RESOLVED (0x00000002)
  384. class IABContainer : public IMAPIContainer {
  385. public:
  386. virtual HRESULT CreateEntry(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulCreateFlags, LPMAPIPROP* OUTPUT /*lppMAPIPropEntry*/) = 0;
  387. virtual HRESULT CopyEntries(LPENTRYLIST lpEntries, ULONG ulUIParam, IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  388. virtual HRESULT DeleteEntries(LPENTRYLIST lpEntries, ULONG ulFlags) = 0;
  389. virtual HRESULT ResolveNames(const SPropTagArray *lpPropTagArray, ULONG ulFlags, LPADRLIST INOUT /*lpAdrList*/, LPFlagList INOUT /*lpFlagList*/) = 0;
  390. %extend {
  391. ~IABContainer() { self->Release(); }
  392. }
  393. };
  394. #define MAPI_SEND_NO_RICH_INFO (0x00010000)
  395. #define MAPI_DIAG(_code) ((LONG) _code)
  396. #define MAPI_DIAG_NO_DIAGNOSTIC MAPI_DIAG( -1 )
  397. #define MAPI_DIAG_OR_NAME_UNRECOGNIZED MAPI_DIAG( 0 )
  398. #define MAPI_DIAG_OR_NAME_AMBIGUOUS MAPI_DIAG( 1 )
  399. #define MAPI_DIAG_MTS_CONGESTED MAPI_DIAG( 2 )
  400. #define MAPI_DIAG_LOOP_DETECTED MAPI_DIAG( 3 )
  401. #define MAPI_DIAG_RECIPIENT_UNAVAILABLE MAPI_DIAG( 4 )
  402. #define MAPI_DIAG_MAXIMUM_TIME_EXPIRED MAPI_DIAG( 5 )
  403. #define MAPI_DIAG_EITS_UNSUPPORTED MAPI_DIAG( 6 )
  404. #define MAPI_DIAG_CONTENT_TOO_LONG MAPI_DIAG( 7 )
  405. #define MAPI_DIAG_IMPRACTICAL_TO_CONVERT MAPI_DIAG( 8 )
  406. #define MAPI_DIAG_PROHIBITED_TO_CONVERT MAPI_DIAG( 9 )
  407. #define MAPI_DIAG_CONVERSION_UNSUBSCRIBED MAPI_DIAG( 10 )
  408. #define MAPI_DIAG_PARAMETERS_INVALID MAPI_DIAG( 11 )
  409. #define MAPI_DIAG_CONTENT_SYNTAX_IN_ERROR MAPI_DIAG( 12 )
  410. #define MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD MAPI_DIAG( 13 )
  411. #define MAPI_DIAG_NUMBER_CONSTRAINT_VIOLATD MAPI_DIAG( 14 )
  412. #define MAPI_DIAG_CONTENT_TYPE_UNSUPPORTED MAPI_DIAG( 15 )
  413. #define MAPI_DIAG_TOO_MANY_RECIPIENTS MAPI_DIAG( 16 )
  414. #define MAPI_DIAG_NO_BILATERAL_AGREEMENT MAPI_DIAG( 17 )
  415. #define MAPI_DIAG_CRITICAL_FUNC_UNSUPPORTED MAPI_DIAG( 18 )
  416. #define MAPI_DIAG_CONVERSION_LOSS_PROHIB MAPI_DIAG( 19 )
  417. #define MAPI_DIAG_LINE_TOO_LONG MAPI_DIAG( 20 )
  418. #define MAPI_DIAG_PAGE_TOO_LONG MAPI_DIAG( 21 )
  419. #define MAPI_DIAG_PICTORIAL_SYMBOL_LOST MAPI_DIAG( 22 )
  420. #define MAPI_DIAG_PUNCTUATION_SYMBOL_LOST MAPI_DIAG( 23 )
  421. #define MAPI_DIAG_ALPHABETIC_CHARACTER_LOST MAPI_DIAG( 24 )
  422. #define MAPI_DIAG_MULTIPLE_INFO_LOSSES MAPI_DIAG( 25 )
  423. #define MAPI_DIAG_REASSIGNMENT_PROHIBITED MAPI_DIAG( 26 )
  424. #define MAPI_DIAG_REDIRECTION_LOOP_DETECTED MAPI_DIAG( 27 )
  425. #define MAPI_DIAG_EXPANSION_PROHIBITED MAPI_DIAG( 28 )
  426. #define MAPI_DIAG_SUBMISSION_PROHIBITED MAPI_DIAG( 29 )
  427. #define MAPI_DIAG_EXPANSION_FAILED MAPI_DIAG( 30 )
  428. #define MAPI_DIAG_RENDITION_UNSUPPORTED MAPI_DIAG( 31 )
  429. #define MAPI_DIAG_MAIL_ADDRESS_INCORRECT MAPI_DIAG( 32 )
  430. #define MAPI_DIAG_MAIL_OFFICE_INCOR_OR_INVD MAPI_DIAG( 33 )
  431. #define MAPI_DIAG_MAIL_ADDRESS_INCOMPLETE MAPI_DIAG( 34 )
  432. #define MAPI_DIAG_MAIL_RECIPIENT_UNKNOWN MAPI_DIAG( 35 )
  433. #define MAPI_DIAG_MAIL_RECIPIENT_DECEASED MAPI_DIAG( 36 )
  434. #define MAPI_DIAG_MAIL_ORGANIZATION_EXPIRED MAPI_DIAG( 37 )
  435. #define MAPI_DIAG_MAIL_REFUSED MAPI_DIAG( 38 )
  436. #define MAPI_DIAG_MAIL_UNCLAIMED MAPI_DIAG( 39 )
  437. #define MAPI_DIAG_MAIL_RECIPIENT_MOVED MAPI_DIAG( 40 )
  438. #define MAPI_DIAG_MAIL_RECIPIENT_TRAVELLING MAPI_DIAG( 41 )
  439. #define MAPI_DIAG_MAIL_RECIPIENT_DEPARTED MAPI_DIAG( 42 )
  440. #define MAPI_DIAG_MAIL_NEW_ADDRESS_UNKNOWN MAPI_DIAG( 43 )
  441. #define MAPI_DIAG_MAIL_FORWARDING_UNWANTED MAPI_DIAG( 44 )
  442. #define MAPI_DIAG_MAIL_FORWARDING_PROHIB MAPI_DIAG( 45 )
  443. #define MAPI_DIAG_SECURE_MESSAGING_ERROR MAPI_DIAG( 46 )
  444. #define MAPI_DIAG_DOWNGRADING_IMPOSSIBLE MAPI_DIAG( 47 )
  445. #define MAPI_MH_DP_PUBLIC_UA (0)
  446. #define MAPI_MH_DP_PRIVATE_UA (1)
  447. #define MAPI_MH_DP_MS (2)
  448. #define MAPI_MH_DP_ML (3)
  449. #define MAPI_MH_DP_PDAU (4)
  450. #define MAPI_MH_DP_PDS_PATRON (5)
  451. #define MAPI_MH_DP_OTHER_AU (6)
  452. class IMailUser : public IMAPIProp {
  453. public:
  454. %extend {
  455. ~IMailUser() { self->Release(); }
  456. }
  457. };
  458. class IDistList : public IMAPIContainer {
  459. public:
  460. virtual HRESULT CreateEntry(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulCreateFlags, LPMAPIPROP* OUTPUT /*lppMAPIPropEntry*/) = 0;
  461. virtual HRESULT CopyEntries(LPENTRYLIST lpEntries, ULONG ulUIParam, IMAPIProgress * lpProgress, ULONG ulFlags) = 0;
  462. virtual HRESULT DeleteEntries(LPENTRYLIST lpEntries, ULONG ulFlags) = 0;
  463. virtual HRESULT ResolveNames(const SPropTagArray *lpPropTagArray, ULONG ulFlags, LPADRLIST INOUT /*lpAdrList*/, LPFlagList INOUT /*lpFlagList*/) = 0;
  464. %extend {
  465. ~IDistList() { self->Release(); }
  466. }
  467. };
  468. class IMAPIStatus : public IMAPIProp {
  469. public:
  470. // virtual ~IMAPIStatus() = 0;
  471. virtual HRESULT ValidateState(ULONG ulUIParam, ULONG ulFlags) = 0;
  472. virtual HRESULT SettingsDialog(ULONG ulUIParam, ULONG ulFlags) = 0;
  473. virtual HRESULT ChangePassword(LPTSTR lpOldPass, LPTSTR lpNewPass, ULONG ulFlags) = 0;
  474. virtual HRESULT FlushQueues(ULONG ulUIParam, ULONG cbTargetTransport, LPENTRYID lpTargetTransport, ULONG ulFlags) = 0;
  475. %extend {
  476. ~IMAPIStatus() { self->Release(); }
  477. }
  478. };
  479. #define TBLSTAT_COMPLETE 0
  480. #define TBLSTAT_QCHANGED 7
  481. #define TBLSTAT_SORTING 9
  482. #define TBLSTAT_SORT_ERROR 10
  483. #define TBLSTAT_SETTING_COLS 11
  484. #define TBLSTAT_SETCOL_ERROR 13
  485. #define TBLSTAT_RESTRICTING 14
  486. #define TBLSTAT_RESTRICT_ERROR 15
  487. #define TBLTYPE_SNAPSHOT 0
  488. #define TBLTYPE_KEYSET 1
  489. #define TBLTYPE_DYNAMIC 2
  490. #define TABLE_SORT_ASCEND 0x00000000
  491. #define TABLE_SORT_DESCEND 0x00000001
  492. #define TABLE_SORT_COMBINE 0x00000002
  493. #define TABLE_SORT_CATEG_MAX 0x00000004
  494. #define TABLE_SORT_CATEG_MIN 0x00000008
  495. typedef ULONG BOOKMARK;
  496. #define BOOKMARK_BEGINNING 0 /* Before first row */
  497. #define BOOKMARK_CURRENT 1 /* Before current row */
  498. #define BOOKMARK_END 2 /* After last row */
  499. #define FL_FULLSTRING 0x00000000
  500. #define FL_SUBSTRING 0x00000001
  501. #define FL_PREFIX 0x00000002
  502. #define FL_IGNORECASE 0x00010000
  503. #define FL_IGNORENONSPACE 0x00020000
  504. #define FL_LOOSE 0x00040000
  505. #define RES_AND 0x00000000
  506. #define RES_OR 0x00000001
  507. #define RES_NOT 0x00000002
  508. #define RES_CONTENT 0x00000003
  509. #define RES_PROPERTY 0x00000004
  510. #define RES_COMPAREPROPS 0x00000005
  511. #define RES_BITMASK 0x00000006
  512. #define RES_SIZE 0x00000007
  513. #define RES_EXIST 0x00000008
  514. #define RES_SUBRESTRICTION 0x00000009
  515. #define RES_COMMENT 0x0000000A
  516. #define RELOP_LT 0 /* < */
  517. #define RELOP_LE 1 /* <= */
  518. #define RELOP_GT 2 /* > */
  519. #define RELOP_GE 3 /* >= */
  520. #define RELOP_EQ 4 /* == */
  521. #define RELOP_NE 5 /* != */
  522. #define RELOP_RE 6 /* LIKE Regular expression */
  523. #define BMR_EQZ 0 /* ==0 */
  524. #define BMR_NEZ 1 /* !=0 */
  525. #define TBL_ALL_COLUMNS 0x00000001
  526. #define TBL_LEAF_ROW 1
  527. #define TBL_EMPTY_CATEGORY 2
  528. #define TBL_EXPANDED_CATEGORY 3
  529. #define TBL_COLLAPSED_CATEGORY 4
  530. #define TBL_NOWAIT 0x00000001
  531. #define TBL_ASYNC 0x00000001
  532. #define TBL_BATCH 0x00000002
  533. #define DIR_BACKWARD 0x00000001
  534. #define TBL_NOADVANCE 0x00000001
  535. class IMAPITable : public IUnknown {
  536. public:
  537. // virtual ~IMAPITable() = 0;
  538. virtual HRESULT GetLastError(HRESULT hResult, ULONG ulFlags, LPMAPIERROR* OUTPUT /*lppMAPIError*/) = 0;
  539. virtual HRESULT Advise(ULONG ulEventMask, IMAPIAdviseSink *lpAdviseSink, ULONG* OUTPUT /*lpulConnection*/) = 0;
  540. virtual HRESULT Unadvise(ULONG ulConnection) = 0;
  541. virtual HRESULT GetStatus(ULONG *lpulTableStatus, ULONG* OUTPUT /*lpulTableType*/) = 0;
  542. virtual HRESULT SetColumns(const SPropTagArray *lpPropTagArray, ULONG ulFlags) = 0;
  543. virtual HRESULT QueryColumns(ULONG ulFlags, LPSPropTagArray* OUTPUT /*lpPropTagArray*/) = 0;
  544. virtual HRESULT GetRowCount(ULONG ulFlags, ULONG* OUTPUT /*lpulCount*/) = 0;
  545. virtual HRESULT SeekRow(BOOKMARK bkOrigin, LONG lRowCount, LONG* OUTPUT /*lplRowsSought*/) = 0;
  546. virtual HRESULT SeekRowApprox(ULONG ulNumerator, ULONG ulDenominator) = 0;
  547. virtual HRESULT QueryPosition(ULONG *lpulRow, ULONG* OUTPUT1 /*lpulNumerator*/, ULONG* OUTPUT2 /*lpulDenominator*/) = 0;
  548. virtual HRESULT FindRow(LPSRestriction lpRestriction, BOOKMARK bkOrigin, ULONG ulFlags) = 0;
  549. virtual HRESULT Restrict(LPSRestriction lpRestriction, ULONG ulFlags) = 0;
  550. virtual HRESULT CreateBookmark(BOOKMARK* OUTPUT /*lpbkPosition*/) = 0;
  551. virtual HRESULT FreeBookmark(BOOKMARK bkPosition) = 0;
  552. virtual HRESULT SortTable(const SSortOrderSet *c, ULONG flags) = 0;
  553. virtual HRESULT QuerySortOrder(LPSSortOrderSet* OUTPUT /*lppSortCriteria*/) = 0;
  554. virtual HRESULT QueryRows(LONG lRowCount, ULONG ulFlags, LPSRowSet* OUTPUT /*lppRows*/) = 0;
  555. virtual HRESULT Abort() = 0;
  556. virtual HRESULT ExpandRow(ULONG cbInstanceKey, BYTE *pbInstanceKey, ULONG ulRowCount,
  557. ULONG ulFlags, LPSRowSet* OUTPUT /*lppRows*/, ULONG* OUTPUT2 /*lpulMoreRows*/) = 0;
  558. virtual HRESULT CollapseRow(ULONG cbInstanceKey, BYTE *pbInstanceKey, ULONG ulFlags, ULONG* OUTPUT /*lpulRowCount*/) = 0;
  559. virtual HRESULT WaitForCompletion(ULONG ulFlags, ULONG ulTimeout, ULONG* OUTPUT /*lpulTableStatus*/) = 0;
  560. virtual HRESULT GetCollapseState(ULONG ulFlags, ULONG cbInstanceKey, BYTE *pbInstanceKey, ULONG* lpulOutput /*lpcbCollapseState*/,
  561. LPBYTE* lpOutput /*lppbCollapseState*/) = 0;
  562. virtual HRESULT SetCollapseState(ULONG ulFlags, ULONG cbCollapseState, BYTE *pbCollapseState, BOOKMARK* OUTPUT /*lpbkLocation*/) = 0;
  563. %extend {
  564. ~IMAPITable() { self->Release(); }
  565. }
  566. };
  567. #define PS_PROFILE_PROPERTIES_INIT \
  568. { 0x98, 0x15, 0xAC, 0x08, 0xAA, 0xB0, 0x10, 0x1A, \
  569. 0x8C, 0x93, 0x08, 0x00, 0x2B, 0x2A, 0x56, 0xC2 }
  570. #define MAPI_STORE_PROVIDER (33)
  571. #define MAPI_AB (34)
  572. #define MAPI_AB_PROVIDER (35)
  573. #define MAPI_TRANSPORT_PROVIDER (36)
  574. #define MAPI_SPOOLER (37)
  575. #define MAPI_PROFILE_PROVIDER (38)
  576. #define MAPI_SUBSYSTEM (39)
  577. #define MAPI_HOOK_PROVIDER (40)
  578. #define STATUS_VALIDATE_STATE (0x00000001)
  579. #define STATUS_SETTINGS_DIALOG (0x00000002)
  580. #define STATUS_CHANGE_PASSWORD (0x00000004)
  581. #define STATUS_FLUSH_QUEUES (0x00000008)
  582. #define STATUS_DEFAULT_OUTBOUND (0x00000001)
  583. #define STATUS_DEFAULT_STORE (0x00000002)
  584. #define STATUS_PRIMARY_IDENTITY (0x00000004)
  585. #define STATUS_SIMPLE_STORE (0x00000008)
  586. #define STATUS_XP_PREFER_LAST (0x00000010)
  587. #define STATUS_NO_PRIMARY_IDENTITY (0x00000020)
  588. #define STATUS_NO_DEFAULT_STORE (0x00000040)
  589. #define STATUS_TEMP_SECTION (0x00000080)
  590. #define STATUS_OWN_STORE (0x00000100)
  591. #define STATUS_NEED_IPM_TREE (0x00000800)
  592. #define STATUS_PRIMARY_STORE (0x00001000)
  593. #define STATUS_SECONDARY_STORE (0x00002000)
  594. #define STATUS_AVAILABLE (0x00000001)
  595. #define STATUS_OFFLINE (0x00000002)
  596. #define STATUS_FAILURE (0x00000004)
  597. #define STATUS_INBOUND_ENABLED (0x00010000)
  598. #define STATUS_INBOUND_ACTIVE (0x00020000)
  599. #define STATUS_INBOUND_FLUSH (0x00040000)
  600. #define STATUS_OUTBOUND_ENABLED (0x00100000)
  601. #define STATUS_OUTBOUND_ACTIVE (0x00200000)
  602. #define STATUS_OUTBOUND_FLUSH (0x00400000)
  603. #define STATUS_REMOTE_ACCESS (0x00800000)
  604. #define SUPPRESS_UI (0x00000001)
  605. #define REFRESH_XP_HEADER_CACHE (0x00010000)
  606. #define PROCESS_XP_HEADER_CACHE (0x00020000)
  607. #define FORCE_XP_CONNECT (0x00040000)
  608. #define FORCE_XP_DISCONNECT (0x00080000)
  609. #define CONFIG_CHANGED (0x00100000)
  610. #define ABORT_XP_HEADER_OPERATION (0x00200000)
  611. #define SHOW_XP_SESSION_UI (0x00400000)
  612. #define UI_READONLY (0x00000001)
  613. #define FLUSH_UPLOAD (0x00000002)
  614. #define FLUSH_DOWNLOAD (0x00000004)
  615. #define FLUSH_FORCE (0x00000008)
  616. #define FLUSH_NO_UI (0x00000010)
  617. #define FLUSH_ASYNC_OK (0x00000020)
  618. class IProfSect : public IMAPIProp {
  619. public:
  620. %extend {
  621. ~IProfSect() { self->Release(); }
  622. }
  623. };
  624. #define MAPI_TOP_LEVEL (0x00000001)
  625. class IMAPIProgress : public IUnknown {
  626. public:
  627. virtual HRESULT Progress(ULONG ulValue, ULONG ulCount, ULONG ulTotal) = 0;
  628. virtual HRESULT GetFlags(ULONG* lpulFlags) = 0;
  629. virtual HRESULT GetMax(ULONG* lpulMax) = 0;
  630. virtual HRESULT GetMin(ULONG* lpulMin) = 0;
  631. virtual HRESULT SetLimits(ULONG* lpulMin, ULONG* lpulMax, ULONG* lpulFlags) = 0;
  632. %extend {
  633. ~IMAPIProgress() { self->Release(); }
  634. }
  635. };
  636. #define UI_SERVICE 0x00000002
  637. #define SERVICE_UI_ALWAYS 0x00000002
  638. #define SERVICE_UI_ALLOWED 0x00000010
  639. #define UI_CURRENT_PROVIDER_FIRST 0x00000004
  640. class IProviderAdmin : public IUnknown {
  641. public:
  642. virtual HRESULT GetLastError(HRESULT hResult, ULONG ulFlags, LPMAPIERROR* OUTPUT /*lppMAPIError*/) = 0;
  643. virtual HRESULT GetProviderTable(ULONG ulFlags, LPMAPITABLE* OUTPUT /*lppTable*/) = 0;
  644. virtual HRESULT CreateProvider(LPTSTR lpszProvider, ULONG cValues, LPSPropValue lpProps, ULONG ulUIParam,
  645. ULONG ulFlags, LPMAPIUID OUTPUT /*lpUID*/) = 0;
  646. virtual HRESULT DeleteProvider(LPMAPIUID lpUID) = 0;
  647. virtual HRESULT OpenProfileSection(LPMAPIUID lpUID, LPCIID lpInterface, ULONG ulFlags, IProfSect** OUTPUT /*lppProfSect*/) = 0;
  648. %extend {
  649. ~IProviderAdmin() { self->Release(); }
  650. }
  651. };
  652. #define ADRPARM_HELP_CTX (0x00000000)
  653. #define DIALOG_MODAL (0x00000001)
  654. #define DIALOG_SDI (0x00000002)
  655. #define DIALOG_OPTIONS (0x00000004)
  656. #define ADDRESS_ONE (0x00000008)
  657. #define AB_SELECTONLY (0x00000010)
  658. #define AB_RESOLVE (0x00000020)
  659. #define DT_MAILUSER (0x00000000)
  660. #define DT_DISTLIST (0x00000001)
  661. #define DT_FORUM (0x00000002)
  662. #define DT_AGENT (0x00000003)
  663. #define DT_ORGANIZATION (0x00000004)
  664. #define DT_PRIVATE_DISTLIST (0x00000005)
  665. #define DT_REMOTE_MAILUSER (0x00000006)
  666. #define DT_MODIFIABLE (0x00010000)
  667. #define DT_GLOBAL (0x00020000)
  668. #define DT_LOCAL (0x00030000)
  669. #define DT_WAN (0x00040000)
  670. #define DT_NOT_SPECIFIC (0x00050000)
  671. #define DT_FOLDER (0x01000000)
  672. #define DT_FOLDER_LINK (0x02000000)
  673. #define DT_FOLDER_SPECIAL (0x04000000)
  674. #define MAPI_DEFERRED_ERRORS (0x00000008)
  675. #define MAPI_ASSOCIATED (0x00000040)
  676. #define MDB_NO_DIALOG (0x00000001)
  677. #define MDB_WRITE (0x00000004)
  678. #define MDB_TEMPORARY (0x00000020)
  679. #define MDB_NO_MAIL (0x00000080)
  680. #define AB_NO_DIALOG (0x00000001)
  681. #define EC_OVERRIDE_HOMESERVER (0x00000001)
  682. #if SWIGPYTHON
  683. %feature("director") Message;
  684. %feature("nodirector") Message::QueryInterface;
  685. %feature("director") MAPIProp;
  686. %feature("nodirector") MAPIProp::QueryInterface;
  687. %feature("director") Attach;
  688. %feature("nodirector") Attach::QueryInterface;
  689. %feature("director") MAPITable;
  690. %feature("nodirector") MAPITable::QueryInterface;
  691. class MAPIProp : public IMAPIProp {
  692. public:
  693. MAPIProp(ULONG cInterfaces, LPCIID lpInterfaces);
  694. %extend {
  695. virtual ~MAPIProp() { self->Release(); };
  696. }
  697. };
  698. class Message : public IMessage {
  699. public:
  700. Message(ULONG cInterfaces, LPCIID lpInterfaces);
  701. %extend {
  702. virtual ~Message() { self->Release(); };
  703. }
  704. };
  705. class Attach : public IAttach {
  706. public:
  707. Attach(ULONG cInterfaces, LPCIID lpInterfaces);
  708. %extend {
  709. virtual ~Attach() { self->Release(); };
  710. }
  711. };
  712. class MAPITable : public IMAPITable {
  713. public:
  714. MAPITable(ULONG cInterfaces, LPCIID lpInterfaces);
  715. %extend {
  716. virtual ~MAPITable() { self->Release(); };
  717. }
  718. };
  719. // This is purely for testing
  720. HRESULT wrap_IMessage(IMessage *lpMessage, IMessage **OUTPUT);
  721. %{
  722. HRESULT wrap_IMessage(IMessage *lpMessage, IMessage **OUTPUT)
  723. {
  724. *OUTPUT = lpMessage;
  725. lpMessage->AddRef();
  726. return hrSuccess;
  727. }
  728. %}
  729. #endif