xref: /reactos/sdk/include/psdk/mimeole.idl (revision c2c66aff)
1*c2c66affSColin Finck/*
2*c2c66affSColin Finck * Copyright 2007 Robert Shearman for CodeWeavers
3*c2c66affSColin Finck *
4*c2c66affSColin Finck * This library is free software; you can redistribute it and/or
5*c2c66affSColin Finck * modify it under the terms of the GNU Lesser General Public
6*c2c66affSColin Finck * License as published by the Free Software Foundation; either
7*c2c66affSColin Finck * version 2.1 of the License, or (at your option) any later version.
8*c2c66affSColin Finck *
9*c2c66affSColin Finck * This library is distributed in the hope that it will be useful,
10*c2c66affSColin Finck * but WITHOUT ANY WARRANTY; without even the implied warranty of
11*c2c66affSColin Finck * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12*c2c66affSColin Finck * Lesser General Public License for more details.
13*c2c66affSColin Finck *
14*c2c66affSColin Finck * You should have received a copy of the GNU Lesser General Public
15*c2c66affSColin Finck * License along with this library; if not, write to the Free Software
16*c2c66affSColin Finck * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17*c2c66affSColin Finck */
18*c2c66affSColin Finck
19*c2c66affSColin Finckimport "ocidl.idl";
20*c2c66affSColin Finckimport "objidl.idl";
21*c2c66affSColin Finckimport "propidl.idl";
22*c2c66affSColin Finck
23*c2c66affSColin Finck#define DECLARE_HANDLE(name) typedef void *name
24*c2c66affSColin Finck
25*c2c66affSColin Finckinterface IMimeMessageCallback;
26*c2c66affSColin Finckinterface IMimeEnumAddressTypes;
27*c2c66affSColin Finckinterface IMimeMessageParts;
28*c2c66affSColin Finckinterface IMimeMessageTree;
29*c2c66affSColin Finckinterface IMimeBody;
30*c2c66affSColin Finckinterface IMimeEnumProperties;
31*c2c66affSColin Finck
32*c2c66affSColin Finckcpp_quote("DEFINE_GUID(CLSID_IMimeBody,      0xfd853cdb, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
33*c2c66affSColin Finckcpp_quote("DEFINE_GUID(CLSID_IMimeAllocator, 0xfd853cdd, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
34*c2c66affSColin Finckcpp_quote("DEFINE_GUID(CLSID_IMimeMessage,   0xfd853ce3, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
35*c2c66affSColin Finckcpp_quote("DEFINE_GUID(CLSID_IMimeSecurity,  0xfd853cde, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
36*c2c66affSColin Finckcpp_quote("DEFINE_GUID(CLSID_IVirtualStream, 0xfd853cdf, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
37*c2c66affSColin Finckcpp_quote("DEFINE_GUID(CLSID_IMimeHtmlProtocol,0x5300401,0xbcbc, 0x11d0, 0x85, 0xe3, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
38*c2c66affSColin Finckcpp_quote("DEFINE_GUID(CLSID_MimeEdit,       0x1c82ead9, 0x508e, 0x11d1, 0x8d, 0xcf, 0x0, 0xc0, 0x4f, 0xb9, 0x51, 0xf9);")
39*c2c66affSColin Finck
40*c2c66affSColin Finckcpp_quote("#define MIME_E_REG_CREATE_KEY         0x800cce01")
41*c2c66affSColin Finckcpp_quote("#define MIME_E_REG_QUERY_INFO         0x800cce02")
42*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_ENCTYPE        0x800cce03")
43*c2c66affSColin Finckcpp_quote("#define MIME_E_BOUNDARY_MISMATCH      0x800cce04")
44*c2c66affSColin Finckcpp_quote("#define MIME_E_NOT_FOUND              0x800cce05")
45*c2c66affSColin Finckcpp_quote("#define MIME_E_NO_DATA                0x800cce05")
46*c2c66affSColin Finckcpp_quote("#define MIME_E_BUFFER_TOO_SMALL       0x800cce06")
47*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_ITEM_FLAGS     0x800cce07")
48*c2c66affSColin Finckcpp_quote("#define MIME_E_ONE_LINE_ITEME         0x800cce08")
49*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_HANDLE         0x800cce09")
50*c2c66affSColin Finckcpp_quote("#define MIME_E_CHARSET_TRANSLATE      0x800cce0a")
51*c2c66affSColin Finckcpp_quote("#define MIME_E_NOT_INITIALIZED        0x800cce0b")
52*c2c66affSColin Finck
53*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_OPTION_VALUE   0x800cce1f")
54*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_OPTION_ID      0x800cce20")
55*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_HEADER_NAME    0x800cce21")
56*c2c66affSColin Finckcpp_quote("#define MIME_E_NOT_BOUND              0x800cce22")
57*c2c66affSColin Finckcpp_quote("#define MIME_E_MAX_SIZE_TOO_SMALL     0x800cce23")
58*c2c66affSColin Finckcpp_quote("#define MIME_E_MULTIPART_HAS_CHILDREN 0x800cce25")
59*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_PROP_FLAGS     0x800cce26")
60*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_ADDRESS_TYPE   0x800cce27")
61*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_OBJECT_IID     0x800cce28")
62*c2c66affSColin Finckcpp_quote("#define MIME_E_MLANG_DLL_NOT_FOUND    0x800cce29")
63*c2c66affSColin Finckcpp_quote("#define MIME_E_ROOT_NOT_EMPTY         0x800cce2a")
64*c2c66affSColin Finckcpp_quote("#define MIME_E_MLANG_BAD_DLL          0x800cce2b")
65*c2c66affSColin Finckcpp_quote("#define MIME_E_REG_OPEN_KEY           0x800cce2c")
66*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_INET_DATE      0x800cce2d")
67*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_BODYTYPE       0x800cce2e")
68*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_DELETE_TYPE    0x800cce2f")
69*c2c66affSColin Finckcpp_quote("#define MIME_E_OPTION_HAS_NO_VALUE    0x800cce30")
70*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_CHARSET_TYPE   0x800cce31")
71*c2c66affSColin Finck
72*c2c66affSColin Finckcpp_quote("#define MIME_E_INVALID_TEXT_TYPE      0x800cce38")
73*c2c66affSColin Finck
74*c2c66affSColin Finckcpp_quote("#define MIME_E_SECURITY_NOOP          0x800cceb1")
75*c2c66affSColin Finckcpp_quote("#define MIME_S_SECURITY_NOOP          0x000cceb1")
76*c2c66affSColin Finck
77*c2c66affSColin Finckcpp_quote("typedef enum tagMIMEPROPID {")
78*c2c66affSColin Finckcpp_quote("    PID_HDR_NEWSGROUP  = 2,")
79*c2c66affSColin Finckcpp_quote("    PID_HDR_NEWSGROUPS = 3,")
80*c2c66affSColin Finckcpp_quote("    PID_HDR_REFS       = 4,")
81*c2c66affSColin Finckcpp_quote("    PID_HDR_SUBJECT    = 5,")
82*c2c66affSColin Finckcpp_quote("    PID_HDR_FROM       = 6,")
83*c2c66affSColin Finckcpp_quote("    PID_HDR_MESSAGEID  = 7,")
84*c2c66affSColin Finckcpp_quote("    PID_HDR_RETURNPATH = 8,")
85*c2c66affSColin Finckcpp_quote("    PID_HDR_RR         = 9,")
86*c2c66affSColin Finckcpp_quote("    PID_HDR_RETRCPTO   = 10,")
87*c2c66affSColin Finckcpp_quote("    PID_HDR_APPARTO    = 11,")
88*c2c66affSColin Finckcpp_quote("    PID_HDR_DATE       = 12,")
89*c2c66affSColin Finckcpp_quote("    PID_HDR_RECEIVED   = 13,")
90*c2c66affSColin Finckcpp_quote("    PID_HDR_REPLYTO    = 14,")
91*c2c66affSColin Finckcpp_quote("    PID_HDR_XMAILER    = 15,")
92*c2c66affSColin Finckcpp_quote("    PID_HDR_BCC        = 16,")
93*c2c66affSColin Finckcpp_quote("    PID_HDR_MIMEVER    = 17,")
94*c2c66affSColin Finckcpp_quote("    PID_HDR_CNTTYPE    = 18,")
95*c2c66affSColin Finckcpp_quote("    PID_HDR_CNTXFER    = 19,")
96*c2c66affSColin Finckcpp_quote("    PID_HDR_CNTID      = 20,")
97*c2c66affSColin Finckcpp_quote("    PID_HDR_CNTDESC    = 21,")
98*c2c66affSColin Finckcpp_quote("    PID_HDR_CNTDISP    = 22,")
99*c2c66affSColin Finckcpp_quote("    PID_HDR_CNTBASE    = 23,")
100*c2c66affSColin Finckcpp_quote("    PID_HDR_CNTLOC     = 24,")
101*c2c66affSColin Finckcpp_quote("    PID_HDR_TO         = 25,")
102*c2c66affSColin Finckcpp_quote("    PID_HDR_PATH       = 26,")
103*c2c66affSColin Finckcpp_quote("    PID_HDR_FOLLOWUPTO = 27,")
104*c2c66affSColin Finckcpp_quote("    PID_HDR_EXPIRES    = 28,")
105*c2c66affSColin Finckcpp_quote("    PID_HDR_CC         = 29,")
106*c2c66affSColin Finckcpp_quote("    PID_HDR_CONTROL    = 30,")
107*c2c66affSColin Finckcpp_quote("    PID_HDR_DISTRIB    = 31,")
108*c2c66affSColin Finckcpp_quote("    PID_HDR_KEYWORDS   = 32,")
109*c2c66affSColin Finckcpp_quote("    PID_HDR_SUMMARY    = 33,")
110*c2c66affSColin Finckcpp_quote("    PID_HDR_APPROVED   = 34,")
111*c2c66affSColin Finckcpp_quote("    PID_HDR_LINES      = 35,")
112*c2c66affSColin Finckcpp_quote("    PID_HDR_XREF       = 36,")
113*c2c66affSColin Finckcpp_quote("    PID_HDR_ORG        = 37,")
114*c2c66affSColin Finckcpp_quote("    PID_HDR_XNEWSRDR   = 38,")
115*c2c66affSColin Finckcpp_quote("    PID_HDR_XPRI       = 39,")
116*c2c66affSColin Finckcpp_quote("    PID_HDR_XMSPRI     = 40,")
117*c2c66affSColin Finckcpp_quote("    PID_PAR_FILENAME   = 41,")
118*c2c66affSColin Finckcpp_quote("    PID_PAR_BOUNDARY   = 42,")
119*c2c66affSColin Finckcpp_quote("    PID_PAR_CHARSET    = 43,")
120*c2c66affSColin Finckcpp_quote("    PID_PAR_NAME       = 44,")
121*c2c66affSColin Finckcpp_quote("    PID_ATT_FILENAME   = 45,")
122*c2c66affSColin Finckcpp_quote("    PID_ATT_GENFNAME   = 46,")
123*c2c66affSColin Finckcpp_quote("    PID_ATT_PRITYPE    = 47,")
124*c2c66affSColin Finckcpp_quote("    PID_ATT_SUBTYPE    = 48,")
125*c2c66affSColin Finckcpp_quote("    PID_ATT_NORMSUBJ   = 49,")
126*c2c66affSColin Finckcpp_quote("    PID_ATT_ILLEGAL    = 50,")
127*c2c66affSColin Finckcpp_quote("    PID_ATT_RENDERED   = 51,")
128*c2c66affSColin Finckcpp_quote("    PID_ATT_SENTTIME   = 52,")
129*c2c66affSColin Finckcpp_quote("    PID_ATT_RECVTIME   = 53,")
130*c2c66affSColin Finckcpp_quote("    PID_ATT_PRIORITY   = 54,")
131*c2c66affSColin Finckcpp_quote("    PID_HDR_COMMENT    = 55,")
132*c2c66affSColin Finckcpp_quote("    PID_HDR_ENCODING   = 56,")
133*c2c66affSColin Finckcpp_quote("    PID_HDR_ENCRYPTED  = 57,")
134*c2c66affSColin Finckcpp_quote("    PID_HDR_OFFSETS    = 58,")
135*c2c66affSColin Finckcpp_quote("    PID_HDR_XUNSENT    = 59,")
136*c2c66affSColin Finckcpp_quote("    PID_HDR_ARTICLEID  = 60,")
137*c2c66affSColin Finckcpp_quote("    PID_HDR_SENDER     = 61,")
138*c2c66affSColin Finckcpp_quote("    PID_ATT_SERVER     = 62,")
139*c2c66affSColin Finckcpp_quote("    PID_ATT_ACCOUNT    = 63,")
140*c2c66affSColin Finckcpp_quote("    PID_ATT_UIDL       = 64,")
141*c2c66affSColin Finckcpp_quote("    PID_ATT_STOREMSGID = 65,")
142*c2c66affSColin Finckcpp_quote("    PID_ATT_USERNAME   = 66,")
143*c2c66affSColin Finckcpp_quote("    PID_ATT_FORWARDTO  = 67,")
144*c2c66affSColin Finckcpp_quote("    PID_ATT_STOREFOLDERID = 68,")
145*c2c66affSColin Finckcpp_quote("    PID_ATT_GHOSTED       = 69,")
146*c2c66affSColin Finckcpp_quote("    PID_ATT_UNCACHEDSIZE  = 70,")
147*c2c66affSColin Finckcpp_quote("    PID_ATT_COMBINED      = 71,")
148*c2c66affSColin Finckcpp_quote("    PID_ATT_AUTOINLINED   = 72,")
149*c2c66affSColin Finckcpp_quote("    PID_HDR_DISP_NOTIFICATION_TO = 73,")
150*c2c66affSColin Finckcpp_quote("    PID_PAR_REPLYTYPE     = 74,")
151*c2c66affSColin Finckcpp_quote("    PID_PAR_FORMAT        = 75,")
152*c2c66affSColin Finckcpp_quote("    PID_ATT_FORMAT        = 76,")
153*c2c66affSColin Finckcpp_quote("    PID_HDR_INREPLYTO     = 77,")
154*c2c66affSColin Finckcpp_quote("    PID_ATT_ACCOUNTNAME   = 78,")
155*c2c66affSColin Finckcpp_quote("    PID_LAST              = 79,")
156*c2c66affSColin Finckcpp_quote("} MIMEPROPID;")
157*c2c66affSColin Finck
158*c2c66affSColin Finckcpp_quote("#define ISPIDSTR(_name)               (((DWORD_PTR)(_name) >> 16) == 0)")
159*c2c66affSColin Finckcpp_quote("#define STRTOPID(_name)               ((DWORD)((DWORD_PTR)((LPCSTR)(_name))))")
160*c2c66affSColin Finckcpp_quote("#define PIDTOSTR(_id)                 ((LPCSTR)((DWORD_PTR)(_id)))")
161*c2c66affSColin Finck
162*c2c66affSColin Finckcpp_quote("#define TYPEDID_ID(_typedid)          (((ULONG)(_typedid))>>16)")
163*c2c66affSColin Finckcpp_quote("#define TYPEDID_MASK                  ((ULONG)0xffff)")
164*c2c66affSColin Finckcpp_quote("#define TYPEDID_TYPE(t)               ((VARTYPE)((t) & TYPEDID_MASK))")
165*c2c66affSColin Finck
166*c2c66affSColin Finckcpp_quote("#define OID_ALLOW_8BIT_HEADER         (0x00010000 | VT_BOOL)")
167*c2c66affSColin Finckcpp_quote("#define OID_CBMAX_HEADER_LINE         (0x00020000 | VT_UI4)")
168*c2c66affSColin Finckcpp_quote("#define OID_SAVE_FORMAT               (0x00030000 | VT_UI4)")
169*c2c66affSColin Finckcpp_quote("#define OID_WRAP_BODY_TEXT            (0x00040000 | VT_BOOL)")
170*c2c66affSColin Finckcpp_quote("#define OID_CBMAX_BODY_LINE           (0x00050000 | VT_UI4)")
171*c2c66affSColin Finckcpp_quote("#define OID_TRANSMIT_BODY_ENCODING    (0x00060000 | VT_UI4)")
172*c2c66affSColin Finckcpp_quote("#define OID_TRANSMIT_TEXT_ENCODING    (0x00070000 | VT_UI4)")
173*c2c66affSColin Finckcpp_quote("#define OID_GENERATE_MESSAGE_ID       (0x00080000 | VT_BOOL)")
174*c2c66affSColin Finckcpp_quote("#define OID_HIDE_TNEF_ATTACHMENTS     (0x000e0000 | VT_BOOL)")
175*c2c66affSColin Finckcpp_quote("#define OID_CLEANUP_TREE_ON_SAVE      (0x000f0000 | VT_BOOL)")
176*c2c66affSColin Finckcpp_quote("#define OID_BODY_REMOVE_NBSP          (0x00140000 | VT_BOOL)")
177*c2c66affSColin Finckcpp_quote("#define OID_DEFAULT_BODY_CHARSET      (0x00150000 | VT_UI4)")
178*c2c66affSColin Finckcpp_quote("#define OID_DEFAULT_HEADER_CHARSET    (0x00160000 | VT_UI4)")
179*c2c66affSColin Finckcpp_quote("#define OID_DBCS_ESCAPE_IS_8BIT       (0x00170000 | VT_BOOL)")
180*c2c66affSColin Finckcpp_quote("#define OID_SECURITY_TYPE             (0x00180000 | VT_UI4)")
181*c2c66affSColin Finckcpp_quote("#define OID_SECURITY_HWND_OWNER       (0x00320000 | VT_UI4)")
182*c2c66affSColin Finckcpp_quote("#define OID_HEADER_RELOAD_TYPE        (0x00370000 | VT_UI4)")
183*c2c66affSColin Finckcpp_quote("#define OID_CAN_INLINE_TEXT_BODIES    (0x00380000 | VT_BOOL)")
184*c2c66affSColin Finckcpp_quote("#define OID_SHOW_MACBINARY            (0x00390000 | VT_BOOL)")
185*c2c66affSColin Finckcpp_quote("#define OID_SAVEBODY_KEEPBOUNDARY     (0x00400000 | VT_BOOL)")
186*c2c66affSColin Finck
187*c2c66affSColin Finckcpp_quote("#define OID_SECURITY_2KEY_CERT_BAG    (0x00590000 | VT_VECTOR | VT_UI4)")
188*c2c66affSColin Finckcpp_quote("#define OID_SECURITY_2KEY_CERT_BAG_64 (0x00590000 | VT_VECTOR | VT_UI8)")
189*c2c66affSColin Finck
190*c2c66affSColin Finck[
191*c2c66affSColin Finck    uuid(e4b28371-83b0-11d0-8259-00c04fd85ab4),
192*c2c66affSColin Finck    version(1.0)
193*c2c66affSColin Finck]
194*c2c66affSColin Fincklibrary MIMEOLE
195*c2c66affSColin Finck{
196*c2c66affSColin Finck    importlib("stdole2.tlb");
197*c2c66affSColin Finck
198*c2c66affSColin Finck    DECLARE_HANDLE(HCHARSET);
199*c2c66affSColin Finck    DECLARE_HANDLE(HBODY);
200*c2c66affSColin Finck    DECLARE_HANDLE(HHEADERROW);
201*c2c66affSColin Finck
202*c2c66affSColin Finck    typedef HCHARSET *LPHCHARSET;
203*c2c66affSColin Finck    typedef HBODY *LPHBODY;
204*c2c66affSColin Finck    typedef HHEADERROW *LPHHEADERROW;
205*c2c66affSColin Finck    typedef DWORD TYPEDID;
206*c2c66affSColin Finck    typedef const PROPVARIANT *LPCPROPVARIANT;
207*c2c66affSColin Finck    typedef const BLOB *LPCBLOB;
208*c2c66affSColin Finck
209*c2c66affSColin Finck    typedef enum tagRELOADTYPE
210*c2c66affSColin Finck    {
211*c2c66affSColin Finck        RELOAD_HEADER_NONE,
212*c2c66affSColin Finck        RELOAD_HEADER_RESET,
213*c2c66affSColin Finck        RELOAD_HEADER_APPEND,
214*c2c66affSColin Finck        RELOAD_HEADER_REPLACE,
215*c2c66affSColin Finck    } RELOADTYPE;
216*c2c66affSColin Finck
217*c2c66affSColin Finck    typedef enum tagMIMESAVETYPE
218*c2c66affSColin Finck    {
219*c2c66affSColin Finck        SAVE_RFC822,
220*c2c66affSColin Finck        SAVE_RFC1521,
221*c2c66affSColin Finck    } MIMESAVETYPE;
222*c2c66affSColin Finck
223*c2c66affSColin Finck    typedef enum tagCSETAPPLYTYPE
224*c2c66affSColin Finck    {
225*c2c66affSColin Finck        CSET_APPLY_UNTAGGED,
226*c2c66affSColin Finck        CSET_APPLY_ALL,
227*c2c66affSColin Finck        CSET_APPLY_TAG_ALL,
228*c2c66affSColin Finck    } CSETAPPLYTYPE;
229*c2c66affSColin Finck
230*c2c66affSColin Finck    typedef enum tagENCODINGTYPE
231*c2c66affSColin Finck    {
232*c2c66affSColin Finck        IET_BINARY,
233*c2c66affSColin Finck        IET_BASE64,
234*c2c66affSColin Finck        IET_UUENCODE,
235*c2c66affSColin Finck        IET_QP,
236*c2c66affSColin Finck        IET_7BIT,
237*c2c66affSColin Finck        IET_8BIT,
238*c2c66affSColin Finck        IET_INETCSET,
239*c2c66affSColin Finck        IET_UNICODE,
240*c2c66affSColin Finck        IET_RFC1522,
241*c2c66affSColin Finck        IET_ENCODED,
242*c2c66affSColin Finck        IET_CURRENT,
243*c2c66affSColin Finck        IET_UNKNOWN,
244*c2c66affSColin Finck        IET_BINHEX40,
245*c2c66affSColin Finck        IET_LAST
246*c2c66affSColin Finck    } ENCODINGTYPE;
247*c2c66affSColin Finck
248*c2c66affSColin Finck    const SHORT IET_DECODED = IET_BINARY;
249*c2c66affSColin Finck
250*c2c66affSColin Finck    const SHORT CCHMAX_HEADER_LINE = 1000;
251*c2c66affSColin Finck
252*c2c66affSColin Finck    [
253*c2c66affSColin Finck        uuid(c5588349-7f86-11d0-8252-00c04fd85ab4),
254*c2c66affSColin Finck        object
255*c2c66affSColin Finck    ]
256*c2c66affSColin Finck    interface IMimeInternational : IUnknown
257*c2c66affSColin Finck    {
258*c2c66affSColin Finck        typedef [unique] IMimeInternational *LPMIMEINTERNATIONAL;
259*c2c66affSColin Finck        typedef DWORD CODEPAGEID;
260*c2c66affSColin Finck
261*c2c66affSColin Finck        const CODEPAGEID CP_USASCII = 1252;
262*c2c66affSColin Finck        const CODEPAGEID CP_UNICODE = 1200;
263*c2c66affSColin Finck        const CODEPAGEID CP_JAUTODETECT = 50932;
264*c2c66affSColin Finck        const CODEPAGEID CP_KAUTODETECT = 50949;
265*c2c66affSColin Finck        const CODEPAGEID CP_ISO2022JPESC = 50221;
266*c2c66affSColin Finck        const CODEPAGEID CP_ISO2022JPSIO = 50222;
267*c2c66affSColin Finck
268*c2c66affSColin Finck        const SHORT CCHMAX_CSET_NAME = 128;
269*c2c66affSColin Finck        const SHORT CCHMAX_LANG_NAME = 128;
270*c2c66affSColin Finck        const SHORT CCHMAX_FACE_NAME = 128;
271*c2c66affSColin Finck
272*c2c66affSColin Finck        typedef struct tagINETCSETINFO
273*c2c66affSColin Finck        {
274*c2c66affSColin Finck            CHAR        szName[CCHMAX_CSET_NAME];
275*c2c66affSColin Finck            HCHARSET    hCharset;
276*c2c66affSColin Finck            CODEPAGEID  cpiWindows;
277*c2c66affSColin Finck            CODEPAGEID  cpiInternet;
278*c2c66affSColin Finck            DWORD       dwReserved1;
279*c2c66affSColin Finck        } INETCSETINFO, *LPINETCSETINFO;
280*c2c66affSColin Finck
281*c2c66affSColin Finck        typedef enum tagINETLANGMASK
282*c2c66affSColin Finck        {
283*c2c66affSColin Finck            ILM_FAMILY          = 0x01,
284*c2c66affSColin Finck            ILM_NAME            = 0x02,
285*c2c66affSColin Finck            ILM_BODYCSET        = 0x04,
286*c2c66affSColin Finck            ILM_HEADERCSET      = 0x08,
287*c2c66affSColin Finck            ILM_WEBCSET         = 0x10,
288*c2c66affSColin Finck            ILM_FIXEDFONT       = 0x20,
289*c2c66affSColin Finck            ILM_VARIABLEFONT    = 0x40,
290*c2c66affSColin Finck        } INETLANGMASK;
291*c2c66affSColin Finck
292*c2c66affSColin Finck        typedef struct tagCODEPAGEINFO
293*c2c66affSColin Finck        {
294*c2c66affSColin Finck            DWORD dwMask;
295*c2c66affSColin Finck            CODEPAGEID cpiCodePage;
296*c2c66affSColin Finck            BOOL fIsValidCodePage;
297*c2c66affSColin Finck            ULONG ulMaxCharSize;
298*c2c66affSColin Finck            BOOL fInternetCP;
299*c2c66affSColin Finck            CODEPAGEID cpiFamily;
300*c2c66affSColin Finck            CHAR szName[CCHMAX_LANG_NAME];
301*c2c66affSColin Finck            CHAR szBodyCset[CCHMAX_CSET_NAME];
302*c2c66affSColin Finck            CHAR szHeaderCset[CCHMAX_CSET_NAME];
303*c2c66affSColin Finck            CHAR szWebCset[CCHMAX_CSET_NAME];
304*c2c66affSColin Finck            CHAR szFixedFont[CCHMAX_FACE_NAME];
305*c2c66affSColin Finck            CHAR szVariableFont[CCHMAX_FACE_NAME];
306*c2c66affSColin Finck            ENCODINGTYPE ietNewsDefault;
307*c2c66affSColin Finck            ENCODINGTYPE ietMailDefault;
308*c2c66affSColin Finck            DWORD dwReserved1;
309*c2c66affSColin Finck        } CODEPAGEINFO, *LPCODEPAGEINFO;
310*c2c66affSColin Finck
311*c2c66affSColin Finck        typedef struct tagRFC1522INFO
312*c2c66affSColin Finck        {
313*c2c66affSColin Finck            BOOL fRfc1522Allowed;
314*c2c66affSColin Finck            BOOL fRfc1522Used;
315*c2c66affSColin Finck            BOOL fAllow8bit;
316*c2c66affSColin Finck            HCHARSET hRfc1522Cset;
317*c2c66affSColin Finck        } RFC1522INFO, *LPRFC1522INFO;
318*c2c66affSColin Finck
319*c2c66affSColin Finck        typedef enum tagCHARSETTYPE
320*c2c66affSColin Finck        {
321*c2c66affSColin Finck            CHARSET_BODY,
322*c2c66affSColin Finck            CHARSET_HEADER,
323*c2c66affSColin Finck            CHARSET_WEB,
324*c2c66affSColin Finck        } CHARSETTYPE;
325*c2c66affSColin Finck
326*c2c66affSColin Finck
327*c2c66affSColin Finck        HRESULT SetDefaultCharset(
328*c2c66affSColin Finck            [in]        HCHARSET hCharset);
329*c2c66affSColin Finck        HRESULT GetDefaultCharset(
330*c2c66affSColin Finck            [out]       LPHCHARSET phCharset);
331*c2c66affSColin Finck        HRESULT GetCodePageCharset(
332*c2c66affSColin Finck            [in]        CODEPAGEID cpiCodePage,
333*c2c66affSColin Finck            [in]        CHARSETTYPE ctCsetType,
334*c2c66affSColin Finck            [out]       LPHCHARSET phCharset);
335*c2c66affSColin Finck        HRESULT FindCharset(
336*c2c66affSColin Finck            [in]        LPCSTR pszCharset,
337*c2c66affSColin Finck            [out]       LPHCHARSET phCharset);
338*c2c66affSColin Finck        HRESULT GetCharsetInfo(
339*c2c66affSColin Finck            [in]        HCHARSET hCharset,
340*c2c66affSColin Finck            [in, out]   LPINETCSETINFO pCsetInfo);
341*c2c66affSColin Finck        HRESULT GetCodePageInfo(
342*c2c66affSColin Finck            [in]        CODEPAGEID cpiCodePage,
343*c2c66affSColin Finck            [in, out]   LPCODEPAGEINFO pCodePageInfo);
344*c2c66affSColin Finck        HRESULT CanConvertCodePages(
345*c2c66affSColin Finck            [in]        CODEPAGEID cpiSource,
346*c2c66affSColin Finck            [in]        CODEPAGEID cpiDest);
347*c2c66affSColin Finck        HRESULT DecodeHeader(
348*c2c66affSColin Finck            [in]        HCHARSET hCharset,
349*c2c66affSColin Finck            [in]        LPCSTR pszData,
350*c2c66affSColin Finck            [in, out]   LPPROPVARIANT pDecoded,
351*c2c66affSColin Finck            [in, out]   LPRFC1522INFO pRfc1522Info);
352*c2c66affSColin Finck        HRESULT EncodeHeader(
353*c2c66affSColin Finck            [in]        HCHARSET hCharset,
354*c2c66affSColin Finck            [in]        LPPROPVARIANT pData,
355*c2c66affSColin Finck            [out]       LPSTR *ppszEncoded,
356*c2c66affSColin Finck            [in, out]   LPRFC1522INFO pRfc1522Info);
357*c2c66affSColin Finck        HRESULT ConvertBuffer(
358*c2c66affSColin Finck            [in]        CODEPAGEID cpiSource,
359*c2c66affSColin Finck            [in]        CODEPAGEID cpiDest,
360*c2c66affSColin Finck            [in]        LPBLOB pIn,
361*c2c66affSColin Finck            [in, out]   LPBLOB pOut,
362*c2c66affSColin Finck            [out]       ULONG *pcbRead);
363*c2c66affSColin Finck        HRESULT ConvertString(
364*c2c66affSColin Finck            [in]        CODEPAGEID cpiSource,
365*c2c66affSColin Finck            [in]        CODEPAGEID cpiDest,
366*c2c66affSColin Finck            [in]        LPPROPVARIANT pIn,
367*c2c66affSColin Finck            [in, out]   LPPROPVARIANT pOut);
368*c2c66affSColin Finck        HRESULT MLANG_ConvertInetReset(void);
369*c2c66affSColin Finck        HRESULT MLANG_ConvertInetString(
370*c2c66affSColin Finck            [in]        CODEPAGEID cpiSource,
371*c2c66affSColin Finck            [in]        CODEPAGEID cpiDest,
372*c2c66affSColin Finck            [in]        LPCSTR pSource,
373*c2c66affSColin Finck            [in]        int *pnSizeOfSource,
374*c2c66affSColin Finck            [in,out,unique]  LPSTR pDestination,
375*c2c66affSColin Finck            [in]        int *pnDstSize);
376*c2c66affSColin Finck        HRESULT Rfc1522Decode(
377*c2c66affSColin Finck            [in]        LPCSTR pszValue,
378*c2c66affSColin Finck            [in,ref]    LPSTR pszCharset,
379*c2c66affSColin Finck            [in]        ULONG cchmax,
380*c2c66affSColin Finck            [out]       LPSTR *ppszDecoded);
381*c2c66affSColin Finck        HRESULT Rfc1522Encode(
382*c2c66affSColin Finck            [in]        LPCSTR pszValue,
383*c2c66affSColin Finck            [in]        HCHARSET hCharset,
384*c2c66affSColin Finck            [out]       LPSTR *ppszEncoded);
385*c2c66affSColin Finck    }
386*c2c66affSColin Finck
387*c2c66affSColin Finck    [
388*c2c66affSColin Finck        uuid(c5588353-7f86-11d0-8252-00c04fd85ab4),
389*c2c66affSColin Finck        object
390*c2c66affSColin Finck    ]
391*c2c66affSColin Finck    interface IMimeSecurity : IUnknown
392*c2c66affSColin Finck    {
393*c2c66affSColin Finck        typedef [unique] IMimeSecurity *LPMIMESECURITY;
394*c2c66affSColin Finck
395*c2c66affSColin Finck        cpp_quote("#ifdef __WINE_WINCRYPT_H")
396*c2c66affSColin Finck        cpp_quote("typedef PCCERT_CONTEXT PCX509CERT;")
397*c2c66affSColin Finck        cpp_quote("#else")
398*c2c66affSColin Finck        typedef const void *PCX509CERT;
399*c2c66affSColin Finck        typedef void *HCERTSTORE;
400*c2c66affSColin Finck        cpp_quote("#endif")
401*c2c66affSColin Finck
402*c2c66affSColin Finck        typedef BLOB THUMBBLOB;
403*c2c66affSColin Finck        typedef void *HCAPICERTSTORE;
404*c2c66affSColin Finck
405*c2c66affSColin Finck        cpp_quote("#define MST_NONE             0x00000000")
406*c2c66affSColin Finck        cpp_quote("#define MST_THIS_SIGN        0x00000001")
407*c2c66affSColin Finck        cpp_quote("#define MST_THIS_ENCRYPT     0x00000002")
408*c2c66affSColin Finck        cpp_quote("#define MST_BLOB_FLAG        0x00000004")
409*c2c66affSColin Finck        cpp_quote("#define MST_THIS_BLOBSIGN    (MST_BLOB_FLAG | MST_THIS_SIGN)")
410*c2c66affSColin Finck        cpp_quote("#define MST_CHILD_SIGN       0x00000100")
411*c2c66affSColin Finck        cpp_quote("#define MST_CHILD_ENCRYPT    0x00000200")
412*c2c66affSColin Finck        cpp_quote("#define MST_SUBMSG_SIGN      0x00001000")
413*c2c66affSColin Finck        cpp_quote("#define MST_SUBMSG_ENCRYPT   0x00002000")
414*c2c66affSColin Finck        cpp_quote("#define MST_RECEIPT_REQUEST  0x00010000")
415*c2c66affSColin Finck        cpp_quote("#define MST_CLASS_SMIME_V1   0x00000000")
416*c2c66affSColin Finck        cpp_quote("#define MST_CLASS_PGP        0x01000000")
417*c2c66affSColin Finck
418*c2c66affSColin Finck        typedef enum tagCERTSTATE
419*c2c66affSColin Finck        {
420*c2c66affSColin Finck            CERTIFICATE_OK,
421*c2c66affSColin Finck            CERTIFICATE_NOT_PRESENT,
422*c2c66affSColin Finck            CERTIFICATE_EXPIRED,
423*c2c66affSColin Finck            CERTIFICATE_CHAIN_TOO_LONG,
424*c2c66affSColin Finck            CERTIFICATE_MISSING_ISSUER,
425*c2c66affSColin Finck            CERTIFICATE_CRL_LISTED,
426*c2c66affSColin Finck            CERTIFICATE_NOT_TRUSTED,
427*c2c66affSColin Finck            CERTIFICATE_INVALID,
428*c2c66affSColin Finck            CERTIFICATE_ERROR,
429*c2c66affSColin Finck            CERTIFICATE_NOPRINT,
430*c2c66affSColin Finck            CERTIFICATE_UNKNOWN
431*c2c66affSColin Finck        } CERTSTATE;
432*c2c66affSColin Finck
433*c2c66affSColin Finck        typedef enum tagCERTNAMETYPE
434*c2c66affSColin Finck        {
435*c2c66affSColin Finck            SIMPLE,
436*c2c66affSColin Finck            OID,
437*c2c66affSColin Finck            X500,
438*c2c66affSColin Finck        } CERTNAMETYPE;
439*c2c66affSColin Finck
440*c2c66affSColin Finck        typedef enum tagCERTDATAID
441*c2c66affSColin Finck        {
442*c2c66affSColin Finck            CDID_EMAIL,
443*c2c66affSColin Finck            CDID_MAX
444*c2c66affSColin Finck        } CERTDATAID;
445*c2c66affSColin Finck
446*c2c66affSColin Finck        typedef struct tagX509CERTRESULT
447*c2c66affSColin Finck        {
448*c2c66affSColin Finck            DWORD       cEntries;
449*c2c66affSColin Finck            CERTSTATE  *rgcs;
450*c2c66affSColin Finck            PCX509CERT *rgpCert;
451*c2c66affSColin Finck        } X509CERTRESULT, *PX509CERTRESULT;
452*c2c66affSColin Finck        typedef const X509CERTRESULT *PCX509CERTRESULT;
453*c2c66affSColin Finck
454*c2c66affSColin Finck        HRESULT InitNew(void);
455*c2c66affSColin Finck
456*c2c66affSColin Finck        HRESULT CheckInit(void);
457*c2c66affSColin Finck
458*c2c66affSColin Finck        HRESULT EncodeMessage(
459*c2c66affSColin Finck            [in]    IMimeMessageTree */*const*/ pTree,
460*c2c66affSColin Finck            [in]    DWORD dwFlags);
461*c2c66affSColin Finck
462*c2c66affSColin Finck        HRESULT EncodeBody(
463*c2c66affSColin Finck            [in]    IMimeMessageTree */*const*/ pTree,
464*c2c66affSColin Finck            [in]    HBODY hEncodeRoot,
465*c2c66affSColin Finck            [in]    DWORD dwFlags);
466*c2c66affSColin Finck
467*c2c66affSColin Finck        HRESULT DecodeMessage(
468*c2c66affSColin Finck            [in]    IMimeMessageTree */*const*/ pTree,
469*c2c66affSColin Finck            [in]    DWORD dwFlags);
470*c2c66affSColin Finck
471*c2c66affSColin Finck        HRESULT DecodeBody(
472*c2c66affSColin Finck            [in]    IMimeMessageTree */*const*/ pTree,
473*c2c66affSColin Finck            [in]    HBODY hDecodeRoot,
474*c2c66affSColin Finck            [in]    DWORD dwFlags);
475*c2c66affSColin Finck
476*c2c66affSColin Finck        HRESULT EnumCertificates(
477*c2c66affSColin Finck            [in]    HCAPICERTSTORE hc,
478*c2c66affSColin Finck            [in]    DWORD dwUsage,
479*c2c66affSColin Finck            [in]    PCX509CERT pPrev,
480*c2c66affSColin Finck            [out]   PCX509CERT *ppCert);
481*c2c66affSColin Finck
482*c2c66affSColin Finck        HRESULT GetCertificateName(
483*c2c66affSColin Finck            [in]    const PCX509CERT pX509Cert,
484*c2c66affSColin Finck            [in]    const CERTNAMETYPE cn,
485*c2c66affSColin Finck            [out]   LPSTR *ppszName);
486*c2c66affSColin Finck
487*c2c66affSColin Finck        HRESULT GetMessageType(
488*c2c66affSColin Finck            [in]    const HWND hwndParent,
489*c2c66affSColin Finck            [in]    IMimeBody */*const*/ pBody,
490*c2c66affSColin Finck            [out]   DWORD */*const*/ pdwSecType);
491*c2c66affSColin Finck
492*c2c66affSColin Finck        HRESULT GetCertData(
493*c2c66affSColin Finck            [in]        const PCX509CERT pX509Cert,
494*c2c66affSColin Finck            [in]        const CERTDATAID dataid,
495*c2c66affSColin Finck            [out, ref]  LPPROPVARIANT pValue);
496*c2c66affSColin Finck    }
497*c2c66affSColin Finck
498*c2c66affSColin Finck    [
499*c2c66affSColin Finck        uuid(fd853cd1-7f86-11d0-8252-00c04fd85ab4),
500*c2c66affSColin Finck        object
501*c2c66affSColin Finck    ]
502*c2c66affSColin Finck    interface IMimeHeaderTable : IPersistStream
503*c2c66affSColin Finck    {
504*c2c66affSColin Finck        /* FIXME: fill this in */
505*c2c66affSColin Finck    }
506*c2c66affSColin Finck
507*c2c66affSColin Finck    [
508*c2c66affSColin Finck        uuid(fd853cec-7f86-11d0-8252-00c04fd85ab4),
509*c2c66affSColin Finck        object
510*c2c66affSColin Finck    ]
511*c2c66affSColin Finck    interface IMimePropertySchema : IUnknown
512*c2c66affSColin Finck    {
513*c2c66affSColin Finck        typedef [unique] IMimePropertySchema *LPMIMEPROPERTYSCHEMA;
514*c2c66affSColin Finck
515*c2c66affSColin Finck        typedef enum tagMIMEPROPFLAGS
516*c2c66affSColin Finck        {
517*c2c66affSColin Finck            MPF_INETCSET            = 0x01,
518*c2c66affSColin Finck            MPF_RFC1522             = 0x02,
519*c2c66affSColin Finck            MPF_ADDRESS             = 0x04,
520*c2c66affSColin Finck            MPF_HASPARAMS           = 0x08,
521*c2c66affSColin Finck            MPF_MIME                = 0x10,
522*c2c66affSColin Finck            MPF_READONLY            = 0x20
523*c2c66affSColin Finck        } MIMEPROPFLAGS;
524*c2c66affSColin Finck
525*c2c66affSColin Finck        HRESULT RegisterProperty(
526*c2c66affSColin Finck                [in]  const char *name,
527*c2c66affSColin Finck                [in]  DWORD      flags,
528*c2c66affSColin Finck                [in]  DWORD      rownumber,
529*c2c66affSColin Finck                [in]  VARTYPE    vtdefault,
530*c2c66affSColin Finck                [out] DWORD      *propid);
531*c2c66affSColin Finck
532*c2c66affSColin Finck        HRESULT ModifyProperty(
533*c2c66affSColin Finck                [in] const char  *name,
534*c2c66affSColin Finck                [in] DWORD       flags,
535*c2c66affSColin Finck                [in] DWORD       rownumber,
536*c2c66affSColin Finck                [in] VARTYPE     vtdefault);
537*c2c66affSColin Finck
538*c2c66affSColin Finck        HRESULT GetPropertyId(
539*c2c66affSColin Finck                [in]  const char *name,
540*c2c66affSColin Finck                [out] DWORD      *propid);
541*c2c66affSColin Finck
542*c2c66affSColin Finck        HRESULT GetPropertyName(
543*c2c66affSColin Finck                [in]  DWORD      propid,
544*c2c66affSColin Finck                [out] char       **name);
545*c2c66affSColin Finck
546*c2c66affSColin Finck        HRESULT RegisterAddressType(
547*c2c66affSColin Finck                [in]  const char *name,
548*c2c66affSColin Finck                [out] DWORD      *adrtype);
549*c2c66affSColin Finck    }
550*c2c66affSColin Finck
551*c2c66affSColin Finck    [
552*c2c66affSColin Finck        uuid(fd853cd3-7f86-11d0-8252-00c04fd85ab4),
553*c2c66affSColin Finck        object
554*c2c66affSColin Finck    ]
555*c2c66affSColin Finck    interface IMimePropertySet : IPersistStreamInit
556*c2c66affSColin Finck    {
557*c2c66affSColin Finck        typedef [unique] IMimePropertySet *LPMIMEPROPERTYSET;
558*c2c66affSColin Finck
559*c2c66affSColin Finck        cpp_quote("#define PDF_ENCODED              0x00000001")
560*c2c66affSColin Finck        cpp_quote("#define PDF_NAMEINDATA           0x00000002")
561*c2c66affSColin Finck        cpp_quote("#define PDF_HEADERFORMAT        (0x00000004 | PDF_ENCODED)")
562*c2c66affSColin Finck        cpp_quote("#define PDF_NOCOMMENTS           0x00000008")
563*c2c66affSColin Finck        cpp_quote("#define PDF_SAVENOENCODE         0x00000010")
564*c2c66affSColin Finck        cpp_quote("#define PDF_VECTOR               0x00000020")
565*c2c66affSColin Finck
566*c2c66affSColin Finck        typedef struct tagMIMEPARAMINFO
567*c2c66affSColin Finck        {
568*c2c66affSColin Finck            LPSTR           pszName;
569*c2c66affSColin Finck            LPSTR           pszData;
570*c2c66affSColin Finck        } MIMEPARAMINFO, *LPMIMEPARAMINFO;
571*c2c66affSColin Finck
572*c2c66affSColin Finck        typedef enum tagPROPINFOMASK
573*c2c66affSColin Finck        {
574*c2c66affSColin Finck            PIM_CHARSET           = 0x01,
575*c2c66affSColin Finck            PIM_ENCODINGTYPE      = 0x02,
576*c2c66affSColin Finck            PIM_ROWNUMBER         = 0x04,
577*c2c66affSColin Finck            PIM_FLAGS             = 0x08,
578*c2c66affSColin Finck            PIM_PROPID            = 0x10,
579*c2c66affSColin Finck            PIM_VALUES            = 0x20,
580*c2c66affSColin Finck            PIM_VTDEFAULT         = 0x40,
581*c2c66affSColin Finck            PIM_VTCURRENT         = 0x80
582*c2c66affSColin Finck        } PROPINFOMASK;
583*c2c66affSColin Finck
584*c2c66affSColin Finck        typedef struct tagMIMEPROPINFO
585*c2c66affSColin Finck        {
586*c2c66affSColin Finck            DWORD           dwMask;
587*c2c66affSColin Finck            HCHARSET        hCharset;
588*c2c66affSColin Finck            ENCODINGTYPE    ietEncoding;
589*c2c66affSColin Finck            DWORD           dwRowNumber;
590*c2c66affSColin Finck            DWORD           dwFlags;
591*c2c66affSColin Finck            DWORD           dwPropId;
592*c2c66affSColin Finck            DWORD           cValues;
593*c2c66affSColin Finck            VARTYPE         vtDefault;
594*c2c66affSColin Finck            VARTYPE         vtCurrent;
595*c2c66affSColin Finck        } MIMEPROPINFO, *LPMIMEPROPINFO;
596*c2c66affSColin Finck        typedef const MIMEPROPINFO *LPCMIMEPROPINFO;
597*c2c66affSColin Finck
598*c2c66affSColin Finck        HRESULT GetPropInfo(
599*c2c66affSColin Finck            [in]        LPCSTR               pszName,
600*c2c66affSColin Finck            [in,out]    LPMIMEPROPINFO       pInfo);
601*c2c66affSColin Finck
602*c2c66affSColin Finck        HRESULT SetPropInfo(
603*c2c66affSColin Finck            [in]        LPCSTR               pszName,
604*c2c66affSColin Finck            [in]        LPCMIMEPROPINFO      pInfo);
605*c2c66affSColin Finck
606*c2c66affSColin Finckcpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
607*c2c66affSColin Finckcpp_quote("#undef GetProp")
608*c2c66affSColin Finckcpp_quote("#undef SetProp")
609*c2c66affSColin Finckcpp_quote("#undef EnumProps")
610*c2c66affSColin Finckcpp_quote("#endif")
611*c2c66affSColin Finck        HRESULT GetProp(
612*c2c66affSColin Finck            [in]        LPCSTR               pszName,
613*c2c66affSColin Finck            [in]        DWORD                dwFlags,
614*c2c66affSColin Finck            [in,out]    LPPROPVARIANT        pValue);
615*c2c66affSColin Finck
616*c2c66affSColin Finck        HRESULT SetProp(
617*c2c66affSColin Finck            [in]        LPCSTR               pszName,
618*c2c66affSColin Finck            [in]        DWORD                dwFlags,
619*c2c66affSColin Finck            [in]        LPCPROPVARIANT       pValue);
620*c2c66affSColin Finck
621*c2c66affSColin Finck        HRESULT AppendProp(
622*c2c66affSColin Finck            [in]        LPCSTR               pszName,
623*c2c66affSColin Finck            [in]        DWORD                dwFlags,
624*c2c66affSColin Finck            [in]        LPPROPVARIANT        pValue);
625*c2c66affSColin Finck
626*c2c66affSColin Finck        HRESULT DeleteProp(
627*c2c66affSColin Finck            [in]        LPCSTR               pszName);
628*c2c66affSColin Finck
629*c2c66affSColin Finck        HRESULT CopyProps(
630*c2c66affSColin Finck            [in]        ULONG                cNames,
631*c2c66affSColin Finck            [in,unique] LPCSTR               *prgszName,
632*c2c66affSColin Finck            [in]        IMimePropertySet     *pPropertySet);
633*c2c66affSColin Finck
634*c2c66affSColin Finck        HRESULT MoveProps(
635*c2c66affSColin Finck            [in]        ULONG                cNames,
636*c2c66affSColin Finck            [in]        LPCSTR               *prgszName,
637*c2c66affSColin Finck            [in]        IMimePropertySet     *pPropertySet);
638*c2c66affSColin Finck
639*c2c66affSColin Finck        HRESULT DeleteExcept(
640*c2c66affSColin Finck            [in]        ULONG                cNames,
641*c2c66affSColin Finck            [in]        LPCSTR               *prgszName);
642*c2c66affSColin Finck
643*c2c66affSColin Finck        HRESULT QueryProp(
644*c2c66affSColin Finck            [in]        LPCSTR               pszName,
645*c2c66affSColin Finck            [in]        LPCSTR               pszCriteria,
646*c2c66affSColin Finck            [in]        boolean              fSubString,
647*c2c66affSColin Finck            [in]        boolean              fCaseSensitive);
648*c2c66affSColin Finck
649*c2c66affSColin Finck        HRESULT GetCharset(
650*c2c66affSColin Finck            [out]       LPHCHARSET           phCharset);
651*c2c66affSColin Finck
652*c2c66affSColin Finck        HRESULT SetCharset(
653*c2c66affSColin Finck            [in]        HCHARSET             hCharset,
654*c2c66affSColin Finck            [in]        CSETAPPLYTYPE        applytype);
655*c2c66affSColin Finck
656*c2c66affSColin Finck        HRESULT GetParameters(
657*c2c66affSColin Finck            [in]        LPCSTR               pszName,
658*c2c66affSColin Finck            [out]       ULONG                *pcParams,
659*c2c66affSColin Finck            [out]       LPMIMEPARAMINFO      *pprgParam);
660*c2c66affSColin Finck
661*c2c66affSColin Finck        HRESULT IsContentType(
662*c2c66affSColin Finck            [in]        LPCSTR               pszPriType,
663*c2c66affSColin Finck            [in,unique] LPCSTR               pszSubType);
664*c2c66affSColin Finck
665*c2c66affSColin Finck        HRESULT BindToObject(
666*c2c66affSColin Finck            [in]        REFIID               riid,
667*c2c66affSColin Finck            [out,iid_is(riid)] void          **ppvObject);
668*c2c66affSColin Finck
669*c2c66affSColin Finck        HRESULT Clone(
670*c2c66affSColin Finck            [out]       IMimePropertySet     **ppPropertySet);
671*c2c66affSColin Finck
672*c2c66affSColin Finck        HRESULT SetOption(
673*c2c66affSColin Finck            [in]        const TYPEDID        oid,
674*c2c66affSColin Finck            [in]        LPCPROPVARIANT       pValue);
675*c2c66affSColin Finck
676*c2c66affSColin Finck        HRESULT GetOption(
677*c2c66affSColin Finck            [in]        const TYPEDID        oid,
678*c2c66affSColin Finck            [in,out]    LPPROPVARIANT        pValue);
679*c2c66affSColin Finck
680*c2c66affSColin Finck        cpp_quote("#define EPF_NONAME 0x00000001")
681*c2c66affSColin Finck
682*c2c66affSColin Finck        HRESULT EnumProps(
683*c2c66affSColin Finck            [in]        DWORD                dwFlags,
684*c2c66affSColin Finck            [out]       IMimeEnumProperties  **ppEnum);
685*c2c66affSColin Finck
686*c2c66affSColin Finck    }
687*c2c66affSColin Finck
688*c2c66affSColin Finck    [
689*c2c66affSColin Finck        uuid(c558834a-7f86-11d0-8252-00c04fd85ab4),
690*c2c66affSColin Finck        object
691*c2c66affSColin Finck    ]
692*c2c66affSColin Finck    interface IMimeAddressTable : IUnknown
693*c2c66affSColin Finck    {
694*c2c66affSColin Finck        typedef [unique] IMimeAddressTable *LPMIMEADDRESSTABLE;
695*c2c66affSColin Finck
696*c2c66affSColin Finck        DECLARE_HANDLE(HADDRESS);
697*c2c66affSColin Finck        typedef HADDRESS *LPHADDRESS;
698*c2c66affSColin Finck        typedef DWORD IADDRESSTYPE;
699*c2c66affSColin Finck
700*c2c66affSColin Finck        typedef enum tagADDRESSFORMAT
701*c2c66affSColin Finck        {
702*c2c66affSColin Finck            AFT_DISPLAY_FRIENDLY,
703*c2c66affSColin Finck            AFT_DISPLAY_EMAIL,
704*c2c66affSColin Finck            AFT_DISPLAY_BOTH,
705*c2c66affSColin Finck            AFT_RFC822_DECODED,
706*c2c66affSColin Finck            AFT_RFC822_ENCODED,
707*c2c66affSColin Finck            AFT_RFC822_TRANSMIT,
708*c2c66affSColin Finck        } ADDRESSFORMAT;
709*c2c66affSColin Finck
710*c2c66affSColin Finck        cpp_quote("#define IAT_UNKNOWN              0x00000000")
711*c2c66affSColin Finck        cpp_quote("#define IAT_FROM                 0x00000001")
712*c2c66affSColin Finck        cpp_quote("#define IAT_SENDER               0x00000002")
713*c2c66affSColin Finck        cpp_quote("#define IAT_TO                   0x00000004")
714*c2c66affSColin Finck        cpp_quote("#define IAT_CC                   0x00000008")
715*c2c66affSColin Finck        cpp_quote("#define IAT_BCC                  0x00000010")
716*c2c66affSColin Finck        cpp_quote("#define IAT_REPLYTO              0x00000020")
717*c2c66affSColin Finck        cpp_quote("#define IAT_RETURNPATH           0x00000040")
718*c2c66affSColin Finck        cpp_quote("#define IAT_RETRCPTTO            0x00000080")
719*c2c66affSColin Finck        cpp_quote("#define IAT_RR                   0x00000100")
720*c2c66affSColin Finck        cpp_quote("#define IAT_APPARTO              0x00000200")
721*c2c66affSColin Finck        cpp_quote("#define IAT_DISP_NOTIFICATION_TO 0x00000400")
722*c2c66affSColin Finck        cpp_quote("#define IAT_ALL                  0xffffffff")
723*c2c66affSColin Finck        cpp_quote("#define IAT_KNOWN                (IAT_FROM | IAT_TO | IAT_CC | IAT_BCC | IAT_REPLYTO | IAT_SENDER)")
724*c2c66affSColin Finck        cpp_quote("#define IAT_RECIPS               (IAT_TO | IAT_CC | IAT_BCC)")
725*c2c66affSColin Finck
726*c2c66affSColin Finck        typedef struct tagADDRESSPROPS
727*c2c66affSColin Finck        {
728*c2c66affSColin Finck            DWORD           dwProps;
729*c2c66affSColin Finck            HADDRESS        hAddress;
730*c2c66affSColin Finck            ENCODINGTYPE    ietFriendly;
731*c2c66affSColin Finck            HCHARSET        hCharset;
732*c2c66affSColin Finck            DWORD           dwAdrType;
733*c2c66affSColin Finck            LPSTR           pszFriendly;
734*c2c66affSColin Finck            LPWSTR          pwszReserved;
735*c2c66affSColin Finck            LPSTR           pszEmail;
736*c2c66affSColin Finck            CERTSTATE       certstate;
737*c2c66affSColin Finck            THUMBBLOB       tbSigning;
738*c2c66affSColin Finck            THUMBBLOB       tbEncryption;
739*c2c66affSColin Finck            DWORD           dwCookie;
740*c2c66affSColin Finck            DWORD           dwReserved1;
741*c2c66affSColin Finck            DWORD           dwReserved2;
742*c2c66affSColin Finck        } ADDRESSPROPS, *LPADDRESSPROPS;
743*c2c66affSColin Finck
744*c2c66affSColin Finck        cpp_quote("#define IAP_CHARSET              0x00000001")
745*c2c66affSColin Finck        cpp_quote("#define IAP_HANDLE               0x00000002")
746*c2c66affSColin Finck        cpp_quote("#define IAP_ADRTYPE              0x00000004")
747*c2c66affSColin Finck        cpp_quote("#define IAP_FRIENDLY             0x00000008")
748*c2c66affSColin Finck        cpp_quote("#define IAP_EMAIL                0x00000020")
749*c2c66affSColin Finck        cpp_quote("#define IAP_CERTSTATE            0x00000100")
750*c2c66affSColin Finck        cpp_quote("#define IAP_SIGNING_PRINT        0x00000200")
751*c2c66affSColin Finck        cpp_quote("#define IAP_ENCRYPTION_PRINT     0x00000400")
752*c2c66affSColin Finck        cpp_quote("#define IAP_ENCODING             0x00000800")
753*c2c66affSColin Finck        cpp_quote("#define IAP_COOKIE               0x00001000")
754*c2c66affSColin Finck        cpp_quote("#define IAP_FRIENDLYW            0x00002000")
755*c2c66affSColin Finck        cpp_quote("#define IAP_ALL                  0xffffffff")
756*c2c66affSColin Finck
757*c2c66affSColin Finck        typedef struct tagADDRESSLIST
758*c2c66affSColin Finck        {
759*c2c66affSColin Finck            ULONG           cAdrs;
760*c2c66affSColin Finck            LPADDRESSPROPS  prgAdr;
761*c2c66affSColin Finck        } ADDRESSLIST, *LPADDRESSLIST;
762*c2c66affSColin Finck
763*c2c66affSColin Finck        HRESULT Append(
764*c2c66affSColin Finck                [in]        DWORD                   addrtype,
765*c2c66affSColin Finck                [in]        ENCODINGTYPE            encoding,
766*c2c66affSColin Finck                [in]        const char              *friendly,
767*c2c66affSColin Finck                [in,unique] const char              *email,
768*c2c66affSColin Finck                [in,out,unique] HADDRESS            *address);
769*c2c66affSColin Finck
770*c2c66affSColin Finck        HRESULT Insert(
771*c2c66affSColin Finck                [in]        ADDRESSPROPS            *addressprop,
772*c2c66affSColin Finck                [in,out,unique] HADDRESS            *address);
773*c2c66affSColin Finck
774*c2c66affSColin Finck        HRESULT SetProps(
775*c2c66affSColin Finck                [in]        HADDRESS                address,
776*c2c66affSColin Finck                [in]        ADDRESSPROPS            *addressprop);
777*c2c66affSColin Finck
778*c2c66affSColin Finck        HRESULT GetProps(
779*c2c66affSColin Finck                [in]        HADDRESS                address,
780*c2c66affSColin Finck                [in]        ADDRESSPROPS            *addressprop);
781*c2c66affSColin Finck
782*c2c66affSColin Finck        HRESULT GetSender(
783*c2c66affSColin Finck                [in,out]    ADDRESSPROPS            *addressprop);
784*c2c66affSColin Finck
785*c2c66affSColin Finck        HRESULT CountTypes(
786*c2c66affSColin Finck                [in]        DWORD                   addrtype,
787*c2c66affSColin Finck                [out]       ULONG                   *count);
788*c2c66affSColin Finck
789*c2c66affSColin Finck        HRESULT GetTypes(
790*c2c66affSColin Finck                [in]        DWORD                   addrtype,
791*c2c66affSColin Finck                [in]        DWORD                   dwProps,
792*c2c66affSColin Finck                [in,out]    ADDRESSLIST             *list);
793*c2c66affSColin Finck
794*c2c66affSColin Finck        HRESULT EnumTypes(
795*c2c66affSColin Finck                [in]        DWORD                   addrtype,
796*c2c66affSColin Finck                [in]        DWORD                   props,
797*c2c66affSColin Finck                [out]       IMimeEnumAddressTypes   **types);
798*c2c66affSColin Finck
799*c2c66affSColin Finck        HRESULT Delete(
800*c2c66affSColin Finck                [in]        HADDRESS                hAddress);
801*c2c66affSColin Finck
802*c2c66affSColin Finck        HRESULT DeleteTypes(
803*c2c66affSColin Finck                [in]        DWORD                   addrtype);
804*c2c66affSColin Finck
805*c2c66affSColin Finck        HRESULT GetFormat(
806*c2c66affSColin Finck                [in]        DWORD                   addrtype,
807*c2c66affSColin Finck                [in]        ADDRESSFORMAT           addrformat,
808*c2c66affSColin Finck                [out]       char                    **format);
809*c2c66affSColin Finck
810*c2c66affSColin Finck        HRESULT AppendRfc822(
811*c2c66affSColin Finck                [in]        DWORD                   addrtype,
812*c2c66affSColin Finck                [in]        ENCODINGTYPE            encoding,
813*c2c66affSColin Finck                [in]        const char              *rfcaddr);
814*c2c66affSColin Finck
815*c2c66affSColin Finck        HRESULT ParseRfc822(
816*c2c66affSColin Finck                [in]        DWORD                   addrtype,
817*c2c66affSColin Finck                [in]        ENCODINGTYPE            encoding,
818*c2c66affSColin Finck                [in]        const char              *rfcaddr,
819*c2c66affSColin Finck                [in,out]    ADDRESSLIST             *list);
820*c2c66affSColin Finck
821*c2c66affSColin Finck        HRESULT Clone(
822*c2c66affSColin Finck                [out]       IMimeAddressTable       **table);
823*c2c66affSColin Finck
824*c2c66affSColin Finck        HRESULT BindToObject(
825*c2c66affSColin Finck                [in]        REFIID                  riid,
826*c2c66affSColin Finck                [out, iid_is(riid)] void            **obj);
827*c2c66affSColin Finck    }
828*c2c66affSColin Finck
829*c2c66affSColin Finck    [
830*c2c66affSColin Finck        uuid(ee519f11-851a-11d0-8252-00c04fd85ab4),
831*c2c66affSColin Finck        object
832*c2c66affSColin Finck    ]
833*c2c66affSColin Finck    interface IMimeWebDocument : IUnknown
834*c2c66affSColin Finck    {
835*c2c66affSColin Finck        /* FIXME: fill this in */
836*c2c66affSColin Finck    }
837*c2c66affSColin Finck
838*c2c66affSColin Finck    [
839*c2c66affSColin Finck        uuid(c558834c-7f86-11d0-8252-00c04fd85ab4),
840*c2c66affSColin Finck        object
841*c2c66affSColin Finck    ]
842*c2c66affSColin Finck    interface IMimeBody : IMimePropertySet
843*c2c66affSColin Finck    {
844*c2c66affSColin Finck        typedef [unique] IMimeBody *LPMIMEBODY;
845*c2c66affSColin Finck
846*c2c66affSColin Finck        typedef enum tagIMSGBODYTYPE
847*c2c66affSColin Finck        {
848*c2c66affSColin Finck            IBT_SECURE,
849*c2c66affSColin Finck            IBT_ATTACHMENT,
850*c2c66affSColin Finck            IBT_EMPTY,
851*c2c66affSColin Finck            IBT_CSETTAGGED,
852*c2c66affSColin Finck            IBT_AUTOATTACH,
853*c2c66affSColin Finck        } IMSGBODYTYPE;
854*c2c66affSColin Finck
855*c2c66affSColin Finck        typedef struct tagBODYOFFSETS
856*c2c66affSColin Finck        {
857*c2c66affSColin Finck            DWORD cbBoundaryStart;
858*c2c66affSColin Finck            DWORD cbHeaderStart;
859*c2c66affSColin Finck            DWORD cbBodyStart;
860*c2c66affSColin Finck            DWORD cbBodyEnd;
861*c2c66affSColin Finck        } BODYOFFSETS, *LPBODYOFFSETS;
862*c2c66affSColin Finck
863*c2c66affSColin Finck        typedef struct tagTRANSMITINFO
864*c2c66affSColin Finck        {
865*c2c66affSColin Finck            ENCODINGTYPE ietCurrent;
866*c2c66affSColin Finck            ENCODINGTYPE ietXmitMime;
867*c2c66affSColin Finck            ENCODINGTYPE ietXmit822;
868*c2c66affSColin Finck            ULONG cbLongestLine;
869*c2c66affSColin Finck            ULONG cExtended;
870*c2c66affSColin Finck            ULONG ulPercentExt;
871*c2c66affSColin Finck            ULONG cbSize;
872*c2c66affSColin Finck            ULONG cLines;
873*c2c66affSColin Finck        } TRANSMITINFO, *LPTRANSMITINFO;
874*c2c66affSColin Finck
875*c2c66affSColin Finck        HRESULT IsType(
876*c2c66affSColin Finck            [in]        IMSGBODYTYPE     bodytype);
877*c2c66affSColin Finck
878*c2c66affSColin Finck        HRESULT SetDisplayName(
879*c2c66affSColin Finck            [in]        LPCSTR           pszDisplay);
880*c2c66affSColin Finck
881*c2c66affSColin Finck        HRESULT GetDisplayName(
882*c2c66affSColin Finck            [out]       LPSTR            *ppszDisplay);
883*c2c66affSColin Finck
884*c2c66affSColin Finck        HRESULT GetOffsets(
885*c2c66affSColin Finck            [out]       LPBODYOFFSETS     pOffsets);
886*c2c66affSColin Finck
887*c2c66affSColin Finck        HRESULT GetCurrentEncoding(
888*c2c66affSColin Finck            [out]       ENCODINGTYPE     *pietEncoding);
889*c2c66affSColin Finck
890*c2c66affSColin Finck        HRESULT SetCurrentEncoding(
891*c2c66affSColin Finck            [in]        ENCODINGTYPE     ietEncoding);
892*c2c66affSColin Finck
893*c2c66affSColin Finck        HRESULT GetEstimatedSize(
894*c2c66affSColin Finck            [in]        ENCODINGTYPE     ietEncoding,
895*c2c66affSColin Finck            [out]       ULONG            *pcbSize);
896*c2c66affSColin Finck
897*c2c66affSColin Finck        HRESULT GetDataHere(
898*c2c66affSColin Finck            [in]        ENCODINGTYPE     ietEncoding,
899*c2c66affSColin Finck            [in]        IStream          *pStream);
900*c2c66affSColin Finck
901*c2c66affSColin Finck        HRESULT GetData(
902*c2c66affSColin Finck            [in]        ENCODINGTYPE     ietEncoding,
903*c2c66affSColin Finck            [out]       IStream          **ppStream);
904*c2c66affSColin Finck
905*c2c66affSColin Finck        HRESULT SetData(
906*c2c66affSColin Finck            [in]        ENCODINGTYPE     ietEncoding,
907*c2c66affSColin Finck            [in,unique] LPCSTR           pszPriType,
908*c2c66affSColin Finck            [in,unique] LPCSTR           pszSubType,
909*c2c66affSColin Finck            [in]        REFIID           riid,
910*c2c66affSColin Finck            [in,iid_is(riid)]  LPVOID    pvObject);
911*c2c66affSColin Finck
912*c2c66affSColin Finck        HRESULT EmptyData(void);
913*c2c66affSColin Finck
914*c2c66affSColin Finck        HRESULT CopyTo(
915*c2c66affSColin Finck            [in]        IMimeBody        *pBody);
916*c2c66affSColin Finck
917*c2c66affSColin Finck        HRESULT GetTransmitInfo(
918*c2c66affSColin Finck            [in,out]    LPTRANSMITINFO   pTransmitInfo);
919*c2c66affSColin Finck
920*c2c66affSColin Finck        HRESULT SaveToFile(
921*c2c66affSColin Finck            [in]        ENCODINGTYPE     ietEncoding,
922*c2c66affSColin Finck            [in]        LPCSTR           pszFilePath);
923*c2c66affSColin Finck
924*c2c66affSColin Finck        HRESULT GetHandle(
925*c2c66affSColin Finck           [out]        LPHBODY          phBody);
926*c2c66affSColin Finck
927*c2c66affSColin Finck    }
928*c2c66affSColin Finck
929*c2c66affSColin Finck    [
930*c2c66affSColin Finck        uuid(fd853cd4-7f86-11d0-8252-00c04fd85ab4),
931*c2c66affSColin Finck        object
932*c2c66affSColin Finck    ]
933*c2c66affSColin Finck    interface IMimeMessageTree : IPersistStreamInit
934*c2c66affSColin Finck    {
935*c2c66affSColin Finck        typedef [unique] IMimeMessageTree *LPMIMEMESSAGETREE;
936*c2c66affSColin Finck
937*c2c66affSColin Finck        const HBODY HBODY_ROOT = (HBODY)-1;
938*c2c66affSColin Finck
939*c2c66affSColin Finck        typedef enum tagBODYLOCATION
940*c2c66affSColin Finck        {
941*c2c66affSColin Finck            IBL_ROOT,
942*c2c66affSColin Finck            IBL_PARENT,
943*c2c66affSColin Finck            IBL_FIRST,
944*c2c66affSColin Finck            IBL_LAST,
945*c2c66affSColin Finck            IBL_NEXT,
946*c2c66affSColin Finck            IBL_PREVIOUS,
947*c2c66affSColin Finck        } BODYLOCATION;
948*c2c66affSColin Finck
949*c2c66affSColin Finck        typedef struct tagFINDBODY
950*c2c66affSColin Finck        {
951*c2c66affSColin Finck            LPSTR pszPriType;
952*c2c66affSColin Finck            LPSTR pszSubType;
953*c2c66affSColin Finck            DWORD dwReserved;
954*c2c66affSColin Finck        } FINDBODY, *LPFINDBODY;
955*c2c66affSColin Finck
956*c2c66affSColin Finck        HRESULT GetMessageSource(
957*c2c66affSColin Finck            [out]       IStream **ppStream,
958*c2c66affSColin Finck            [in]        DWORD dwFlags);
959*c2c66affSColin Finck
960*c2c66affSColin Finck        HRESULT GetMessageSize(
961*c2c66affSColin Finck            [out]       ULONG *pcbSize,
962*c2c66affSColin Finck            [in]        DWORD dwFlags);
963*c2c66affSColin Finck
964*c2c66affSColin Finck        HRESULT LoadOffsetTable(
965*c2c66affSColin Finck            [in]        IStream *pStream);
966*c2c66affSColin Finck
967*c2c66affSColin Finck        HRESULT SaveOffsetTable(
968*c2c66affSColin Finck            [in]        IStream *pStream,
969*c2c66affSColin Finck            [in]        DWORD dwFlags);
970*c2c66affSColin Finck
971*c2c66affSColin Finck        HRESULT GetFlags(
972*c2c66affSColin Finck            [out]       DWORD *pdwFlags);
973*c2c66affSColin Finck
974*c2c66affSColin Finck        HRESULT Commit(
975*c2c66affSColin Finck            [in]        DWORD dwFlags);
976*c2c66affSColin Finck
977*c2c66affSColin Finck        HRESULT HandsOffStorage();
978*c2c66affSColin Finck
979*c2c66affSColin Finck        HRESULT BindToObject(
980*c2c66affSColin Finck            [in]        const HBODY hBody,
981*c2c66affSColin Finck            [in]        REFIID riid,
982*c2c66affSColin Finck            [out, iid_is(riid)] void **ppvObject);
983*c2c66affSColin Finck
984*c2c66affSColin Finck        HRESULT SaveBody(
985*c2c66affSColin Finck            [in]        HBODY hBody,
986*c2c66affSColin Finck            [in]        DWORD dwFlags,
987*c2c66affSColin Finck            [in]        IStream *pStream);
988*c2c66affSColin Finck
989*c2c66affSColin Finck        HRESULT InsertBody(
990*c2c66affSColin Finck            [in]        BODYLOCATION location,
991*c2c66affSColin Finck            [in]        HBODY hPivot,
992*c2c66affSColin Finck            [out]       LPHBODY phBody);
993*c2c66affSColin Finck
994*c2c66affSColin Finck        HRESULT GetBody(
995*c2c66affSColin Finck            [in]        BODYLOCATION location,
996*c2c66affSColin Finck            [in]        HBODY hPivot,
997*c2c66affSColin Finck            [out]       LPHBODY phBody);
998*c2c66affSColin Finck
999*c2c66affSColin Finck        HRESULT DeleteBody(
1000*c2c66affSColin Finck            [in]        HBODY hBody,
1001*c2c66affSColin Finck            [in]        DWORD dwFlags);
1002*c2c66affSColin Finck
1003*c2c66affSColin Finck        HRESULT MoveBody(
1004*c2c66affSColin Finck            [in]        HBODY hBody,
1005*c2c66affSColin Finck            [in]        BODYLOCATION location);
1006*c2c66affSColin Finck
1007*c2c66affSColin Finck        HRESULT CountBodies(
1008*c2c66affSColin Finck            [in]        HBODY hParent,
1009*c2c66affSColin Finck            [in]        boolean fRecurse,
1010*c2c66affSColin Finck            [out]       ULONG *pcBodies);
1011*c2c66affSColin Finck
1012*c2c66affSColin Finck        HRESULT FindFirst(
1013*c2c66affSColin Finck            [in, out]   LPFINDBODY pFindBody,
1014*c2c66affSColin Finck            [out]       LPHBODY phBody);
1015*c2c66affSColin Finck
1016*c2c66affSColin Finck        HRESULT FindNext(
1017*c2c66affSColin Finck            [in, out]   LPFINDBODY pFindBody,
1018*c2c66affSColin Finck            [out]       LPHBODY phBody);
1019*c2c66affSColin Finck
1020*c2c66affSColin Finck        HRESULT ResolveURL(
1021*c2c66affSColin Finck            [in]        HBODY hRelated,
1022*c2c66affSColin Finck            [in]        LPCSTR pszBase,
1023*c2c66affSColin Finck            [in]        LPCSTR pszURL,
1024*c2c66affSColin Finck            [in]        DWORD dwFlags,
1025*c2c66affSColin Finck            [out]       LPHBODY phBody);
1026*c2c66affSColin Finck
1027*c2c66affSColin Finck        HRESULT ToMultipart(
1028*c2c66affSColin Finck            [in]        HBODY hBody,
1029*c2c66affSColin Finck            [in]        LPCSTR pszSubType,
1030*c2c66affSColin Finck            [out]       LPHBODY phMultipart);
1031*c2c66affSColin Finck
1032*c2c66affSColin Finck        HRESULT GetBodyOffsets(
1033*c2c66affSColin Finck            [in]        HBODY hBody,
1034*c2c66affSColin Finck            [in, out]   LPBODYOFFSETS pOffsets);
1035*c2c66affSColin Finck
1036*c2c66affSColin Finck        HRESULT GetCharset(
1037*c2c66affSColin Finck            [out]       LPHCHARSET phCharset);
1038*c2c66affSColin Finck
1039*c2c66affSColin Finck        HRESULT SetCharset(
1040*c2c66affSColin Finck            [in]        HCHARSET hCharset,
1041*c2c66affSColin Finck            [in]        CSETAPPLYTYPE applytype);
1042*c2c66affSColin Finck
1043*c2c66affSColin Finck        HRESULT IsBodyType(
1044*c2c66affSColin Finck            [in]        HBODY hBody,
1045*c2c66affSColin Finck            [in]        IMSGBODYTYPE bodytype);
1046*c2c66affSColin Finck
1047*c2c66affSColin Finck        HRESULT IsContentType(
1048*c2c66affSColin Finck            [in]        HBODY hBody,
1049*c2c66affSColin Finck            [in]        LPCSTR pszPriType,
1050*c2c66affSColin Finck            [in]        LPCSTR pszSubType);
1051*c2c66affSColin Finck
1052*c2c66affSColin Finck        HRESULT QueryBodyProp(
1053*c2c66affSColin Finck            [in]        HBODY hBody,
1054*c2c66affSColin Finck            [in]        LPCSTR pszName,
1055*c2c66affSColin Finck            [in]        LPCSTR pszCriteria,
1056*c2c66affSColin Finck            [in]        boolean fSubString,
1057*c2c66affSColin Finck            [in]        boolean fCaseSensitive);
1058*c2c66affSColin Finck
1059*c2c66affSColin Finck        HRESULT GetBodyProp(
1060*c2c66affSColin Finck            [in]        HBODY hBody,
1061*c2c66affSColin Finck            [in]        LPCSTR pszName,
1062*c2c66affSColin Finck            [in]        DWORD dwFlags,
1063*c2c66affSColin Finck            [in, out]   LPPROPVARIANT pValue);
1064*c2c66affSColin Finck
1065*c2c66affSColin Finck        HRESULT SetBodyProp(
1066*c2c66affSColin Finck            [in]        HBODY hBody,
1067*c2c66affSColin Finck            [in]        LPCSTR pszName,
1068*c2c66affSColin Finck            [in]        DWORD dwFlags,
1069*c2c66affSColin Finck            [in]        LPCPROPVARIANT pValue);
1070*c2c66affSColin Finck
1071*c2c66affSColin Finck        HRESULT DeleteBodyProp(
1072*c2c66affSColin Finck            [in]        HBODY hBody,
1073*c2c66affSColin Finck            [in]        LPCSTR pszName);
1074*c2c66affSColin Finck
1075*c2c66affSColin Finck        HRESULT SetOption(
1076*c2c66affSColin Finck            [in]        const TYPEDID oid,
1077*c2c66affSColin Finck            [in]        LPCPROPVARIANT pValue);
1078*c2c66affSColin Finck
1079*c2c66affSColin Finck        HRESULT GetOption(
1080*c2c66affSColin Finck            [in]        const TYPEDID oid,
1081*c2c66affSColin Finck            [in, out]   LPPROPVARIANT pValue);
1082*c2c66affSColin Finck    }
1083*c2c66affSColin Finck
1084*c2c66affSColin Finck    [
1085*c2c66affSColin Finck        uuid(fd853cd5-7f86-11d0-8252-00c04fd85ab4),
1086*c2c66affSColin Finck        object
1087*c2c66affSColin Finck    ]
1088*c2c66affSColin Finck    interface IMimeMessage : IMimeMessageTree
1089*c2c66affSColin Finck    {
1090*c2c66affSColin Finck        typedef [unique] IMimeMessage *LPMIMEMESSAGE;
1091*c2c66affSColin Finck
1092*c2c66affSColin Finck        typedef DWORD TEXTTYPE;
1093*c2c66affSColin Finck
1094*c2c66affSColin Finck        typedef enum tagIMSGFLAGS
1095*c2c66affSColin Finck        {
1096*c2c66affSColin Finck            IMF_ATTACHMENTS     = 0x00000001,
1097*c2c66affSColin Finck            IMF_MULTIPART       = 0x00000002,
1098*c2c66affSColin Finck            IMF_SUBMULTIPART    = 0x00000004,
1099*c2c66affSColin Finck            IMF_MIME            = 0x00000008,
1100*c2c66affSColin Finck            IMF_HTML            = 0x00000010,
1101*c2c66affSColin Finck            IMF_PLAIN           = 0x00000020,
1102*c2c66affSColin Finck            IMF_PARTIAL         = 0x00000040,
1103*c2c66affSColin Finck            IMF_SIGNED          = 0x00000080,
1104*c2c66affSColin Finck            IMF_ENCRYPTED       = 0x00000100,
1105*c2c66affSColin Finck            IMF_TNEF            = 0x00000200,
1106*c2c66affSColin Finck            IMF_MHTML           = 0x00000400,
1107*c2c66affSColin Finck            IMF_SECURE          = 0x00000800,
1108*c2c66affSColin Finck            IMF_TEXT            = 0x00001000,
1109*c2c66affSColin Finck            IMF_CSETTAGGED      = 0x00002000,
1110*c2c66affSColin Finck            IMF_NEWS            = 0x00004000,
1111*c2c66affSColin Finck            IMF_VOICEMAIL       = 0x00008000,
1112*c2c66affSColin Finck            IMF_HASVCARD        = 0x00010000,
1113*c2c66affSColin Finck            IMF_RFC1154         = 0x00020000,
1114*c2c66affSColin Finck        } IMSGFLAGS;
1115*c2c66affSColin Finck
1116*c2c66affSColin Finck        typedef enum tagIMSGPRIORITY
1117*c2c66affSColin Finck        {
1118*c2c66affSColin Finck            IMSG_PRI_LOW    = 5,
1119*c2c66affSColin Finck            IMSG_PRI_NORMAL = 3,
1120*c2c66affSColin Finck            IMSG_PRI_HIGH   = 1,
1121*c2c66affSColin Finck        } IMSGPRIORITY;
1122*c2c66affSColin Finck
1123*c2c66affSColin Finck        cpp_quote("#define WPF_HTML             0x00000001")
1124*c2c66affSColin Finck        cpp_quote("#define WPF_AUTOINLINE       0x00000002")
1125*c2c66affSColin Finck        cpp_quote("#define WPF_SLIDESHOW        0x00000004")
1126*c2c66affSColin Finck        cpp_quote("#define WPF_ATTACHLINKS      0x00000008")
1127*c2c66affSColin Finck        cpp_quote("#define WPF_IMAGESONLY       0x00000010")
1128*c2c66affSColin Finck        cpp_quote("#define WPF_NOMETACHARSET    0x00000020")
1129*c2c66affSColin Finck
1130*c2c66affSColin Finck        typedef struct tagWEPAGEOPTIONS
1131*c2c66affSColin Finck        {
1132*c2c66affSColin Finck            DWORD cbSize;
1133*c2c66affSColin Finck            DWORD dwFlags;
1134*c2c66affSColin Finck            DWORD dwDelay;
1135*c2c66affSColin Finck            WCHAR wchQuote;
1136*c2c66affSColin Finck        } WEBPAGEOPTIONS, *LPWEBPAGEOPTIONS;
1137*c2c66affSColin Finck
1138*c2c66affSColin Finck        cpp_quote("#define TXT_PLAIN       1")
1139*c2c66affSColin Finck        cpp_quote("#define TXT_HTML        2")
1140*c2c66affSColin Finck
1141*c2c66affSColin Finck        HRESULT CreateWebPage(
1142*c2c66affSColin Finck            [in]        IStream *pRootStm,
1143*c2c66affSColin Finck            [in]        LPWEBPAGEOPTIONS pOptions,
1144*c2c66affSColin Finck            [in]        IMimeMessageCallback *pCallback,
1145*c2c66affSColin Finck            [out]       IMoniker **ppMoniker);
1146*c2c66affSColin Finck
1147*c2c66affSColin Finck        HRESULT GetProp(
1148*c2c66affSColin Finck            [in]        LPCSTR pszName,
1149*c2c66affSColin Finck            [in]        DWORD dwFlags,
1150*c2c66affSColin Finck            [in,out]    LPPROPVARIANT pValue);
1151*c2c66affSColin Finck
1152*c2c66affSColin Finck        HRESULT SetProp(
1153*c2c66affSColin Finck            [in]        LPCSTR pszName,
1154*c2c66affSColin Finck            [in]        DWORD dwFlags,
1155*c2c66affSColin Finck            [in]        LPCPROPVARIANT pValue);
1156*c2c66affSColin Finck
1157*c2c66affSColin Finck        HRESULT DeleteProp(
1158*c2c66affSColin Finck            [in]        LPCSTR pszName);
1159*c2c66affSColin Finck
1160*c2c66affSColin Finck        HRESULT QueryProp(
1161*c2c66affSColin Finck            [in]        LPCSTR pszName,
1162*c2c66affSColin Finck            [in]        LPCSTR pszCriteria,
1163*c2c66affSColin Finck            [in]        boolean fSubString,
1164*c2c66affSColin Finck            [in]        boolean fCaseSensitive);
1165*c2c66affSColin Finck
1166*c2c66affSColin Finck        HRESULT GetTextBody(
1167*c2c66affSColin Finck            [in]        DWORD dwTxtType,
1168*c2c66affSColin Finck            [in]        ENCODINGTYPE ietEncoding,
1169*c2c66affSColin Finck            [out]       IStream **pStream,
1170*c2c66affSColin Finck            [out]       LPHBODY phBody);
1171*c2c66affSColin Finck
1172*c2c66affSColin Finck        HRESULT SetTextBody(
1173*c2c66affSColin Finck            [in]        DWORD dwTxtType,
1174*c2c66affSColin Finck            [in]        ENCODINGTYPE ietEncoding,
1175*c2c66affSColin Finck            [in]        HBODY hAlternative,
1176*c2c66affSColin Finck            [in]        IStream *pStream,
1177*c2c66affSColin Finck            [out]       LPHBODY phBody);
1178*c2c66affSColin Finck
1179*c2c66affSColin Finck        HRESULT AttachObject(
1180*c2c66affSColin Finck            [in]        REFIID riid,
1181*c2c66affSColin Finck            [in, iid_is(riid)] void *pvObject,
1182*c2c66affSColin Finck            [out]       LPHBODY phBody);
1183*c2c66affSColin Finck
1184*c2c66affSColin Finck        HRESULT AttachFile(
1185*c2c66affSColin Finck            [in]        LPCSTR pszFilePath,
1186*c2c66affSColin Finck            [in]        IStream *pstmFile,
1187*c2c66affSColin Finck            [out]       LPHBODY phBody);
1188*c2c66affSColin Finck
1189*c2c66affSColin Finck        HRESULT AttachURL(
1190*c2c66affSColin Finck            [in]        LPCSTR pszBase,
1191*c2c66affSColin Finck            [in]        LPCSTR pszURL,
1192*c2c66affSColin Finck            [in]        DWORD dwFlags,
1193*c2c66affSColin Finck            [in]        IStream *pstmURL,
1194*c2c66affSColin Finck            [out]       LPSTR *ppszCIDURL,
1195*c2c66affSColin Finck            [out]       LPHBODY phBody);
1196*c2c66affSColin Finck
1197*c2c66affSColin Finck        HRESULT GetAttachments(
1198*c2c66affSColin Finck            [out]       ULONG *pcAttach,
1199*c2c66affSColin Finck            [out]       LPHBODY *pprghAttach);
1200*c2c66affSColin Finck
1201*c2c66affSColin Finck        HRESULT GetAddressTable(
1202*c2c66affSColin Finck            [out]       IMimeAddressTable **ppTable);
1203*c2c66affSColin Finck
1204*c2c66affSColin Finck        HRESULT GetSender(
1205*c2c66affSColin Finck            [in, out]   LPADDRESSPROPS pAddress);
1206*c2c66affSColin Finck
1207*c2c66affSColin Finck        HRESULT GetAddressTypes(
1208*c2c66affSColin Finck            [in]        DWORD dwAdrTypes,
1209*c2c66affSColin Finck            [in]        DWORD dwProps,
1210*c2c66affSColin Finck            [in, out]   LPADDRESSLIST pList);
1211*c2c66affSColin Finck
1212*c2c66affSColin Finck        HRESULT GetAddressFormat(
1213*c2c66affSColin Finck            [in]        DWORD dwAdrTypes,
1214*c2c66affSColin Finck            [in]        ADDRESSFORMAT format,
1215*c2c66affSColin Finck            [out]       LPSTR *ppszFormat);
1216*c2c66affSColin Finck
1217*c2c66affSColin Finck        HRESULT EnumAddressTypes(
1218*c2c66affSColin Finck            [in]        DWORD dwAdrTypes,
1219*c2c66affSColin Finck            [in]        DWORD dwProps,
1220*c2c66affSColin Finck            [out]       IMimeEnumAddressTypes **ppEnum);
1221*c2c66affSColin Finck
1222*c2c66affSColin Finck        HRESULT SplitMessage(
1223*c2c66affSColin Finck            [in]        ULONG cbMaxPart,
1224*c2c66affSColin Finck            [out]       IMimeMessageParts **ppParts);
1225*c2c66affSColin Finck
1226*c2c66affSColin Finck        HRESULT GetRootMoniker(
1227*c2c66affSColin Finck            [out]       IMoniker **ppMoniker);
1228*c2c66affSColin Finck    }
1229*c2c66affSColin Finck
1230*c2c66affSColin Finck    [
1231*c2c66affSColin Finck        uuid(761aa741-7bda-11d1-8aa9-00c04fb951f3),
1232*c2c66affSColin Finck        object
1233*c2c66affSColin Finck    ]
1234*c2c66affSColin Finck    interface IMimeMessageCallback : IUnknown
1235*c2c66affSColin Finck    {
1236*c2c66affSColin Finck        HRESULT OnWebPageSplitter(
1237*c2c66affSColin Finck            [in]       DWORD cInlined,
1238*c2c66affSColin Finck            [in]       IStream *ppStream);
1239*c2c66affSColin Finck    }
1240*c2c66affSColin Finck
1241*c2c66affSColin Finck    [
1242*c2c66affSColin Finck        uuid(de4ad8da-555f-11d1-8dd0-00c04fb951f9),
1243*c2c66affSColin Finck        object
1244*c2c66affSColin Finck    ]
1245*c2c66affSColin Finck    interface IPersistMime : IPersist
1246*c2c66affSColin Finck    {
1247*c2c66affSColin Finck        /* FIXME: fill this in */
1248*c2c66affSColin Finck    }
1249*c2c66affSColin Finck
1250*c2c66affSColin Finck    [
1251*c2c66affSColin Finck        uuid(c558834f-7f86-11d0-8252-00c04fd85ab4),
1252*c2c66affSColin Finck        object
1253*c2c66affSColin Finck    ]
1254*c2c66affSColin Finck    interface IMimeMessageParts : IUnknown
1255*c2c66affSColin Finck    {
1256*c2c66affSColin Finck        /* FIXME: fill this in */
1257*c2c66affSColin Finck    }
1258*c2c66affSColin Finck
1259*c2c66affSColin Finck    [
1260*c2c66affSColin Finck        uuid(c558834d-7f86-11d0-8252-00c04fd85ab4),
1261*c2c66affSColin Finck        object
1262*c2c66affSColin Finck    ]
1263*c2c66affSColin Finck    interface IMimeEnumHeaderRows : IUnknown
1264*c2c66affSColin Finck    {
1265*c2c66affSColin Finck        typedef struct tagENUMHEADERROW
1266*c2c66affSColin Finck        {
1267*c2c66affSColin Finck            HHEADERROW   hRow;
1268*c2c66affSColin Finck            LPSTR        pszHeader;
1269*c2c66affSColin Finck            LPSTR        pszData;
1270*c2c66affSColin Finck            ULONG        cchData;
1271*c2c66affSColin Finck            DWORD_PTR    dwReserved;
1272*c2c66affSColin Finck        } ENUMHEADERROW, *LPENUMHEADERROW;
1273*c2c66affSColin Finck
1274*c2c66affSColin Finck        /* FIXME: fill this in */
1275*c2c66affSColin Finck    }
1276*c2c66affSColin Finck
1277*c2c66affSColin Finck    [
1278*c2c66affSColin Finck        uuid(fd853cee-7f86-11d0-8252-00c04fd85ab4),
1279*c2c66affSColin Finck        object
1280*c2c66affSColin Finck    ]
1281*c2c66affSColin Finck    interface IMimeEnumProperties : IUnknown
1282*c2c66affSColin Finck    {
1283*c2c66affSColin Finck        typedef [unique] IMimeEnumProperties *LPMIMEENUMPROPERTIES;
1284*c2c66affSColin Finck
1285*c2c66affSColin Finck        typedef struct tagENUMPROPERTY
1286*c2c66affSColin Finck        {
1287*c2c66affSColin Finck            LPSTR       pszName;
1288*c2c66affSColin Finck            HHEADERROW  hRow;
1289*c2c66affSColin Finck            DWORD       dwPropId;
1290*c2c66affSColin Finck        } ENUMPROPERTY, *LPENUMPROPERTY;
1291*c2c66affSColin Finck
1292*c2c66affSColin Finck        HRESULT Next(
1293*c2c66affSColin Finck            [in]      ULONG cFetch,
1294*c2c66affSColin Finck            [in, out] LPENUMPROPERTY prgProp,
1295*c2c66affSColin Finck            [out]     ULONG *pcFetched);
1296*c2c66affSColin Finck
1297*c2c66affSColin Finck        HRESULT Skip(
1298*c2c66affSColin Finck            [in]      ULONG cItems);
1299*c2c66affSColin Finck
1300*c2c66affSColin Finck        HRESULT Reset(void);
1301*c2c66affSColin Finck
1302*c2c66affSColin Finck        HRESULT Clone(
1303*c2c66affSColin Finck            [out]      IMimeEnumProperties **ppEnum);
1304*c2c66affSColin Finck
1305*c2c66affSColin Finck        HRESULT Count(
1306*c2c66affSColin Finck            [out]      ULONG *pcItems);
1307*c2c66affSColin Finck
1308*c2c66affSColin Finck    }
1309*c2c66affSColin Finck
1310*c2c66affSColin Finck    [
1311*c2c66affSColin Finck        uuid(c5588354-7f86-11d0-8252-00c04fd85ab4),
1312*c2c66affSColin Finck        object
1313*c2c66affSColin Finck    ]
1314*c2c66affSColin Finck    interface IMimeEnumAddressTypes : IUnknown
1315*c2c66affSColin Finck    {
1316*c2c66affSColin Finck        /* FIXME: fill this in */
1317*c2c66affSColin Finck    }
1318*c2c66affSColin Finck
1319*c2c66affSColin Finck    [
1320*c2c66affSColin Finck        uuid(c5588350-7f86-11d0-8252-00c04fd85ab4),
1321*c2c66affSColin Finck        object
1322*c2c66affSColin Finck    ]
1323*c2c66affSColin Finck    interface IMimeEnumMessageParts : IUnknown
1324*c2c66affSColin Finck    {
1325*c2c66affSColin Finck        /* FIXME: fill this in */
1326*c2c66affSColin Finck    }
1327*c2c66affSColin Finck
1328*c2c66affSColin Finck    [
1329*c2c66affSColin Finck        uuid(64577981-86d7-11d1-bdfc-00c04fa31009),
1330*c2c66affSColin Finck        object
1331*c2c66affSColin Finck    ]
1332*c2c66affSColin Finck    interface IHashTable : IUnknown
1333*c2c66affSColin Finck    {
1334*c2c66affSColin Finck        /* FIXME: fill this in */
1335*c2c66affSColin Finck    }
1336*c2c66affSColin Finck
1337*c2c66affSColin Finck    [
1338*c2c66affSColin Finck        uuid(c5588351-7f86-11d0-8252-00c04fd85ab4),
1339*c2c66affSColin Finck        object
1340*c2c66affSColin Finck    ]
1341*c2c66affSColin Finck    interface IMimeAllocator : IMalloc
1342*c2c66affSColin Finck    {
1343*c2c66affSColin Finck        typedef [unique] IMimeAllocator *LPMIMEALLOCATOR;
1344*c2c66affSColin Finck
1345*c2c66affSColin Finck        HRESULT FreeParamInfoArray(
1346*c2c66affSColin Finck            [in] ULONG            cParams,
1347*c2c66affSColin Finck            [in] LPMIMEPARAMINFO  prgParam,
1348*c2c66affSColin Finck            [in] boolean          fFreeArray);
1349*c2c66affSColin Finck
1350*c2c66affSColin Finck        HRESULT FreeAddressList(
1351*c2c66affSColin Finck            [in,out] LPADDRESSLIST pList);
1352*c2c66affSColin Finck
1353*c2c66affSColin Finck        HRESULT FreeAddressProps(
1354*c2c66affSColin Finck            [in,out] LPADDRESSPROPS pAddress);
1355*c2c66affSColin Finck
1356*c2c66affSColin Finck        HRESULT ReleaseObjects(
1357*c2c66affSColin Finck            [in] ULONG            cObjects,
1358*c2c66affSColin Finck            [in] IUnknown         **prgpUnknown,
1359*c2c66affSColin Finck            [in] boolean          fFreeArray);
1360*c2c66affSColin Finck
1361*c2c66affSColin Finck        HRESULT FreeEnumHeaderRowArray(
1362*c2c66affSColin Finck            [in] ULONG            cRows,
1363*c2c66affSColin Finck            [in] LPENUMHEADERROW  prgRow,
1364*c2c66affSColin Finck            [in] boolean          fFreeArray);
1365*c2c66affSColin Finck
1366*c2c66affSColin Finck        HRESULT FreeEnumPropertyArray(
1367*c2c66affSColin Finck            [in] ULONG            cProps,
1368*c2c66affSColin Finck            [in] LPENUMPROPERTY   prgProp,
1369*c2c66affSColin Finck            [in] boolean          fFreeArray);
1370*c2c66affSColin Finck
1371*c2c66affSColin Finck        HRESULT FreeThumbprint(
1372*c2c66affSColin Finck            [in] THUMBBLOB         *pthumbprint);
1373*c2c66affSColin Finck
1374*c2c66affSColin Finck        HRESULT PropVariantClear(
1375*c2c66affSColin Finck            [in] LPPROPVARIANT     pProp);
1376*c2c66affSColin Finck
1377*c2c66affSColin Finck    }
1378*c2c66affSColin Finck
1379*c2c66affSColin Finck    [
1380*c2c66affSColin Finck        uuid(feceaffd-c441-11d1-960e-00c04fbd7c09),
1381*c2c66affSColin Finck        object
1382*c2c66affSColin Finck    ]
1383*c2c66affSColin Finck    interface IMimeObjResolver : IUnknown
1384*c2c66affSColin Finck    {
1385*c2c66affSColin Finck        /* FIXME: fill this in */
1386*c2c66affSColin Finck    }
1387*c2c66affSColin Finck
1388*c2c66affSColin Finck    [
1389*c2c66affSColin Finck        uuid(b0d17fc2-7bc4-11d1-bdfa-00c04fa31009),
1390*c2c66affSColin Finck        object
1391*c2c66affSColin Finck    ]
1392*c2c66affSColin Finck    interface IFontCache : IUnknown
1393*c2c66affSColin Finck    {
1394*c2c66affSColin Finck        /* FIXME: fill this in */
1395*c2c66affSColin Finck    }
1396*c2c66affSColin Finck
1397*c2c66affSColin Finck    [
1398*c2c66affSColin Finck        uuid(b0d17fc5-7bc4-11d1-bdfa-00c04fa31009),
1399*c2c66affSColin Finck        object
1400*c2c66affSColin Finck    ]
1401*c2c66affSColin Finck    interface IFontCacheNotify : IUnknown
1402*c2c66affSColin Finck    {
1403*c2c66affSColin Finck        /* FIXME: fill this in */
1404*c2c66affSColin Finck    }
1405*c2c66affSColin Finck
1406*c2c66affSColin Finck    [
1407*c2c66affSColin Finck        uuid(70183210-7b36-11d2-8c12-00c04fa31009),
1408*c2c66affSColin Finck        object
1409*c2c66affSColin Finck    ]
1410*c2c66affSColin Finck    interface IMimeEditTag : IUnknown
1411*c2c66affSColin Finck    {
1412*c2c66affSColin Finck        /* FIXME: fill this in */
1413*c2c66affSColin Finck    }
1414*c2c66affSColin Finck
1415*c2c66affSColin Finck    [
1416*c2c66affSColin Finck        uuid(d09ee528-7b38-11d2-8c12-00c04fa31009),
1417*c2c66affSColin Finck        object
1418*c2c66affSColin Finck    ]
1419*c2c66affSColin Finck    interface IMimeEditTagCollection : IUnknown
1420*c2c66affSColin Finck    {
1421*c2c66affSColin Finck        /* FIXME: fill this in */
1422*c2c66affSColin Finck    }
1423*c2c66affSColin Finck
1424*c2c66affSColin Finck    [
1425*c2c66affSColin Finck         uuid(ba715ae0-a740-11d2-8b22-0080c76b34c6),
1426*c2c66affSColin Finck         local
1427*c2c66affSColin Finck    ]
1428*c2c66affSColin Finck    interface IMimeSecurityCallback : IUnknown
1429*c2c66affSColin Finck    {
1430*c2c66affSColin Finck        /* FIXME: fill this in */
1431*c2c66affSColin Finck
1432*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_UNKNOWN                0")
1433*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_KEYTRANS               1")
1434*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_KEYAGREE               2")
1435*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_MAIL_LIST              3")
1436*c2c66affSColin Finck
1437*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_CERTIFICATE          0")
1438*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_KEYTRANS             1")
1439*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_PROVIDER             2")
1440*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_EPHEMERAL_KEYAGREE   3")
1441*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_STATIC_KEYAGREE      4")
1442*c2c66affSColin Finck
1443*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_CERTIFICATE           0")
1444*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_ISSUERSERIAL          1")
1445*c2c66affSColin Finck        cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_KEY_ID                2")
1446*c2c66affSColin Finck
1447*c2c66affSColin Finck    }
1448*c2c66affSColin Finck}
1449*c2c66affSColin Finck
1450*c2c66affSColin Finckcpp_quote("#ifdef __cplusplus")
1451*c2c66affSColin Finckcpp_quote(" extern \"C\" {")
1452*c2c66affSColin Finckcpp_quote("#endif")
1453*c2c66affSColin Finck
1454*c2c66affSColin Finckcpp_quote("")
1455*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSetCompatMode(DWORD);")
1456*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleContentTypeFromUrl(LPCSTR,LPCSTR,LPSTR*);")
1457*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleParseMhtmlUrl(LPSTR,LPSTR*,LPSTR*);")
1458*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleObjectFromUrl(LPCSTR,BOOL,REFIID,LPVOID*,IUnknown**);")
1459*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleObjectFromMoniker(BINDF,IMoniker*,IBindCtx*,REFIID,LPVOID*,IMoniker**);")
1460*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCombineURL(LPCSTR,ULONG,LPCSTR,ULONG,BOOL,LPSTR*);")
1461*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetSubjectFileName(IMimePropertySet*,ULONG*,ULONG*,LPSTR,ULONG);")
1462*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateWebDocument(LPCSTR,LPCSTR,IMimeWebDocument**);")
1463*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetRelatedSection(IMimeMessageTree*,boolean,LPHBODY,boolean*);")
1464*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetMixedSection(IMimeMessageTree*,boolean,LPHBODY,boolean*);")
1465*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetAlternativeSection(IMimeMessageTree*,LPHBODY,boolean*);")
1466*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGenerateCID(LPSTR,ULONG,boolean);")
1467*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGenerateMID(LPSTR,ULONG,boolean);")
1468*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateByteStream(IStream**);")
1469*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOlGetPropertySchema(IMimePropertySchema**);")
1470*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleQueryString(LPCSTR,LPCSTR,boolean,boolean);")
1471*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetPropA(IMimePropertySet*,LPCSTR,DWORD,LPSTR*);")
1472*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSetPropA(IMimePropertySet*,LPCSTR,DWORD,LPCSTR);")
1473*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetPropW(IMimePropertySet*,LPCSTR,DWORD,LPWSTR*);")
1474*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSetPropW(IMimePropertySet*,LPCSTR,DWORD,LPCWSTR);")
1475*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetBodyPropA(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPSTR*);")
1476*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSetBodyPropA(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPCSTR);")
1477*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetBodyPropW(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPWSTR*);")
1478*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSetBodyPropW(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPCWSTR);")
1479*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateHeaderTable(IMimeHeaderTable**);")
1480*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleVariantFree(LPPROPVARIANT);")
1481*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleVariantCopy(LPPROPVARIANT,LPPROPVARIANT);")
1482*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetExtClassId(LPCSTR,LPCLSID);")
1483*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleEncodeHeader(HCHARSET,LPPROPVARIANT,LPSTR*,LPRFC1522INFO);")
1484*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleDecodeHeader(HCHARSET,LPCSTR,LPPROPVARIANT,LPRFC1522INFO);")
1485*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleRfc1522Decode(LPCSTR,LPSTR,ULONG,LPSTR*);")
1486*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleRfc1522Encode(LPCSTR,HCHARSET,LPSTR*);")
1487*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetInternat(IMimeInternational**);")
1488*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleFindCharset(LPCSTR,LPHCHARSET);")
1489*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetCharsetInfo(HCHARSET,LPINETCSETINFO);")
1490*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetCodePageInfo(HCHARSET,LPCODEPAGEINFO);")
1491*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetDefaultCharset(LPHCHARSET);")
1492*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSetDefaultCharset(HCHARSET);")
1493*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetCodePageCharset(CODEPAGEID,CHARSETTYPE,LPHCHARSET);")
1494*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateVirtualStream(IStream**);")
1495*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleOpenFileStream(LPCSTR,DWORD,DWORD,IStream**);")
1496*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleIsTnefStream(IStream*);")
1497*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGenerateFileName(LPCSTR,LPCSTR,LPCSTR,LPSTR*);")
1498*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetFileExtension(LPCSTR,LPSTR,ULONG);")
1499*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateSecurity(IMimeSecurity**);")
1500*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleInetDateToFileTime(LPCSTR,LPFILETIME);")
1501*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleFileTimeToInetDate(LPFILETIME,LPSTR,ULONG);")
1502*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateMessageParts(IMimeMessageParts**);")
1503*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetAllocator(IMimeAllocator**);")
1504*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleParseRfc822Address(DWORD,ENCODINGTYPE,LPCSTR,LPADDRESSLIST);")
1505*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateMessage(IUnknown*,IMimeMessage**);")
1506*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleMergePartialHeaders(IStream*,IStream*);")
1507*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleEscapeString(CODEPAGEID,LPCSTR,LPSTR*);")
1508*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetExtContentType(LPCSTR,LPSTR*);")
1509*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetContentTypeExt(LPCSTR,LPSTR*);")
1510*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetFileInfo(LPSTR,LPSTR*,LPSTR*,LPSTR*,LPSTR*,LPSTR*);")
1511*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateBody(IMimeBody**);")
1512*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreatePropertySet(IUnknown*,IMimePropertySet**);")
1513*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateMessageTree(IUnknown*,IMimeMessageTree**);")
1514*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetCertsFromThumbprints(THUMBBLOB*,X509CERTRESULT*,const HCERTSTORE*,DWORD);")
1515*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSplitMessage(IMimeMessage*,ULONG,IMimeMessageParts**);")
1516*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleClearDirtyTree(IMimeMessageTree*);")
1517*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleConvertEnrichedToHTML(CODEPAGEID,IStream*,IStream*);")
1518*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapsToDlg(LPBYTE,DWORD,DWORD,PCX509CERT*,HWND,DWORD,DWORD,DWORD);")
1519*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapsFromDlg(HWND,DWORD,DWORD,DWORD,LPBYTE,DWORD*);")
1520*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapInit(LPBYTE,DWORD,LPVOID*);")
1521*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapAddSMimeCap(LPBYTE,DWORD,LPVOID);")
1522*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapAddCert(LPBYTE,DWORD,BOOL,LPVOID);")
1523*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapGetEncAlg(LPVOID,LPBYTE,DWORD*,DWORD*);")
1524*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapGetHashAlg(LPVOID,LPBYTE,DWORD*,DWORD*);")
1525*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapRelease(LPVOID);")
1526*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleAlgNameFromSMimeap(LPBYTE,DWORD,LPCSTR*);")
1527*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleAlgStrengthFromSMimeCap(LPBYTE,DWORD,BOOL,DWORD*);")
1528*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleSMimeCapsFull(LPVOID,BOOL,BOOL,LPBYTE,DWORD*);")
1529*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleCreateHashTable(DWORD,BOOL,IHashTable**);")
1530*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleStripHeaders(IMimeMessage*,HBODY,LPCSTR,LPCSTR,IStream**);")
1531*c2c66affSColin Finck
1532*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeEditViewSource(HWND,IMimeMessage*);")
1533*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeEditIsSafeToRun(HWND,LPCSTR);")
1534*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeEditVerifyTrust(HWND,LPCSTR,LPCSTR);")
1535*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeEditCreateMimeDocument(IUnknown*,IMimeMessage*,DWORD,IMimeMessage**);")
1536*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeEditGetBackgroundImageUrl(IUnknown*,BSTR*);")
1537*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeEditDocumentFromStream(IStream*,REFIID,void**);")
1538*c2c66affSColin Finck
1539*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeOleGetPropertySchema(IMimePropertySchema**);")
1540*c2c66affSColin Finckcpp_quote("HRESULT WINAPI MimeGetAddressFormatW(REFIID,void*,DWORD,ADDRESSFORMAT,WCHAR**);")
1541*c2c66affSColin Finckcpp_quote("#ifdef __cplusplus")
1542*c2c66affSColin Finckcpp_quote("}")
1543*c2c66affSColin Finckcpp_quote("#endif")
1544