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.

550 lines
28 KiB

  1. /*
  2. * M A P I X . H
  3. *
  4. * Definitions of objects/flags, etc used by Extended MAPI.
  5. *
  6. * Copyright 1993-1995 Microsoft Corporation. All Rights Reserved.
  7. */
  8. #ifndef MAPIX_H
  9. #define MAPIX_H
  10. /* Include common MAPI header files if they haven't been already. */
  11. #ifndef MAPIDEFS_H
  12. #include <mapidefs.h>
  13. #endif
  14. #ifndef MAPICODE_H
  15. #include <mapicode.h>
  16. #endif
  17. #ifndef MAPIGUID_H
  18. #include <mapiguid.h>
  19. #endif
  20. #ifndef MAPITAGS_H
  21. #include <mapitags.h>
  22. #endif
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. #ifndef BEGIN_INTERFACE
  27. #define BEGIN_INTERFACE
  28. #endif
  29. /* Forward interface declarations */
  30. DECLARE_MAPI_INTERFACE_PTR(IProfAdmin, LPPROFADMIN);
  31. DECLARE_MAPI_INTERFACE_PTR(IMsgServiceAdmin, LPSERVICEADMIN);
  32. /* ------------------------------------------------------ */
  33. /* shared with simple mapi */
  34. typedef ULONG FLAGS;
  35. /* MAPILogon() flags. */
  36. #define MAPI_LOGON_UI 0x00000001 /* Display logon UI */
  37. #define MAPI_NEW_SESSION 0x00000002 /* Don't use shared session */
  38. #define MAPI_ALLOW_OTHERS 0x00000008 /* Make this a shared session */
  39. #define MAPI_EXPLICIT_PROFILE 0x00000010 /* Don't use default profile */
  40. #define MAPI_EXTENDED 0x00000020 /* Extended MAPI Logon */
  41. #define MAPI_FORCE_DOWNLOAD 0x00001000 /* Get new mail before return */
  42. #define MAPI_SERVICE_UI_ALWAYS 0x00002000 /* Do logon UI in all providers */
  43. #define MAPI_NO_MAIL 0x00008000 /* Do not activate transports */
  44. #define MAPI_NT_SERVICE 0x00010000 /* Allow logon from an NT service */
  45. #ifndef MAPI_PASSWORD_UI
  46. #define MAPI_PASSWORD_UI 0x00020000 /* Display password UI only */
  47. #endif
  48. #define MAPI_TIMEOUT_SHORT 0x00100000 /* Minimal wait for logon resources */
  49. #define MAPI_SIMPLE_DEFAULT (MAPI_LOGON_UI | MAPI_FORCE_DOWNLOAD | MAPI_ALLOW_OTHERS)
  50. #define MAPI_SIMPLE_EXPLICIT (MAPI_NEW_SESSION | MAPI_FORCE_DOWNLOAD | MAPI_EXPLICIT_PROFILE)
  51. /* Structure passed to MAPIInitialize(), and its ulFlags values */
  52. typedef struct
  53. {
  54. ULONG ulVersion;
  55. ULONG ulFlags;
  56. } MAPIINIT_0, FAR *LPMAPIINIT_0;
  57. typedef MAPIINIT_0 MAPIINIT;
  58. typedef MAPIINIT FAR *LPMAPIINIT;
  59. #define MAPI_INIT_VERSION 0
  60. #define MAPI_MULTITHREAD_NOTIFICATIONS 0x00000001
  61. /* #define MAPI_NT_SERVICE 0x00010000 Use from NT service */
  62. /* MAPI base functions */
  63. typedef HRESULT (STDAPICALLTYPE MAPIINITIALIZE)(
  64. LPVOID lpvReserved
  65. );
  66. typedef MAPIINITIALIZE FAR *LPMAPIINITIALIZE;
  67. typedef void (STDAPICALLTYPE MAPIUNINITIALIZE)(void);
  68. typedef MAPIUNINITIALIZE FAR *LPMAPIUNINITIALIZE;
  69. MAPIINITIALIZE MAPIInitialize;
  70. MAPIUNINITIALIZE MAPIUninitialize;
  71. #ifndef MAPILogon
  72. typedef ULONG (FAR PASCAL MAPILOGONA)(
  73. ULONG ulUIParam,
  74. LPSTR lpszProfileName,
  75. LPSTR lpszPassword,
  76. FLAGS flFlags,
  77. ULONG ulReserved,
  78. LPLHANDLE lplhSession
  79. );
  80. typedef MAPILOGONA FAR *LPMAPILOGONA;
  81. typedef ULONG (FAR PASCAL MAPILOGONW)(
  82. ULONG ulUIParam,
  83. LPWSTR lpszProfileName,
  84. LPWSTR lpszPassword,
  85. FLAGS flFlags,
  86. ULONG ulReserved,
  87. LPLHANDLE lplhSession
  88. );
  89. typedef MAPILOGONW FAR *LPMAPILOGONW;
  90. MAPILOGONA MAPILogonA;
  91. MAPILOGONW MAPILogonW;
  92. #ifdef UNICODE
  93. #define MAPILogon MAPILogonW
  94. #else
  95. #define MAPILogon MAPILogonA
  96. #endif
  97. #endif /* MAPILogon */
  98. typedef SCODE (STDMETHODCALLTYPE MAPIALLOCATEBUFFER)(
  99. ULONG cbSize,
  100. LPVOID FAR * lppBuffer
  101. );
  102. typedef SCODE (STDMETHODCALLTYPE MAPIALLOCATEMORE)(
  103. ULONG cbSize,
  104. LPVOID lpObject,
  105. LPVOID FAR * lppBuffer
  106. );
  107. typedef ULONG (STDAPICALLTYPE MAPIFREEBUFFER)(
  108. LPVOID lpBuffer
  109. );
  110. typedef MAPIALLOCATEBUFFER FAR *LPMAPIALLOCATEBUFFER;
  111. typedef MAPIALLOCATEMORE FAR *LPMAPIALLOCATEMORE;
  112. typedef MAPIFREEBUFFER FAR *LPMAPIFREEBUFFER;
  113. MAPIALLOCATEBUFFER MAPIAllocateBuffer;
  114. MAPIALLOCATEMORE MAPIAllocateMore;
  115. MAPIFREEBUFFER MAPIFreeBuffer;
  116. typedef HRESULT (STDMETHODCALLTYPE MAPIADMINPROFILES)(
  117. ULONG ulFlags,
  118. LPPROFADMIN FAR *lppProfAdmin
  119. );
  120. typedef MAPIADMINPROFILES FAR *LPMAPIADMINPROFILES;
  121. MAPIADMINPROFILES MAPIAdminProfiles;
  122. /* IMAPISession Interface -------------------------------------------------- */
  123. /* Flags for OpenEntry and others */
  124. /*#define MAPI_MODIFY ((ULONG) 0x00000001) */
  125. /* Flags for Logoff */
  126. #define MAPI_LOGOFF_SHARED 0x00000001 /* Close all shared sessions */
  127. #define MAPI_LOGOFF_UI 0x00000002 /* It's OK to present UI */
  128. /* Flags for SetDefaultStore. They are mutually exclusive. */
  129. #define MAPI_DEFAULT_STORE 0x00000001 /* for incoming messages */
  130. #define MAPI_SIMPLE_STORE_TEMPORARY 0x00000002 /* for simple MAPI and CMC */
  131. #define MAPI_SIMPLE_STORE_PERMANENT 0x00000003 /* for simple MAPI and CMC */
  132. /* Flags for ShowForm. */
  133. #define MAPI_POST_MESSAGE 0x00000001 /* Selects post/send semantics */
  134. #define MAPI_NEW_MESSAGE 0x00000002 /* Governs copying during submission */
  135. /* MessageOptions */
  136. /****** MAPI_UNICODE ((ULONG) 0x80000000) */
  137. /* QueryDefaultMessageOpt */
  138. /****** MAPI_UNICODE ((ULONG) 0x80000000) */
  139. #define MAPI_IMAPISESSION_METHODS(IPURE) \
  140. MAPIMETHOD(GetLastError) \
  141. (THIS_ HRESULT hResult, \
  142. ULONG ulFlags, \
  143. LPMAPIERROR FAR * lppMAPIError) IPURE; \
  144. MAPIMETHOD(GetMsgStoresTable) \
  145. (THIS_ ULONG ulFlags, \
  146. LPMAPITABLE FAR * lppTable) IPURE; \
  147. MAPIMETHOD(OpenMsgStore) \
  148. (THIS_ ULONG ulUIParam, \
  149. ULONG cbEntryID, \
  150. LPENTRYID lpEntryID, \
  151. LPCIID lpInterface, \
  152. ULONG ulFlags, \
  153. LPMDB FAR * lppMDB) IPURE; \
  154. MAPIMETHOD(OpenAddressBook) \
  155. (THIS_ ULONG ulUIParam, \
  156. LPCIID lpInterface, \
  157. ULONG ulFlags, \
  158. LPADRBOOK FAR * lppAdrBook) IPURE; \
  159. MAPIMETHOD(OpenProfileSection) \
  160. (THIS_ LPMAPIUID lpUID, \
  161. LPCIID lpInterface, \
  162. ULONG ulFlags, \
  163. LPPROFSECT FAR * lppProfSect) IPURE; \
  164. MAPIMETHOD(GetStatusTable) \
  165. (THIS_ ULONG ulFlags, \
  166. LPMAPITABLE FAR * lppTable) IPURE; \
  167. MAPIMETHOD(OpenEntry) \
  168. (THIS_ ULONG cbEntryID, \
  169. LPENTRYID lpEntryID, \
  170. LPCIID lpInterface, \
  171. ULONG ulFlags, \
  172. ULONG FAR * lpulObjType, \
  173. LPUNKNOWN FAR * lppUnk) IPURE; \
  174. MAPIMETHOD(CompareEntryIDs) \
  175. (THIS_ ULONG cbEntryID1, \
  176. LPENTRYID lpEntryID1, \
  177. ULONG cbEntryID2, \
  178. LPENTRYID lpEntryID2, \
  179. ULONG ulFlags, \
  180. ULONG FAR * lpulResult) IPURE; \
  181. MAPIMETHOD(Advise) \
  182. (THIS_ ULONG cbEntryID, \
  183. LPENTRYID lpEntryID, \
  184. ULONG ulEventMask, \
  185. LPMAPIADVISESINK lpAdviseSink, \
  186. ULONG FAR * lpulConnection) IPURE; \
  187. MAPIMETHOD(Unadvise) \
  188. (THIS_ ULONG ulConnection) IPURE; \
  189. MAPIMETHOD(MessageOptions) \
  190. (THIS_ ULONG ulUIParam, \
  191. ULONG ulFlags, \
  192. LPTSTR lpszAdrType, \
  193. LPMESSAGE lpMessage) IPURE; \
  194. MAPIMETHOD(QueryDefaultMessageOpt) \
  195. (THIS_ LPTSTR lpszAdrType, \
  196. ULONG ulFlags, \
  197. ULONG FAR * lpcValues, \
  198. LPSPropValue FAR * lppOptions) IPURE; \
  199. MAPIMETHOD(EnumAdrTypes) \
  200. (THIS_ ULONG ulFlags, \
  201. ULONG FAR * lpcAdrTypes, \
  202. LPTSTR FAR * FAR * lpppszAdrTypes) IPURE; \
  203. MAPIMETHOD(QueryIdentity) \
  204. (THIS_ ULONG FAR * lpcbEntryID, \
  205. LPENTRYID FAR * lppEntryID) IPURE; \
  206. MAPIMETHOD(Logoff) \
  207. (THIS_ ULONG ulUIParam, \
  208. ULONG ulFlags, \
  209. ULONG ulReserved) IPURE; \
  210. MAPIMETHOD(SetDefaultStore) \
  211. (THIS_ ULONG ulFlags, \
  212. ULONG cbEntryID, \
  213. LPENTRYID lpEntryID) IPURE; \
  214. MAPIMETHOD(AdminServices) \
  215. (THIS_ ULONG ulFlags, \
  216. LPSERVICEADMIN FAR * lppServiceAdmin) IPURE; \
  217. MAPIMETHOD(ShowForm) \
  218. (THIS_ ULONG ulUIParam, \
  219. LPMDB lpMsgStore, \
  220. LPMAPIFOLDER lpParentFolder, \
  221. LPCIID lpInterface, \
  222. ULONG ulMessageToken, \
  223. LPMESSAGE lpMessageSent, \
  224. ULONG ulFlags, \
  225. ULONG ulMessageStatus, \
  226. ULONG ulMessageFlags, \
  227. ULONG ulAccess, \
  228. LPSTR lpszMessageClass) IPURE; \
  229. MAPIMETHOD(PrepareForm) \
  230. (THIS_ LPCIID lpInterface, \
  231. LPMESSAGE lpMessage, \
  232. ULONG FAR * lpulMessageToken) IPURE; \
  233. #undef INTERFACE
  234. #define INTERFACE IMAPISession
  235. DECLARE_MAPI_INTERFACE_(IMAPISession, IUnknown)
  236. {
  237. BEGIN_INTERFACE
  238. MAPI_IUNKNOWN_METHODS(PURE)
  239. MAPI_IMAPISESSION_METHODS(PURE)
  240. };
  241. DECLARE_MAPI_INTERFACE_PTR(IMAPISession, LPMAPISESSION);
  242. /* IAddrBook Interface ----------------------------------------------------- */
  243. /* RecipOptions */
  244. /****** MAPI_UNICODE ((ULONG) 0x80000000) */
  245. /* QueryDefaultRecipOpt */
  246. /****** MAPI_UNICODE ((ULONG) 0x80000000) */
  247. /* GetSearchPath */
  248. /****** MAPI_UNICODE ((ULONG) 0x80000000) */
  249. #define MAPI_IADDRBOOK_METHODS(IPURE) \
  250. MAPIMETHOD(OpenEntry) \
  251. (THIS_ ULONG cbEntryID, \
  252. LPENTRYID lpEntryID, \
  253. LPCIID lpInterface, \
  254. ULONG ulFlags, \
  255. ULONG FAR * lpulObjType, \
  256. LPUNKNOWN FAR * lppUnk) IPURE; \
  257. MAPIMETHOD(CompareEntryIDs) \
  258. (THIS_ ULONG cbEntryID1, \
  259. LPENTRYID lpEntryID1, \
  260. ULONG cbEntryID2, \
  261. LPENTRYID lpEntryID2, \
  262. ULONG ulFlags, \
  263. ULONG FAR * lpulResult) IPURE; \
  264. MAPIMETHOD(Advise) \
  265. (THIS_ ULONG cbEntryID, \
  266. LPENTRYID lpEntryID, \
  267. ULONG ulEventMask, \
  268. LPMAPIADVISESINK lpAdviseSink, \
  269. ULONG FAR * lpulConnection) IPURE; \
  270. MAPIMETHOD(Unadvise) \
  271. (THIS_ ULONG ulConnection) IPURE; \
  272. MAPIMETHOD(CreateOneOff) \
  273. (THIS_ LPTSTR lpszName, \
  274. LPTSTR lpszAdrType, \
  275. LPTSTR lpszAddress, \
  276. ULONG ulFlags, \
  277. ULONG FAR * lpcbEntryID, \
  278. LPENTRYID FAR * lppEntryID) IPURE; \
  279. MAPIMETHOD(NewEntry) \
  280. (THIS_ ULONG ulUIParam, \
  281. ULONG ulFlags, \
  282. ULONG cbEIDContainer, \
  283. LPENTRYID lpEIDContainer, \
  284. ULONG cbEIDNewEntryTpl, \
  285. LPENTRYID lpEIDNewEntryTpl, \
  286. ULONG FAR * lpcbEIDNewEntry, \
  287. LPENTRYID FAR * lppEIDNewEntry) IPURE; \
  288. MAPIMETHOD(ResolveName) \
  289. (THIS_ ULONG ulUIParam, \
  290. ULONG ulFlags, \
  291. LPTSTR lpszNewEntryTitle, \
  292. LPADRLIST lpAdrList) IPURE; \
  293. MAPIMETHOD(Address) \
  294. (THIS_ ULONG FAR * lpulUIParam, \
  295. LPADRPARM lpAdrParms, \
  296. LPADRLIST FAR * lppAdrList) IPURE; \
  297. MAPIMETHOD(Details) \
  298. (THIS_ ULONG FAR * lpulUIParam, \
  299. LPFNDISMISS lpfnDismiss, \
  300. LPVOID lpvDismissContext, \
  301. ULONG cbEntryID, \
  302. LPENTRYID lpEntryID, \
  303. LPFNBUTTON lpfButtonCallback, \
  304. LPVOID lpvButtonContext, \
  305. LPTSTR lpszButtonText, \
  306. ULONG ulFlags) IPURE; \
  307. MAPIMETHOD(RecipOptions) \
  308. (THIS_ ULONG ulUIParam, \
  309. ULONG ulFlags, \
  310. LPADRENTRY lpRecip) IPURE; \
  311. MAPIMETHOD(QueryDefaultRecipOpt) \
  312. (THIS_ LPTSTR lpszAdrType, \
  313. ULONG ulFlags, \
  314. ULONG FAR * lpcValues, \
  315. LPSPropValue FAR * lppOptions) IPURE; \
  316. MAPIMETHOD(GetPAB) \
  317. (THIS_ ULONG FAR * lpcbEntryID, \
  318. LPENTRYID FAR * lppEntryID) IPURE; \
  319. MAPIMETHOD(SetPAB) \
  320. (THIS_ ULONG cbEntryID, \
  321. LPENTRYID lpEntryID) IPURE; \
  322. MAPIMETHOD(GetDefaultDir) \
  323. (THIS_ ULONG FAR * lpcbEntryID, \
  324. LPENTRYID FAR * lppEntryID) IPURE; \
  325. MAPIMETHOD(SetDefaultDir) \
  326. (THIS_ ULONG cbEntryID, \
  327. LPENTRYID lpEntryID) IPURE; \
  328. MAPIMETHOD(GetSearchPath) \
  329. (THIS_ ULONG ulFlags, \
  330. LPSRowSet FAR * lppSearchPath) IPURE; \
  331. MAPIMETHOD(SetSearchPath) \
  332. (THIS_ ULONG ulFlags, \
  333. LPSRowSet lpSearchPath) IPURE; \
  334. MAPIMETHOD(PrepareRecips) \
  335. (THIS_ ULONG ulFlags, \
  336. LPSPropTagArray lpPropTagArray, \
  337. LPADRLIST lpRecipList) IPURE; \
  338. #undef INTERFACE
  339. #define INTERFACE IAddrBook
  340. DECLARE_MAPI_INTERFACE_(IAddrBook, IMAPIProp)
  341. {
  342. BEGIN_INTERFACE
  343. MAPI_IUNKNOWN_METHODS(PURE)
  344. MAPI_IMAPIPROP_METHODS(PURE)
  345. MAPI_IADDRBOOK_METHODS(PURE)
  346. };
  347. DECLARE_MAPI_INTERFACE_PTR(IAddrBook, LPADRBOOK);
  348. /* IProfAdmin Interface ---------------------------------------------------- */
  349. /* Flags for CreateProfile */
  350. #define MAPI_DEFAULT_SERVICES 0x00000001
  351. /* GetProfileTable */
  352. /****** MAPI_UNICODE ((ULONG) 0x80000000) */
  353. #define MAPI_IPROFADMIN_METHODS(IPURE) \
  354. MAPIMETHOD(GetLastError) \
  355. (THIS_ HRESULT hResult, \
  356. ULONG ulFlags, \
  357. LPMAPIERROR FAR * lppMAPIError) IPURE; \
  358. MAPIMETHOD(GetProfileTable) \
  359. (THIS_ ULONG ulFlags, \
  360. LPMAPITABLE FAR * lppTable) IPURE; \
  361. MAPIMETHOD(CreateProfile) \
  362. (THIS_ LPTSTR lpszProfileName, \
  363. LPTSTR lpszPassword, \
  364. ULONG ulUIParam, \
  365. ULONG ulFlags) IPURE; \
  366. MAPIMETHOD(DeleteProfile) \
  367. (THIS_ LPTSTR lpszProfileName, \
  368. ULONG ulFlags) IPURE; \
  369. MAPIMETHOD(ChangeProfilePassword) \
  370. (THIS_ LPTSTR lpszProfileName, \
  371. LPTSTR lpszOldPassword, \
  372. LPTSTR lpszNewPassword, \
  373. ULONG ulFlags) IPURE; \
  374. MAPIMETHOD(CopyProfile) \
  375. (THIS_ LPTSTR lpszOldProfileName, \
  376. LPTSTR lpszOldPassword, \
  377. LPTSTR lpszNewProfileName, \
  378. ULONG ulUIParam, \
  379. ULONG ulFlags) IPURE; \
  380. MAPIMETHOD(RenameProfile) \
  381. (THIS_ LPTSTR lpszOldProfileName, \
  382. LPTSTR lpszOldPassword, \
  383. LPTSTR lpszNewProfileName, \
  384. ULONG ulUIParam, \
  385. ULONG ulFlags) IPURE; \
  386. MAPIMETHOD(SetDefaultProfile) \
  387. (THIS_ LPTSTR lpszProfileName, \
  388. ULONG ulFlags) IPURE; \
  389. MAPIMETHOD(AdminServices) \
  390. (THIS_ LPTSTR lpszProfileName, \
  391. LPTSTR lpszPassword, \
  392. ULONG ulUIParam, \
  393. ULONG ulFlags, \
  394. LPSERVICEADMIN FAR * lppServiceAdmin) IPURE; \
  395. #undef INTERFACE
  396. #define INTERFACE IProfAdmin
  397. DECLARE_MAPI_INTERFACE_(IProfAdmin, IUnknown)
  398. {
  399. BEGIN_INTERFACE
  400. MAPI_IUNKNOWN_METHODS(PURE)
  401. MAPI_IPROFADMIN_METHODS(PURE)
  402. };
  403. /* IMsgServiceAdmin Interface ---------------------------------------------- */
  404. /* Values for PR_RESOURCE_FLAGS in message service table */
  405. #define SERVICE_DEFAULT_STORE 0x00000001
  406. #define SERVICE_SINGLE_COPY 0x00000002
  407. #define SERVICE_CREATE_WITH_STORE 0x00000004
  408. #define SERVICE_PRIMARY_IDENTITY 0x00000008
  409. #define SERVICE_NO_PRIMARY_IDENTITY 0x00000020
  410. /* GetMsgServiceTable */
  411. /****** MAPI_UNICODE ((ULONG) 0x80000000) */
  412. /* GetProviderTable */
  413. /****** MAPI_UNICODE ((ULONG) 0x80000000) */
  414. #define MAPI_IMSGSERVICEADMIN_METHODS(IPURE) \
  415. MAPIMETHOD(GetLastError) \
  416. (THIS_ HRESULT hResult, \
  417. ULONG ulFlags, \
  418. LPMAPIERROR FAR * lppMAPIError) IPURE; \
  419. MAPIMETHOD(GetMsgServiceTable) \
  420. (THIS_ ULONG ulFlags, \
  421. LPMAPITABLE FAR * lppTable) IPURE; \
  422. MAPIMETHOD(CreateMsgService) \
  423. (THIS_ LPTSTR lpszService, \
  424. LPTSTR lpszDisplayName, \
  425. ULONG ulUIParam, \
  426. ULONG ulFlags) IPURE; \
  427. MAPIMETHOD(DeleteMsgService) \
  428. (THIS_ LPMAPIUID lpUID) IPURE; \
  429. MAPIMETHOD(CopyMsgService) \
  430. (THIS_ LPMAPIUID lpUID, \
  431. LPTSTR lpszDisplayName, \
  432. LPCIID lpInterfaceToCopy, \
  433. LPCIID lpInterfaceDst, \
  434. LPVOID lpObjectDst, \
  435. ULONG ulUIParam, \
  436. ULONG ulFlags) IPURE; \
  437. MAPIMETHOD(RenameMsgService) \
  438. (THIS_ LPMAPIUID lpUID, \
  439. ULONG ulFlags, \
  440. LPTSTR lpszDisplayName) IPURE; \
  441. MAPIMETHOD(ConfigureMsgService) \
  442. (THIS_ LPMAPIUID lpUID, \
  443. ULONG ulUIParam, \
  444. ULONG ulFlags, \
  445. ULONG cValues, \
  446. LPSPropValue lpProps) IPURE; \
  447. MAPIMETHOD(OpenProfileSection) \
  448. (THIS_ LPMAPIUID lpUID, \
  449. LPCIID lpInterface, \
  450. ULONG ulFlags, \
  451. LPPROFSECT FAR * lppProfSect) IPURE; \
  452. MAPIMETHOD(MsgServiceTransportOrder) \
  453. (THIS_ ULONG cUID, \
  454. LPMAPIUID lpUIDList, \
  455. ULONG ulFlags) IPURE; \
  456. MAPIMETHOD(AdminProviders) \
  457. (THIS_ LPMAPIUID lpUID, \
  458. ULONG ulFlags, \
  459. LPPROVIDERADMIN FAR * lppProviderAdmin) IPURE; \
  460. MAPIMETHOD(SetPrimaryIdentity) \
  461. (THIS_ LPMAPIUID lpUID, \
  462. ULONG ulFlags) IPURE; \
  463. MAPIMETHOD(GetProviderTable) \
  464. (THIS_ ULONG ulFlags, \
  465. LPMAPITABLE FAR * lppTable) IPURE; \
  466. #undef INTERFACE
  467. #define INTERFACE IMsgServiceAdmin
  468. DECLARE_MAPI_INTERFACE_(IMsgServiceAdmin, IUnknown)
  469. {
  470. BEGIN_INTERFACE
  471. MAPI_IUNKNOWN_METHODS(PURE)
  472. MAPI_IMSGSERVICEADMIN_METHODS(PURE)
  473. };
  474. #ifdef __cplusplus
  475. } /* extern "C" */
  476. #endif
  477. #endif /* MAPIX_H */