Source code of Windows XP (NT5)
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.

385 lines
10 KiB

  1. #include <wtypes.h>
  2. //#include <oaidl.h>
  3. #include <oleauto.h>
  4. #include <mapi.h>
  5. // Structures and Functions used by BMAPI and VB2C
  6. #define RECIPIENT ((USHORT)0x0001)
  7. #define FILE ((USHORT)0x0002)
  8. #define MESSAGE ((USHORT)0x0004)
  9. #define USESAFEARRAY ((USHORT)0x1000)
  10. #if defined (WIN32)
  11. #ifndef BMAPI_ENTRY // PFP
  12. #define BMAPI_ENTRY ULONG FAR PASCAL // define BMAPI_ENTRY PFP
  13. #endif // PFP
  14. #else
  15. #ifndef BMAPI_ENTRY // PFP
  16. #define BMAPI_ENTRY ULONG __export FAR PASCAL // define BMAPI_ENTRY PFP
  17. #endif // PFP
  18. #endif
  19. #ifndef LHANDLE
  20. #define LHANDLE ULONG
  21. #endif
  22. #ifndef ERR
  23. #define ERR USHORT
  24. #endif
  25. //-----------------------------------------------------------------------
  26. // WIN32 definitions of 32 bit VB interface function support
  27. //-----------------------------------------------------------------------
  28. typedef struct
  29. {
  30. ULONG ulReserved;
  31. BSTR bstrSubject;
  32. BSTR bstrNoteText;
  33. BSTR bstrMessageType;
  34. BSTR bstrDate;
  35. BSTR bstrConversationID;
  36. ULONG flFlags;
  37. ULONG nRecipCount;
  38. ULONG nFileCount;
  39. } VB_Message,FAR *lpVB_Message;
  40. typedef VB_Message VB_MESSAGE;
  41. typedef VB_Message FAR *LPVB_MESSAGE;
  42. typedef struct
  43. {
  44. ULONG ulReserved;
  45. ULONG ulRecipClass;
  46. BSTR bstrName;
  47. BSTR bstrAddress;
  48. ULONG ulEIDSize;
  49. BSTR bstrEID;
  50. } VB_Recip,FAR *lpVB_Recip;
  51. typedef VB_Recip VB_RECIPIENT;
  52. typedef VB_Recip FAR *LPVB_RECIPIENT;
  53. typedef struct
  54. {
  55. ULONG ulReserved;
  56. ULONG flFlags;
  57. ULONG nPosition;
  58. BSTR bstrPathName;
  59. BSTR bstrFileName;
  60. BSTR bstrFileType;
  61. } VB_File, FAR *lpVB_File;
  62. /*
  63. // OLEAUT32.DLL loadlib and getprocaddress support
  64. // WINOLEAUTAPI_(void) SysFreeString(BSTR);
  65. typedef VOID (STDAPICALLTYPE *LPFNSYSFREESTRING)
  66. ( BSTR bstr );
  67. // WINOLEAUTAPI_(unsigned int) SysStringByteLen(BSTR bstr);
  68. typedef UINT (STDAPICALLTYPE *LPFNSYSSTRINGBYTELEN)
  69. (BSTR bstr);
  70. // WINOLEAUTAPI_(BSTR) SysAllocStringByteLen(const char FAR* psz, unsigned int len);
  71. typedef BSTR (STDAPICALLTYPE *LPFNSYSALLOCSTRINGBYTELEN)
  72. (const char *psz, UINT len );
  73. // WINOLEAUTAPI_(BSTR) SysAllocString(const OLECHAR FAR*);
  74. typedef BSTR (STDAPICALLTYPE *LPFNSYSALLOCSTRING)
  75. (const OLECHAR * szwString);
  76. // WINOLEAUTAPI_(int) SysReAllocString(BSTR FAR*, const OLECHAR FAR*);
  77. typedef INT (STDAPICALLTYPE *LPFNSYSREALLOCSTRING)
  78. (BSTR * lpBstr, const OLECHAR * szwString);
  79. // WINOLEAUTAPI_(unsigned int) SysStringLen(BSTR);
  80. typedef UINT (STDAPICALLTYPE *LPFNSYSSTRINGLEN)
  81. (BSTR bstr);
  82. // WINOLEAUTAPI SafeArrayAccessData(SAFEARRAY FAR* psa, void HUGEP* FAR* ppvData);
  83. typedef HRESULT (STDAPICALLTYPE *LPFNSAFEARRAYACCESSDATA)
  84. (struct tagSAFEARRAY *psa, void **ppvData);
  85. // WINOLEAUTAPI SafeArrayUnaccessData(SAFEARRAY FAR* psa);
  86. typedef HRESULT (STDAPICALLTYPE *LPFNSAFEARRAYUNACCESSDATA)
  87. (struct tagSAFEARRAY *psa);
  88. extern LPFNSYSFREESTRING lpfnSysFreeString;
  89. extern LPFNSYSSTRINGBYTELEN lpfnSysStringByteLen;
  90. extern LPFNSYSALLOCSTRINGBYTELEN lpfnSysAllocStringByteLen;
  91. extern LPFNSYSALLOCSTRING lpfnSysAllocString;
  92. extern LPFNSYSREALLOCSTRING lpfnSysReAllocString;
  93. extern LPFNSYSSTRINGLEN lpfnSysStringLen;
  94. extern LPFNSAFEARRAYACCESSDATA lpfnSafeArrayAccessData;
  95. extern LPFNSAFEARRAYUNACCESSDATA lpfnSafeArrayUnaccessData;
  96. #undef SysFreeString
  97. #undef SysStringByteLen
  98. #undef SysAllocStringByteLen
  99. #undef SysAllocString
  100. #undef SysReAllocString
  101. #undef SysStringLen
  102. #undef SafeArrayAccessData
  103. #undef SafeArrayUnaccessData
  104. #define SysFreeString (*lpfnSysFreeString)
  105. #define SysStringByteLen (*lpfnSysStringByteLen)
  106. #define SysAllocStringByteLen (*lpfnSysAllocStringByteLen)
  107. #define SysAllocString (*lpfnSysAllocString)
  108. #define SysReAllocString (*lpfnSysReAllocString)
  109. #define SysStringLen (*lpfnSysStringLen)
  110. #define SafeArrayAccessData (*lpfnSafeArrayAccessData)
  111. #define SafeArrayUnaccessData (*lpfnSafeArrayUnaccessData)
  112. */
  113. typedef VB_File VB_FILE;
  114. typedef VB_File FAR * LPVB_FILE;
  115. typedef MapiMessage VB_MAPI_MESSAGE;
  116. typedef MapiMessage FAR * LPMAPI_MESSAGE;
  117. typedef LPMAPI_MESSAGE FAR *LPPMAPI_MESSAGE;
  118. typedef MapiRecipDesc MAPI_RECIPIENT;
  119. typedef MapiRecipDesc FAR * LPMAPI_RECIPIENT;
  120. typedef LPMAPI_RECIPIENT FAR *LPPMAPI_RECIPIENT;
  121. typedef MapiFileDesc MAPI_FILE;
  122. typedef MapiFileDesc FAR * LPMAPI_FILE;
  123. typedef LPMAPI_FILE FAR * LPPMAPI_FILE;
  124. typedef HANDLE FAR * LPHANDLE;
  125. typedef VB_File VB_FILE;
  126. typedef VB_File FAR * LPVB_FILE;
  127. typedef MapiMessage VB_MAPI_MESSAGE;
  128. typedef MapiMessage FAR * LPMAPI_MESSAGE;
  129. typedef LPMAPI_MESSAGE FAR *LPPMAPI_MESSAGE;
  130. typedef MapiRecipDesc MAPI_RECIPIENT;
  131. typedef MapiRecipDesc FAR * LPMAPI_RECIPIENT;
  132. typedef LPMAPI_RECIPIENT FAR *LPPMAPI_RECIPIENT;
  133. typedef MapiFileDesc MAPI_FILE;
  134. typedef MapiFileDesc FAR * LPMAPI_FILE;
  135. typedef LPMAPI_FILE FAR * LPPMAPI_FILE;
  136. typedef HANDLE FAR * LPHANDLE;
  137. typedef LPHANDLE FAR * LPPHANDLE;
  138. /*
  139. #if defined WIN32
  140. //-----------------------------------------------------------------------
  141. // WIN32 definitions of 32 bit VB interface functions
  142. //-----------------------------------------------------------------------
  143. BMAPI_ENTRY BMAPISendMail (LHANDLE hSession,
  144. ULONG ulUIParam,
  145. LPVB_MESSAGE lpM,
  146. LPSAFEARRAY * lppsaRecips,
  147. LPSAFEARRAY * lppsaFiles,
  148. ULONG flFlags,
  149. ULONG ulReserved);
  150. BMAPI_ENTRY BMAPIFindNext(LHANDLE hSession,
  151. ULONG ulUIParam,
  152. BSTR * bstrType,
  153. BSTR * bstrSeed,
  154. ULONG flFlags,
  155. ULONG ulReserved,
  156. BSTR * lpbstrId);
  157. BMAPI_ENTRY BMAPIReadMail (LPULONG lpulMessage,
  158. LPULONG nRecips,
  159. LPULONG nFiles,
  160. LHANDLE hSession,
  161. ULONG ulUIParam,
  162. BSTR * lpbstrID,
  163. ULONG flFlags,
  164. ULONG ulReserved);
  165. BMAPI_ENTRY BMAPIGetReadMail(ULONG lpMessage,
  166. LPVB_MESSAGE lpvbMessage,
  167. LPSAFEARRAY * lppsaRecips,
  168. LPSAFEARRAY * lppsaFiles,
  169. LPVB_RECIPIENT lpvbOrig);
  170. BMAPI_ENTRY BMAPISaveMail( LHANDLE hSession,
  171. ULONG ulUIParam,
  172. LPVB_MESSAGE lpM,
  173. LPSAFEARRAY * lppsaRecips,
  174. LPSAFEARRAY * lppsaFiles,
  175. ULONG flFlags,
  176. ULONG ulReserved,
  177. BSTR * lpbstrID);
  178. BMAPI_ENTRY BMAPIAddress (LPULONG lpulRecip,
  179. LHANDLE hSession,
  180. ULONG ulUIParam,
  181. BSTR * lpbstrCaption,
  182. ULONG ulEditFields,
  183. BSTR * lpbstrLabel,
  184. LPULONG lpulRecipients,
  185. LPSAFEARRAY * lppsaRecip, // LPVB_RECIPIENT
  186. ULONG ulFlags,
  187. ULONG ulReserved);
  188. BMAPI_ENTRY BMAPIGetAddress (ULONG ulRecipientData,
  189. ULONG count,
  190. LPSAFEARRAY * lppsaRecips);
  191. BMAPI_ENTRY BMAPIDetails (LHANDLE hSession,
  192. ULONG ulUIParam,
  193. LPVB_RECIPIENT lpVB,
  194. ULONG ulFlags,
  195. ULONG ulReserved);
  196. BMAPI_ENTRY BMAPIResolveName (LHANDLE hSession,
  197. ULONG ulUIParam,
  198. BSTR bstrMapiName,
  199. ULONG ulFlags,
  200. ULONG ulReserved,
  201. LPVB_RECIPIENT lpVB);
  202. */
  203. typedef ULONG (FAR PASCAL BMAPISENDMAIL)(
  204. LHANDLE hSession,
  205. ULONG ulUIParam,
  206. LPVB_MESSAGE lpM,
  207. LPSAFEARRAY * lppsaRecips,
  208. LPSAFEARRAY * lppsaFiles,
  209. ULONG flFlags,
  210. ULONG ulReserved
  211. );
  212. typedef BMAPISENDMAIL FAR *LPBMAPISENDMAIL;
  213. BMAPISENDMAIL BMAPISendMail;
  214. typedef ULONG (FAR PASCAL BMAPIFINDNEXT)(
  215. LHANDLE hSession,
  216. ULONG ulUIParam,
  217. BSTR * bstrType,
  218. BSTR * bstrSeed,
  219. ULONG flFlags,
  220. ULONG ulReserved,
  221. BSTR * lpbstrId
  222. );
  223. typedef BMAPIFINDNEXT FAR *LPBMAPIFINDNEXT;
  224. BMAPIFINDNEXT BMAPIFindNext;
  225. typedef ULONG (FAR PASCAL BMAPIREADMAIL)(
  226. LPULONG lpulMessage,
  227. LPULONG nRecips,
  228. LPULONG nFiles,
  229. LHANDLE hSession,
  230. ULONG ulUIParam,
  231. BSTR * lpbstrID,
  232. ULONG flFlags,
  233. ULONG ulReserved
  234. );
  235. typedef BMAPIREADMAIL FAR *LPBMAPIREADMAIL;
  236. BMAPIREADMAIL BMAPIReadMail;
  237. typedef ULONG (FAR PASCAL BMAPIGETREADMAIL)(
  238. ULONG lpMessage,
  239. LPVB_MESSAGE lpvbMessage,
  240. LPSAFEARRAY * lppsaRecips,
  241. LPSAFEARRAY * lppsaFiles,
  242. LPVB_RECIPIENT lpvbOrig
  243. );
  244. typedef BMAPIGETREADMAIL FAR *LPBMAPIGETREADMAIL;
  245. BMAPIGETREADMAIL BMAPIGetReadMail;
  246. typedef ULONG (FAR PASCAL BMAPISAVEMAIL)(
  247. LHANDLE hSession,
  248. ULONG ulUIParam,
  249. LPVB_MESSAGE lpM,
  250. LPSAFEARRAY * lppsaRecips,
  251. LPSAFEARRAY * lppsaFiles,
  252. ULONG flFlags,
  253. ULONG ulReserved,
  254. BSTR * lpbstrID
  255. );
  256. typedef BMAPISAVEMAIL FAR *LPBMAPISAVEMAIL;
  257. BMAPISAVEMAIL BMAPISaveMail;
  258. typedef ULONG (FAR PASCAL BMAPIADDRESS)(
  259. LPULONG lpulRecip,
  260. LHANDLE hSession,
  261. ULONG ulUIParam,
  262. BSTR * lpbstrCaption,
  263. ULONG ulEditFields,
  264. BSTR * lpbstrLabel,
  265. LPULONG lpulRecipients,
  266. LPSAFEARRAY * lppsaRecip, // LPVB_RECIPIENT
  267. ULONG ulFlags,
  268. ULONG ulReserved
  269. );
  270. typedef BMAPIADDRESS FAR *LPBMAPIADDRESS;
  271. BMAPIADDRESS BMAPIAddress;
  272. typedef ULONG (FAR PASCAL BMAPIGETADDRESS)(
  273. ULONG ulRecipientData,
  274. ULONG count,
  275. LPSAFEARRAY * lppsaRecips
  276. );
  277. typedef BMAPIGETADDRESS FAR *LPBMAPIGETADDRESS;
  278. BMAPIGETADDRESS BMAPIGetAddress;
  279. typedef ULONG (FAR PASCAL BMAPIDETAILS)(
  280. LHANDLE hSession,
  281. ULONG ulUIParam,
  282. LPVB_RECIPIENT lpVB,
  283. ULONG ulFlags,
  284. ULONG ulReserved
  285. );
  286. typedef BMAPIDETAILS FAR *LPBMAPIDETAILS;
  287. BMAPIDETAILS BMAPIDetails;
  288. typedef ULONG (FAR PASCAL BMAPIRESOLVENAME)(
  289. LHANDLE hSession,
  290. ULONG ulUIParam,
  291. BSTR bstrMapiName,
  292. ULONG ulFlags,
  293. ULONG ulReserved,
  294. LPVB_RECIPIENT lpVB
  295. );
  296. typedef BMAPIRESOLVENAME FAR *LPBMAPIRESOLVENAME;
  297. BMAPIRESOLVENAME BMAPIResolveName;