/* * Copyright 2007 Robert Shearman for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ import "ocidl.idl"; import "objidl.idl"; import "propidl.idl"; #define DECLARE_HANDLE(name) typedef void *name interface IMimeMessageCallback; interface IMimeEnumAddressTypes; interface IMimeMessageParts; interface IMimeMessageTree; interface IMimeBody; interface IMimeEnumProperties; cpp_quote("DEFINE_GUID(CLSID_IMimeBody, 0xfd853cdb, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") cpp_quote("DEFINE_GUID(CLSID_IMimeAllocator, 0xfd853cdd, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") cpp_quote("DEFINE_GUID(CLSID_IMimeMessage, 0xfd853ce3, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") cpp_quote("DEFINE_GUID(CLSID_IMimeSecurity, 0xfd853cde, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") cpp_quote("DEFINE_GUID(CLSID_IVirtualStream, 0xfd853cdf, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") cpp_quote("#define MIME_E_REG_CREATE_KEY 0x800cce01") cpp_quote("#define MIME_E_REG_QUERY_INFO 0x800cce02") cpp_quote("#define MIME_E_INVALID_ENCTYPE 0x800cce03") cpp_quote("#define MIME_E_BOUNDARY_MISMATCH 0x800cce04") cpp_quote("#define MIME_E_NOT_FOUND 0x800cce05") cpp_quote("#define MIME_E_NO_DATA 0x800cce05") cpp_quote("#define MIME_E_BUFFER_TOO_SMALL 0x800cce06") cpp_quote("#define MIME_E_INVALID_ITEM_FLAGS 0x800cce07") cpp_quote("#define MIME_E_ONE_LINE_ITEME 0x800cce08") cpp_quote("#define MIME_E_INVALID_HANDLE 0x800cce09") cpp_quote("#define MIME_E_CHARSET_TRANSLATE 0x800cce0a") cpp_quote("#define MIME_E_NOT_INITIALIZED 0x800cce0b") cpp_quote("#define MIME_E_INVALID_CHARSET_TYPE 0x800cce31") cpp_quote("#define MIME_E_INVALID_TEXT_TYPE 0x800cce38") cpp_quote("#define MIME_E_SECURITY_NOOP 0x800cceb1") cpp_quote("#define MIME_S_SECURITY_NOOP 0x000cceb1") cpp_quote("typedef enum tagMIMEPROPID {") cpp_quote(" PID_HDR_NEWSGROUP = 2,") cpp_quote(" PID_HDR_NEWSGROUPS = 3,") cpp_quote(" PID_HDR_REFS = 4,") cpp_quote(" PID_HDR_SUBJECT = 5,") cpp_quote(" PID_HDR_FROM = 6,") cpp_quote(" PID_HDR_MESSAGEID = 7,") cpp_quote(" PID_HDR_RETURNPATH = 8,") cpp_quote(" PID_HDR_RR = 9,") cpp_quote(" PID_HDR_RETRCPTO = 10,") cpp_quote(" PID_HDR_APPARTO = 11,") cpp_quote(" PID_HDR_DATE = 12,") cpp_quote(" PID_HDR_RECEIVED = 13,") cpp_quote(" PID_HDR_REPLYTO = 14,") cpp_quote(" PID_HDR_XMAILER = 15,") cpp_quote(" PID_HDR_BCC = 16,") cpp_quote(" PID_HDR_MIMEVER = 17,") cpp_quote(" PID_HDR_CNTTYPE = 18,") cpp_quote(" PID_HDR_CNTXFER = 19,") cpp_quote(" PID_HDR_CNTID = 20,") cpp_quote(" PID_HDR_CNTDESC = 21,") cpp_quote(" PID_HDR_CNTDISP = 22,") cpp_quote(" PID_HDR_CNTBASE = 23,") cpp_quote(" PID_HDR_CNTLOC = 24,") cpp_quote(" PID_HDR_TO = 25,") cpp_quote(" PID_HDR_PATH = 26,") cpp_quote(" PID_HDR_FOLLOWUPTO = 27,") cpp_quote(" PID_HDR_EXPIRES = 28,") cpp_quote(" PID_HDR_CC = 29,") cpp_quote(" PID_HDR_SENDER = 61,") cpp_quote(" PID_HDR_INREPLYTO = 77,") cpp_quote("} MIMEPROPID;") cpp_quote("#define TYPEDID_MASK ((ULONG)0xffff)") cpp_quote("#define TYPEDID_TYPE(t) ((VARTYPE)((t) & TYPEDID_MASK))") cpp_quote("#define OID_HIDE_TNEF_ATTACHMENTS (0x000e0000 | VT_BOOL)") cpp_quote("#define OID_SECURITY_TYPE (0x00180000 | VT_UI4)") cpp_quote("#define OID_SECURITY_HWND_OWNER (0x00320000 | VT_UI4)") cpp_quote("#define OID_HEADER_RELOAD_TYPE (0x00370000 | VT_UI4)") cpp_quote("#define OID_SHOW_MACBINARY (0x00390000 | VT_BOOL)") [ uuid(e4b28371-83b0-11d0-8259-00c04fd85ab4), version(1.0) ] library MIMEOLE { importlib("stdole2.tlb"); DECLARE_HANDLE(HCHARSET); DECLARE_HANDLE(HBODY); DECLARE_HANDLE(HHEADERROW); typedef HCHARSET *LPHCHARSET; typedef HBODY *LPHBODY; typedef HHEADERROW *LPHHEADERROW; typedef DWORD TYPEDID; typedef const PROPVARIANT *LPCPROPVARIANT; typedef const BLOB *LPCBLOB; typedef enum tagRELOADTYPE { RELOAD_HEADER_NONE, RELOAD_HEADER_RESET, RELOAD_HEADER_APPEND, RELOAD_HEADER_REPLACE, } RELOADTYPE; typedef enum tagMIMESAVETYPE { SAVE_RFC822, SAVE_RFC1521, } MIMESAVETYPE; typedef enum tagCSETAPPLYTYPE { CSET_APPLY_UNTAGGED, CSET_APPLY_ALL, CSET_APPLY_TAG_ALL, } CSETAPPLYTYPE; typedef enum tagENCODINGTYPE { IET_BINARY, IET_BASE64, IET_UUENCODE, IET_QP, IET_7BIT, IET_8BIT, IET_INETCSET, IET_UNICODE, IET_RFC1522, IET_ENCODED, IET_CURRENT, IET_UNKNOWN, IET_BINHEX40, IET_LAST } ENCODINGTYPE; const SHORT IET_DECODED = IET_BINARY; const SHORT CCHMAX_HEADER_LINE = 1000; [ uuid(c5588349-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeInternational : IUnknown { typedef [unique] IMimeInternational *LPMIMEINTERNATIONAL; typedef DWORD CODEPAGEID; const CODEPAGEID CP_USASCII = 1252; const CODEPAGEID CP_UNICODE = 1200; const CODEPAGEID CP_JAUTODETECT = 50932; const CODEPAGEID CP_KAUTODETECT = 50949; const CODEPAGEID CP_ISO2022JPESC = 50221; const CODEPAGEID CP_ISO2022JPSIO = 50222; const SHORT CCHMAX_CSET_NAME = 128; const SHORT CCHMAX_LANG_NAME = 128; const SHORT CCHMAX_FACE_NAME = 128; typedef struct tagINETCSETINFO { CHAR szName[CCHMAX_CSET_NAME]; HCHARSET hCharset; CODEPAGEID cpiWindows; CODEPAGEID cpiInternet; DWORD dwReserved1; } INETCSETINFO, *LPINETCSETINFO; typedef enum tagINETLANGMASK { ILM_FAMILY = 0x01, ILM_NAME = 0x02, ILM_BODYCSET = 0x04, ILM_HEADERCSET = 0x08, ILM_WEBCSET = 0x10, ILM_FIXEDFONT = 0x20, ILM_VARIABLEFONT = 0x40, } INETLANGMASK; typedef struct tagCODEPAGEINFO { DWORD dwMask; CODEPAGEID cpiCodePage; BOOL fIsValidCodePage; ULONG ulMaxCharSize; BOOL fInternetCP; CODEPAGEID cpiFamily; CHAR szName[CCHMAX_LANG_NAME]; CHAR szBodyCset[CCHMAX_CSET_NAME]; CHAR szHeaderCset[CCHMAX_CSET_NAME]; CHAR szWebCset[CCHMAX_CSET_NAME]; CHAR szFixedFont[CCHMAX_FACE_NAME]; CHAR szVariableFont[CCHMAX_FACE_NAME]; ENCODINGTYPE ietNewsDefault; ENCODINGTYPE ietMailDefault; DWORD dwReserved1; } CODEPAGEINFO, *LPCODEPAGEINFO; typedef struct tagRFC1522INFO { BOOL fRfc1522Allowed; BOOL fRfc1522Used; BOOL fAllow8bit; HCHARSET hRfc1522Cset; } RFC1522INFO, *LPRFC1522INFO; typedef enum tagCHARSETTYPE { CHARSET_BODY, CHARSET_HEADER, CHARSET_WEB, } CHARSETTYPE; HRESULT SetDefaultCharset( [in] HCHARSET hCharset); HRESULT GetDefaultCharset( [out] LPHCHARSET phCharset); HRESULT GetCodePageCharset( [in] CODEPAGEID cpiCodePage, [in] CHARSETTYPE ctCsetType, [out] LPHCHARSET phCharset); HRESULT FindCharset( [in] LPCSTR pszCharset, [out] LPHCHARSET phCharset); HRESULT GetCharsetInfo( [in] HCHARSET hCharset, [in, out] LPINETCSETINFO pCsetInfo); HRESULT GetCodePageInfo( [in] CODEPAGEID cpiCodePage, [in, out] LPCODEPAGEINFO pCodePageInfo); HRESULT CanConvertCodePages( [in] CODEPAGEID cpiSource, [in] CODEPAGEID cpiDest); HRESULT DecodeHeader( [in] HCHARSET hCharset, [in] LPCSTR pszData, [in, out] LPPROPVARIANT pDecoded, [in, out] LPRFC1522INFO pRfc1522Info); HRESULT EncodeHeader( [in] HCHARSET hCharset, [in] LPPROPVARIANT pData, [out] LPSTR *ppszEncoded, [in, out] LPRFC1522INFO pRfc1522Info); HRESULT ConvertBuffer( [in] CODEPAGEID cpiSource, [in] CODEPAGEID cpiDest, [in] LPBLOB pIn, [in, out] LPBLOB pOut, [out] ULONG *pcbRead); HRESULT ConvertString( [in] CODEPAGEID cpiSource, [in] CODEPAGEID cpiDest, [in] LPPROPVARIANT pIn, [in, out] LPPROPVARIANT pOut); HRESULT MLANG_ConvertInetReset(void); HRESULT MLANG_ConvertInetString( [in] CODEPAGEID cpiSource, [in] CODEPAGEID cpiDest, [in] LPCSTR pSource, [in] int *pnSizeOfSource, [in,out,unique] LPSTR pDestination, [in] int *pnDstSize); HRESULT Rfc1522Decode( [in] LPCSTR pszValue, [in,ref] LPSTR pszCharset, [in] ULONG cchmax, [out] LPSTR *ppszDecoded); HRESULT Rfc1522Encode( [in] LPCSTR pszValue, [in] HCHARSET hCharset, [out] LPSTR *ppszEncoded); } [ uuid(c5588353-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeSecurity : IUnknown { typedef [unique] IMimeSecurity *LPMIMESECURITY; cpp_quote("#ifdef __WINE_WINCRYPT_H") cpp_quote("typedef PCCERT_CONTEXT PCX509CERT;") cpp_quote("#else") typedef const void *PCX509CERT; typedef void *HCERTSTORE; cpp_quote("#endif") typedef BLOB THUMBBLOB; typedef void *HCAPICERTSTORE; cpp_quote("#define MST_NONE 0x00000000") cpp_quote("#define MST_THIS_SIGN 0x00000001") cpp_quote("#define MST_THIS_ENCRYPT 0x00000002") cpp_quote("#define MST_BLOB_FLAG 0x00000004") cpp_quote("#define MST_THIS_BLOBSIGN (MST_BLOB_FLAG | MST_THIS_SIGN)") cpp_quote("#define MST_CHILD_SIGN 0x00000100") cpp_quote("#define MST_CHILD_ENCRYPT 0x00000200") cpp_quote("#define MST_SUBMSG_SIGN 0x00001000") cpp_quote("#define MST_SUBMSG_ENCRYPT 0x00002000") cpp_quote("#define MST_RECEIPT_REQUEST 0x00010000") cpp_quote("#define MST_CLASS_SMIME_V1 0x00000000") cpp_quote("#define MST_CLASS_PGP 0x01000000") typedef enum tagCERTSTATE { CERTIFICATE_OK, CERTIFICATE_NOT_PRESENT, CERTIFICATE_EXPIRED, CERTIFICATE_CHAIN_TOO_LONG, CERTIFICATE_MISSING_ISSUER, CERTIFICATE_CRL_LISTED, CERTIFICATE_NOT_TRUSTED, CERTIFICATE_INVALID, CERTIFICATE_ERROR, CERTIFICATE_NOPRINT, CERTIFICATE_UNKNOWN } CERTSTATE; typedef enum tagCERTNAMETYPE { SIMPLE, OID, X500, } CERTNAMETYPE; typedef enum tagCERTDATAID { CDID_EMAIL, CDID_MAX } CERTDATAID; typedef struct tagX509CERTRESULT { DWORD cEntries; CERTSTATE *rgcs; PCX509CERT *rgpCert; } X509CERTRESULT, *PX509CERTRESULT; typedef const X509CERTRESULT *PCX509CERTRESULT; HRESULT InitNew(void); HRESULT CheckInit(void); HRESULT EncodeMessage( [in] IMimeMessageTree */*const*/ pTree, [in] DWORD dwFlags); HRESULT EncodeBody( [in] IMimeMessageTree */*const*/ pTree, [in] HBODY hEncodeRoot, [in] DWORD dwFlags); HRESULT DecodeMessage( [in] IMimeMessageTree */*const*/ pTree, [in] DWORD dwFlags); HRESULT DecodeBody( [in] IMimeMessageTree */*const*/ pTree, [in] HBODY hDecodeRoot, [in] DWORD dwFlags); HRESULT EnumCertificates( [in] HCAPICERTSTORE hc, [in] DWORD dwUsage, [in] PCX509CERT pPrev, [out] PCX509CERT *ppCert); HRESULT GetCertificateName( [in] const PCX509CERT pX509Cert, [in] const CERTNAMETYPE cn, [out] LPSTR *ppszName); HRESULT GetMessageType( [in] const HWND hwndParent, [in] IMimeBody */*const*/ pBody, [out] DWORD */*const*/ pdwSecType); HRESULT GetCertData( [in] const PCX509CERT pX509Cert, [in] const CERTDATAID dataid, [out, ref] LPPROPVARIANT pValue); } [ uuid(fd853cd1-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeHeaderTable : IPersistStream { /* FIXME: fill this in */ } [ uuid(fd853cec-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimePropertySchema : IUnknown { typedef enum tagMIMEPROPFLAGS { MPF_INETCSET = 0x01, MPF_RFC1522 = 0x02, MPF_ADDRESS = 0x04, MPF_HASPARAMS = 0x08, MPF_MIME = 0x10, MPF_READONLY = 0x20 } MIMEPROPFLAGS; /* FIXME: fill this in */ } [ uuid(fd853cd3-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimePropertySet : IPersistStreamInit { typedef [unique] IMimePropertySet *LPMIMEPROPERTYSET; cpp_quote("#define PDF_ENCODED 0x00000001") cpp_quote("#define PDF_NAMEINDATA 0x00000002") cpp_quote("#define PDF_HEADERFORMAT (0x00000004 | PDF_ENCODED)") cpp_quote("#define PDF_NOCOMMENTS 0x00000008") cpp_quote("#define PDF_SAVENOENCODE 0x00000010") cpp_quote("#define PDF_VECTOR 0x00000020") typedef struct tagMIMEPARAMINFO { LPSTR pszName; LPSTR pszData; } MIMEPARAMINFO, *LPMIMEPARAMINFO; typedef enum tagPROPINFOMASK { PIM_CHARSET = 0x01, PIM_ENCODINGTYPE = 0x02, PIM_ROWNUMBER = 0x04, PIM_FLAGS = 0x08, PIM_PROPID = 0x10, PIM_VALUES = 0x20, PIM_VTDEFAULT = 0x40, PIM_VTCURRENT = 0x80 } PROPINFOMASK; typedef struct tagMIMEPROPINFO { DWORD dwMask; HCHARSET hCharset; ENCODINGTYPE ietEncoding; DWORD dwRowNumber; DWORD dwFlags; DWORD dwPropId; DWORD cValues; VARTYPE vtDefault; VARTYPE vtCurrent; } MIMEPROPINFO, *LPMIMEPROPINFO; typedef const MIMEPROPINFO *LPCMIMEPROPINFO; HRESULT GetPropInfo( [in] LPCSTR pszName, [in,out] LPMIMEPROPINFO pInfo); HRESULT SetPropInfo( [in] LPCSTR pszName, [in] LPCMIMEPROPINFO pInfo); cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") cpp_quote("#undef GetProp") cpp_quote("#undef SetProp") cpp_quote("#undef EnumProps") cpp_quote("#endif") HRESULT GetProp( [in] LPCSTR pszName, [in] DWORD dwFlags, [in,out] LPPROPVARIANT pValue); HRESULT SetProp( [in] LPCSTR pszName, [in] DWORD dwFlags, [in] LPCPROPVARIANT pValue); HRESULT AppendProp( [in] LPCSTR pszName, [in] DWORD dwFlags, [in] LPPROPVARIANT pValue); HRESULT DeleteProp( [in] LPCSTR pszName); HRESULT CopyProps( [in] ULONG cNames, [in,unique] LPCSTR *prgszName, [in] IMimePropertySet *pPropertySet); HRESULT MoveProps( [in] ULONG cNames, [in] LPCSTR *prgszName, [in] IMimePropertySet *pPropertySet); HRESULT DeleteExcept( [in] ULONG cNames, [in] LPCSTR *prgszName); HRESULT QueryProp( [in] LPCSTR pszName, [in] LPCSTR pszCriteria, [in] boolean fSubString, [in] boolean fCaseSensitive); HRESULT GetCharset( [out] LPHCHARSET phCharset); HRESULT SetCharset( [in] HCHARSET hCharset, [in] CSETAPPLYTYPE applytype); HRESULT GetParameters( [in] LPCSTR pszName, [out] ULONG *pcParams, [out] LPMIMEPARAMINFO *pprgParam); HRESULT IsContentType( [in] LPCSTR pszPriType, [in,unique] LPCSTR pszSubType); HRESULT BindToObject( [in] REFIID riid, [out,iid_is(riid)] void **ppvObject); HRESULT Clone( [out] IMimePropertySet **ppPropertySet); HRESULT SetOption( [in] const TYPEDID oid, [in] LPCPROPVARIANT pValue); HRESULT GetOption( [in] const TYPEDID oid, [in,out] LPPROPVARIANT pValue); cpp_quote("#define EPF_NONAME 0x00000001") HRESULT EnumProps( [in] DWORD dwFlags, [out] IMimeEnumProperties **ppEnum); } [ uuid(c558834a-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeAddressTable : IUnknown { typedef [unique] IMimeAddressTable *LPMIMEADDRESSTABLE; DECLARE_HANDLE(HADDRESS); typedef HADDRESS *LPHADDRESS; typedef DWORD IADDRESSTYPE; typedef enum tagADDRESSFORMAT { AFT_DISPLAY_FRIENDLY, AFT_DISPLAY_EMAIL, AFT_DISPLAY_BOTH, AFT_RFC822_DECODED, AFT_RFC822_ENCODED, AFT_RFC822_TRANSMIT, } ADDRESSFORMAT; typedef struct tagADDRESSPROPS { DWORD dwProps; HADDRESS hAddress; ENCODINGTYPE ietFriendly; HCHARSET hCharset; DWORD dwAdrType; LPSTR pszFriendly; LPWSTR pwszReserved; LPSTR pszEmail; CERTSTATE certstate; THUMBBLOB tbSigning; THUMBBLOB tbEncryption; DWORD dwCookie; DWORD dwReserved1; DWORD dwReserved2; } ADDRESSPROPS, *LPADDRESSPROPS; typedef struct tagADDRESSLIST { ULONG cAdrs; LPADDRESSPROPS prgAdr; } ADDRESSLIST, *LPADDRESSLIST; /* FIXME: fill this in */ } [ uuid(ee519f11-851a-11d0-8252-00c04fd85ab4), object ] interface IMimeWebDocument : IUnknown { /* FIXME: fill this in */ } [ uuid(c558834c-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeBody : IMimePropertySet { typedef [unique] IMimeBody *LPMIMEBODY; typedef enum tagIMSGBODYTYPE { IBT_SECURE, IBT_ATTACHMENT, IBT_EMPTY, IBT_CSETTAGGED, IBT_AUTOATTACH, } IMSGBODYTYPE; typedef struct tagBODYOFFSETS { DWORD cbBoundaryStart; DWORD cbHeaderStart; DWORD cbBodyStart; DWORD cbBodyEnd; } BODYOFFSETS, *LPBODYOFFSETS; typedef struct tagTRANSMITINFO { ENCODINGTYPE ietCurrent; ENCODINGTYPE ietXmitMime; ENCODINGTYPE ietXmit822; ULONG cbLongestLine; ULONG cExtended; ULONG ulPercentExt; ULONG cbSize; ULONG cLines; } TRANSMITINFO, *LPTRANSMITINFO; HRESULT IsType( [in] IMSGBODYTYPE bodytype); HRESULT SetDisplayName( [in] LPCSTR pszDisplay); HRESULT GetDisplayName( [out] LPSTR *ppszDisplay); HRESULT GetOffsets( [out] LPBODYOFFSETS pOffsets); HRESULT GetCurrentEncoding( [out] ENCODINGTYPE *pietEncoding); HRESULT SetCurrentEncoding( [in] ENCODINGTYPE ietEncoding); HRESULT GetEstimatedSize( [in] ENCODINGTYPE ietEncoding, [out] ULONG *pcbSize); HRESULT GetDataHere( [in] ENCODINGTYPE ietEncoding, [in] IStream *pStream); HRESULT GetData( [in] ENCODINGTYPE ietEncoding, [out] IStream **ppStream); HRESULT SetData( [in] ENCODINGTYPE ietEncoding, [in,unique] LPCSTR pszPriType, [in,unique] LPCSTR pszSubType, [in] REFIID riid, [in,iid_is(riid)] LPVOID pvObject); HRESULT EmptyData(void); HRESULT CopyTo( [in] IMimeBody *pBody); HRESULT GetTransmitInfo( [in,out] LPTRANSMITINFO pTransmitInfo); HRESULT SaveToFile( [in] ENCODINGTYPE ietEncoding, [in] LPCSTR pszFilePath); HRESULT GetHandle( [out] LPHBODY phBody); } [ uuid(fd853cd4-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeMessageTree : IPersistStreamInit { typedef [unique] IMimeMessageTree *LPMIMEMESSAGETREE; const HBODY HBODY_ROOT = (HBODY)-1; typedef enum tagBODYLOCATION { IBL_ROOT, IBL_PARENT, IBL_FIRST, IBL_LAST, IBL_NEXT, IBL_PREVIOUS, } BODYLOCATION; typedef struct tagFINDBODY { LPSTR pszPriType; LPSTR pszSubType; DWORD dwReserved; } FINDBODY, *LPFINDBODY; HRESULT GetMessageSource( [out] IStream **ppStream, [in] DWORD dwFlags); HRESULT GetMessageSize( [out] ULONG *pcbSize, [in] DWORD dwFlags); HRESULT LoadOffsetTable( [in] IStream *pStream); HRESULT SaveOffsetTable( [in] IStream *pStream, [in] DWORD dwFlags); HRESULT GetFlags( [out] DWORD *pdwFlags); HRESULT Commit( [in] DWORD dwFlags); HRESULT HandsOffStorage(); HRESULT BindToObject( [in] const HBODY hBody, [in] REFIID riid, [out, iid_is(riid)] void **ppvObject); HRESULT SaveBody( [in] HBODY hBody, [in] DWORD dwFlags, [in] IStream *pStream); HRESULT InsertBody( [in] BODYLOCATION location, [in] HBODY hPivot, [out] LPHBODY phBody); HRESULT GetBody( [in] BODYLOCATION location, [in] HBODY hPivot, [out] LPHBODY phBody); HRESULT DeleteBody( [in] HBODY hBody, [in] DWORD dwFlags); HRESULT MoveBody( [in] HBODY hBody, [in] BODYLOCATION location); HRESULT CountBodies( [in] HBODY hParent, [in] boolean fRecurse, [out] ULONG *pcBodies); HRESULT FindFirst( [in, out] LPFINDBODY pFindBody, [out] LPHBODY phBody); HRESULT FindNext( [in, out] LPFINDBODY pFindBody, [out] LPHBODY phBody); HRESULT ResolveURL( [in] HBODY hRelated, [in] LPCSTR pszBase, [in] LPCSTR pszURL, [in] DWORD dwFlags, [out] LPHBODY phBody); HRESULT ToMultipart( [in] HBODY hBody, [in] LPCSTR pszSubType, [out] LPHBODY phMultipart); HRESULT GetBodyOffsets( [in] HBODY hBody, [in, out] LPBODYOFFSETS pOffsets); HRESULT GetCharset( [out] LPHCHARSET phCharset); HRESULT SetCharset( [in] HCHARSET hCharset, [in] CSETAPPLYTYPE applytype); HRESULT IsBodyType( [in] HBODY hBody, [in] IMSGBODYTYPE bodytype); HRESULT IsContentType( [in] HBODY hBody, [in] LPCSTR pszPriType, [in] LPCSTR pszSubType); HRESULT QueryBodyProp( [in] HBODY hBody, [in] LPCSTR pszName, [in] LPCSTR pszCriteria, [in] boolean fSubString, [in] boolean fCaseSensitive); HRESULT GetBodyProp( [in] HBODY hBody, [in] LPCSTR pszName, [in] DWORD dwFlags, [in, out] LPPROPVARIANT pValue); HRESULT SetBodyProp( [in] HBODY hBody, [in] LPCSTR pszName, [in] DWORD dwFlags, [in] LPCPROPVARIANT pValue); HRESULT DeleteBodyProp( [in] HBODY hBody, [in] LPCSTR pszName); HRESULT SetOption( [in] const TYPEDID oid, [in] LPCPROPVARIANT pValue); HRESULT GetOption( [in] const TYPEDID oid, [in, out] LPPROPVARIANT pValue); } [ uuid(fd853cd5-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeMessage : IMimeMessageTree { typedef [unique] IMimeMessage *LPMIMEMESSAGE; typedef DWORD TEXTTYPE; typedef enum tagIMSGFLAGS { IMF_ATTACHMENTS = 0x00000001, IMF_MULTIPART = 0x00000002, IMF_SUBMULTIPART = 0x00000004, IMF_MIME = 0x00000008, IMF_HTML = 0x00000010, IMF_PLAIN = 0x00000020, IMF_PARTIAL = 0x00000040, IMF_SIGNED = 0x00000080, IMF_ENCRYPTED = 0x00000100, IMF_TNEF = 0x00000200, IMF_MHTML = 0x00000400, IMF_SECURE = 0x00000800, IMF_TEXT = 0x00001000, IMF_CSETTAGGED = 0x00002000, IMF_NEWS = 0x00004000, IMF_VOICEMAIL = 0x00008000, IMF_HASVCARD = 0x00010000, IMF_RFC1154 = 0x00020000, } IMSGFLAGS; typedef enum tagIMSGPRIORITY { IMSG_PRI_LOW = 5, IMSG_PRI_NORMAL = 3, IMSG_PRI_HIGH = 1, } IMSGPRIORITY; cpp_quote("#define WPF_HTML 0x00000001") cpp_quote("#define WPF_AUTOINLINE 0x00000002") cpp_quote("#define WPF_SLIDESHOW 0x00000004") cpp_quote("#define WPF_ATTACHLINKS 0x00000008") cpp_quote("#define WPF_IMAGESONLY 0x00000010") cpp_quote("#define WPF_NOMETACHARSET 0x00000020") typedef struct tagWEPAGEOPTIONS { DWORD cbSize; DWORD dwFlags; DWORD dwDelay; WCHAR wchQuote; } WEBPAGEOPTIONS, *LPWEBPAGEOPTIONS; cpp_quote("#define TXT_PLAIN 1") cpp_quote("#define TXT_HTML 2") HRESULT CreateWebPage( [in] IStream *pRootStm, [in] LPWEBPAGEOPTIONS pOptions, [in] IMimeMessageCallback *pCallback, [out] IMoniker **ppMoniker); HRESULT GetProp( [in] LPCSTR pszName, [in] DWORD dwFlags, [in,out] LPPROPVARIANT pValue); HRESULT SetProp( [in] LPCSTR pszName, [in] DWORD dwFlags, [in] LPCPROPVARIANT pValue); HRESULT DeleteProp( [in] LPCSTR pszName); HRESULT QueryProp( [in] LPCSTR pszName, [in] LPCSTR pszCriteria, [in] boolean fSubString, [in] boolean fCaseSensitive); HRESULT GetTextBody( [in] DWORD dwTxtType, [in] ENCODINGTYPE ietEncoding, [out] IStream **pStream, [out] LPHBODY phBody); HRESULT SetTextBody( [in] DWORD dwTxtType, [in] ENCODINGTYPE ietEncoding, [in] HBODY hAlternative, [in] IStream *pStream, [out] LPHBODY phBody); HRESULT AttachObject( [in] REFIID riid, [in, iid_is(riid)] void *pvObject, [out] LPHBODY phBody); HRESULT AttachFile( [in] LPCSTR pszFilePath, [in] IStream *pstmFile, [out] LPHBODY phBody); HRESULT AttachURL( [in] LPCSTR pszBase, [in] LPCSTR pszURL, [in] DWORD dwFlags, [in] IStream *pstmURL, [out] LPSTR *ppszCIDURL, [out] LPHBODY phBody); HRESULT GetAttachments( [out] ULONG *pcAttach, [out] LPHBODY *pprghAttach); HRESULT GetAddressTable( [out] IMimeAddressTable **ppTable); HRESULT GetSender( [in, out] LPADDRESSPROPS pAddress); HRESULT GetAddressTypes( [in] DWORD dwAdrTypes, [in] DWORD dwProps, [in, out] LPADDRESSLIST pList); HRESULT GetAddressFormat( [in] DWORD dwAdrTypes, [in] ADDRESSFORMAT format, [out] LPSTR *ppszFormat); HRESULT EnumAddressTypes( [in] DWORD dwAdrTypes, [in] DWORD dwProps, [out] IMimeEnumAddressTypes **ppEnum); HRESULT SplitMessage( [in] ULONG cbMaxPart, [out] IMimeMessageParts **ppParts); HRESULT GetRootMoniker( [out] IMoniker **ppMoniker); } [ uuid(761aa741-7bda-11d1-8aa9-00c04fb951f3), object ] interface IMimeMessageCallback : IUnknown { HRESULT OnWebPageSplitter( [in] DWORD cInlined, [in] IStream *ppStream); } [ uuid(de4ad8da-555f-11d1-8dd0-00c04fb951f9), object ] interface IPersistMime : IPersist { /* FIXME: fill this in */ } [ uuid(c558834f-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeMessageParts : IUnknown { /* FIXME: fill this in */ } [ uuid(c558834d-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeEnumHeaderRows : IUnknown { typedef struct tagENUMHEADERROW { HHEADERROW hRow; LPSTR pszHeader; LPSTR pszData; ULONG cchData; DWORD_PTR dwReserved; } ENUMHEADERROW, *LPENUMHEADERROW; /* FIXME: fill this in */ } [ uuid(fd853cee-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeEnumProperties : IUnknown { typedef [unique] IMimeEnumProperties *LPMIMEENUMPROPERTIES; typedef struct tagENUMPROPERTY { LPSTR pszName; HHEADERROW hRow; DWORD dwPropId; } ENUMPROPERTY, *LPENUMPROPERTY; HRESULT Next( [in] ULONG cFetch, [in, out] LPENUMPROPERTY prgProp, [out] ULONG *pcFetched); HRESULT Skip( [in] ULONG cItems); HRESULT Reset(void); HRESULT Clone( [out] IMimeEnumProperties **ppEnum); HRESULT Count( [out] ULONG *pcItems); } [ uuid(c5588354-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeEnumAddressTypes : IUnknown { /* FIXME: fill this in */ } [ uuid(c5588350-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeEnumMessageParts : IUnknown { /* FIXME: fill this in */ } [ uuid(64577981-86d7-11d1-bdfc-00c04fa31009), object ] interface IHashTable : IUnknown { /* FIXME: fill this in */ } [ uuid(c5588351-7f86-11d0-8252-00c04fd85ab4), object ] interface IMimeAllocator : IMalloc { typedef [unique] IMimeAllocator *LPMIMEALLOCATOR; HRESULT FreeParamInfoArray( [in] ULONG cParams, [in] LPMIMEPARAMINFO prgParam, [in] boolean fFreeArray); HRESULT FreeAddressList( [in,out] LPADDRESSLIST pList); HRESULT FreeAddressProps( [in,out] LPADDRESSPROPS pAddress); HRESULT ReleaseObjects( [in] ULONG cObjects, [in] IUnknown **prgpUnknown, [in] boolean fFreeArray); HRESULT FreeEnumHeaderRowArray( [in] ULONG cRows, [in] LPENUMHEADERROW prgRow, [in] boolean fFreeArray); HRESULT FreeEnumPropertyArray( [in] ULONG cProps, [in] LPENUMPROPERTY prgProp, [in] boolean fFreeArray); HRESULT FreeThumbprint( [in] THUMBBLOB *pthumbprint); HRESULT PropVariantClear( [in] LPPROPVARIANT pProp); } [ uuid(feceaffd-c441-11d1-960e-00c04fbd7c09), object ] interface IMimeObjResolver : IUnknown { /* FIXME: fill this in */ } [ uuid(b0d17fc2-7bc4-11d1-bdfa-00c04fa31009), object ] interface IFontCache : IUnknown { /* FIXME: fill this in */ } [ uuid(b0d17fc5-7bc4-11d1-bdfa-00c04fa31009), object ] interface IFontCacheNotify : IUnknown { /* FIXME: fill this in */ } [ uuid(70183210-7b36-11d2-8c12-00c04fa31009), object ] interface IMimeEditTag : IUnknown { /* FIXME: fill this in */ } [ uuid(d09ee528-7b38-11d2-8c12-00c04fa31009), object ] interface IMimeEditTagCollection : IUnknown { /* FIXME: fill this in */ } [ uuid(ba715ae0-a740-11d2-8b22-0080c76b34c6), local ] interface IMimeSecurityCallback : IUnknown { /* FIXME: fill this in */ cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_UNKNOWN 0") cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_KEYTRANS 1") cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_KEYAGREE 2") cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_MAIL_LIST 3") cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_CERTIFICATE 0") cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_KEYTRANS 1") cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_PROVIDER 2") cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_EPHEMERAL_KEYAGREE 3") cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_STATIC_KEYAGREE 4") cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_CERTIFICATE 0") cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_ISSUERSERIAL 1") cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_KEY_ID 2") } } cpp_quote("#ifdef __cplusplus") cpp_quote(" extern \"C\" {") cpp_quote("#endif") cpp_quote("") cpp_quote("HRESULT WINAPI MimeOleSetCompatMode(DWORD);") cpp_quote("HRESULT WINAPI MimeOleContentTypeFromUrl(LPCSTR,LPCSTR,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleParseMhtmlUrl(LPSTR,LPSTR*,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleObjectFromUrl(LPCSTR,BOOL,REFIID,LPVOID*,IUnknown**);") cpp_quote("HRESULT WINAPI MimeOleObjectFromMoniker(BINDF,IMoniker*,IBindCtx*,REFIID,LPVOID*,IMoniker**);") cpp_quote("HRESULT WINAPI MimeOleCombineURL(LPCSTR,ULONG,LPCSTR,ULONG,BOOL,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleGetSubjectFileName(IMimePropertySet*,ULONG*,ULONG*,LPSTR,ULONG);") cpp_quote("HRESULT WINAPI MimeOleCreateWebDocument(LPCSTR,LPCSTR,IMimeWebDocument**);") cpp_quote("HRESULT WINAPI MimeOleGetRelatedSection(IMimeMessageTree*,boolean,LPHBODY,boolean*);") cpp_quote("HRESULT WINAPI MimeOleGetMixedSection(IMimeMessageTree*,boolean,LPHBODY,boolean*);") cpp_quote("HRESULT WINAPI MimeOleGetAlternativeSection(IMimeMessageTree*,LPHBODY,boolean*);") cpp_quote("HRESULT WINAPI MimeOleGenerateCID(LPSTR,ULONG,boolean);") cpp_quote("HRESULT WINAPI MimeOleGenerateMID(LPSTR,ULONG,boolean);") cpp_quote("HRESULT WINAPI MimeOleCreateByteStream(IStream**);") cpp_quote("HRESULT WINAPI MimeOlGetPropertySchema(IMimePropertySchema**);") cpp_quote("HRESULT WINAPI MimeOleQueryString(LPCSTR,LPCSTR,boolean,boolean);") cpp_quote("HRESULT WINAPI MimeOleGetPropA(IMimePropertySet*,LPCSTR,DWORD,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleSetPropA(IMimePropertySet*,LPCSTR,DWORD,LPCSTR);") cpp_quote("HRESULT WINAPI MimeOleGetPropW(IMimePropertySet*,LPCSTR,DWORD,LPWSTR*);") cpp_quote("HRESULT WINAPI MimeOleSetPropW(IMimePropertySet*,LPCSTR,DWORD,LPCWSTR);") cpp_quote("HRESULT WINAPI MimeOleGetBodyPropA(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleSetBodyPropA(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPCSTR);") cpp_quote("HRESULT WINAPI MimeOleGetBodyPropW(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPWSTR*);") cpp_quote("HRESULT WINAPI MimeOleSetBodyPropW(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPCWSTR);") cpp_quote("HRESULT WINAPI MimeOleCreateHeaderTable(IMimeHeaderTable**);") cpp_quote("HRESULT WINAPI MimeOleVariantFree(LPPROPVARIANT);") cpp_quote("HRESULT WINAPI MimeOleVariantCopy(LPPROPVARIANT,LPPROPVARIANT);") cpp_quote("HRESULT WINAPI MimeOleGetExtClassId(LPCSTR,LPCLSID);") cpp_quote("HRESULT WINAPI MimeOleEncodeHeader(HCHARSET,LPPROPVARIANT,LPSTR*,LPRFC1522INFO);") cpp_quote("HRESULT WINAPI MimeOleDecodeHeader(HCHARSET,LPCSTR,LPPROPVARIANT,LPRFC1522INFO);") cpp_quote("HRESULT WINAPI MimeOleRfc1522Decode(LPCSTR,LPSTR,ULONG,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleRfc1522Encode(LPCSTR,HCHARSET,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleGetInternat(IMimeInternational**);") cpp_quote("HRESULT WINAPI MimeOleFindCharset(LPCSTR,LPHCHARSET);") cpp_quote("HRESULT WINAPI MimeOleGetCharsetInfo(HCHARSET,LPINETCSETINFO);") cpp_quote("HRESULT WINAPI MimeOleGetCodePageInfo(HCHARSET,LPCODEPAGEINFO);") cpp_quote("HRESULT WINAPI MimeOleGetDefaultCharset(LPHCHARSET);") cpp_quote("HRESULT WINAPI MimeOleSetDefaultCharset(HCHARSET);") cpp_quote("HRESULT WINAPI MimeOleGetCodePageCharset(CODEPAGEID,CHARSETTYPE,LPHCHARSET);") cpp_quote("HRESULT WINAPI MimeOleCreateVirtualStream(IStream**);") cpp_quote("HRESULT WINAPI MimeOleOpenFileStream(LPCSTR,DWORD,DWORD,IStream**);") cpp_quote("HRESULT WINAPI MimeOleIsTnefStream(IStream*);") cpp_quote("HRESULT WINAPI MimeOleGenerateFileName(LPCSTR,LPCSTR,LPCSTR,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleGetFileExtension(LPCSTR,LPSTR,ULONG);") cpp_quote("HRESULT WINAPI MimeOleCreateSecurity(IMimeSecurity**);") cpp_quote("HRESULT WINAPI MimeOleInetDateToFileTime(LPCSTR,LPFILETIME);") cpp_quote("HRESULT WINAPI MimeOleFileTimeToInetDate(LPFILETIME,LPSTR,ULONG);") cpp_quote("HRESULT WINAPI MimeOleCreateMessageParts(IMimeMessageParts**);") cpp_quote("HRESULT WINAPI MimeOleGetAllocator(IMimeAllocator**);") cpp_quote("HRESULT WINAPI MimeOleParseRfc822Address(DWORD,ENCODINGTYPE,LPCSTR,LPADDRESSLIST);") cpp_quote("HRESULT WINAPI MimeOleCreateMessage(IUnknown*,IMimeMessage**);") cpp_quote("HRESULT WINAPI MimeOleMergePartialHeaders(IStream*,IStream*);") cpp_quote("HRESULT WINAPI MimeOleEscapeString(CODEPAGEID,LPCSTR,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleGetExtContentType(LPCSTR,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleGetContentTypeExt(LPCSTR,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleGetFileInfo(LPSTR,LPSTR*,LPSTR*,LPSTR*,LPSTR*,LPSTR*);") cpp_quote("HRESULT WINAPI MimeOleCreateBody(IMimeBody**);") cpp_quote("HRESULT WINAPI MimeOleCreatePropertySet(IUnknown*,IMimePropertySet**);") cpp_quote("HRESULT WINAPI MimeOleCreateMessageTree(IUnknown*,IMimeMessageTree**);") cpp_quote("HRESULT WINAPI MimeOleGetCertsFromThumbprints(THUMBBLOB*,X509CERTRESULT*,const HCERTSTORE*,DWORD);") cpp_quote("HRESULT WINAPI MimeOleSplitMessage(IMimeMessage*,ULONG,IMimeMessageParts**);") cpp_quote("HRESULT WINAPI MimeOleClearDirtyTree(IMimeMessageTree*);") cpp_quote("HRESULT WINAPI MimeOleConvertEnrichedToHTML(CODEPAGEID,IStream*,IStream*);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapsToDlg(LPBYTE,DWORD,DWORD,PCX509CERT*,HWND,DWORD,DWORD,DWORD);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapsFromDlg(HWND,DWORD,DWORD,DWORD,LPBYTE,DWORD*);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapInit(LPBYTE,DWORD,LPVOID*);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapAddSMimeCap(LPBYTE,DWORD,LPVOID);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapAddCert(LPBYTE,DWORD,BOOL,LPVOID);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapGetEncAlg(LPVOID,LPBYTE,DWORD*,DWORD*);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapGetHashAlg(LPVOID,LPBYTE,DWORD*,DWORD*);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapRelease(LPVOID);") cpp_quote("HRESULT WINAPI MimeOleAlgNameFromSMimeap(LPBYTE,DWORD,LPCSTR*);") cpp_quote("HRESULT WINAPI MimeOleAlgStrengthFromSMimeCap(LPBYTE,DWORD,BOOL,DWORD*);") cpp_quote("HRESULT WINAPI MimeOleSMimeCapsFull(LPVOID,BOOL,BOOL,LPBYTE,DWORD*);") cpp_quote("HRESULT WINAPI MimeOleCreateHashTable(DWORD,BOOL,IHashTable**);") cpp_quote("HRESULT WINAPI MimeOleStripHeaders(IMimeMessage*,HBODY,LPCSTR,LPCSTR,IStream**);") cpp_quote("HRESULT WINAPI MimeEditViewSource(HWND,IMimeMessage*);") cpp_quote("HRESULT WINAPI MimeEditIsSafeToRun(HWND,LPCSTR);") cpp_quote("HRESULT WINAPI MimeEditVerifyTrust(HWND,LPCSTR,LPCSTR);") cpp_quote("HRESULT WINAPI MimeEditCreateMimeDocument(IUnknown*,IMimeMessage*,DWORD,IMimeMessage**);") cpp_quote("HRESULT WINAPI MimeEditGetBackgroundImageUrl(IUnknown*,BSTR*);") cpp_quote("HRESULT WINAPI MimeEditDocumentFromStream(IStream*,REFIID,void**);") cpp_quote("#ifdef __cplusplus") cpp_quote("}") cpp_quote("#endif")