Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3681 lines
186 KiB

// --------------------------------------------------------------------------------
// MIMEOLE.IDL
// Copyright (c)1993-1998 Microsoft Corporation, All Rights Reserved
// --------------------------------------------------------------------------------
import "ocidl.idl";
import "objidl.idl";
#ifndef UNIX
import "propidl.idl";
#else
import "urlmon.idl";
#endif /* unix */
import "wincrypt.idl";
#include "mimedisp.h"
interface IMimePropertySet;
interface IMimeMessage;
interface IMimeMessageW;
interface IMimeBody;
interface IMimeBodyW;
interface IMimeMessageTree;
interface IMimeEnumHeaderRows;
interface IMimeAddressTable;
interface IMimeMessageParts;
interface IMimeEnumMessageParts;
interface IMimeEnumAddressTypes;
interface IMimeInternational;
interface IMimeEnumProperties;
interface IMimeMessageCallback;
cpp_quote("#if (_WIN32_OE >= 0x0500)")
interface IPersistMime;
cpp_quote("#endif //_WIN32_OE")
cpp_quote("#if (_WIN32_OE >= 0x0501)")
interface IMimeSecurity2;
cpp_quote("#endif //_WIN32_OE")
// OE team hasn't fixed their idl to avoid the Win64 midl warnings - turn it off
midl_pragma warning(disable:2395)
cpp_quote("//--------------------------------------------------------------------------------")
cpp_quote("// MIMEOLE.H")
cpp_quote("//--------------------------------------------------------------------------------")
cpp_quote("// (C) Copyright 1995-1998 Microsoft Corporation. All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//--------------------------------------------------------------------------------")
cpp_quote("")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// GUIDS")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// {E4B28371-83B0-11d0-8259-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(LIBID_MIMEOLE, 0xe4b28371, 0x83b0, 0x11d0, 0x82, 0x59, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {05300401-BCBC-11d0-85E3-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeHtmlProtocol, 0x5300401, 0xbcbc, 0x11d0, 0x85, 0xe3, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {C5588354-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeEnumAddressTypes, 0xc5588354, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {EE519F11-851A-11d0-825C-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeWebDocument, 0xee519f11, 0x851a, 0x11d0, 0x82, 0x5c, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CEF-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IUnicodeStream, 0xfd853cef, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {C558834A-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeAddressTable, 0xc558834a, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {11C8D742-0FB4-11d3-A01E-00A0C90C9BB6}")
cpp_quote("DEFINE_GUID(IID_IMimeAddressTableW, 0x11c8d742, 0xfb4, 0x11d3, 0xa0, 0x1e, 0x0, 0xa0, 0xc9, 0xc, 0x9b, 0xb6);")
cpp_quote("")
cpp_quote("// {C558834B-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeAddressInfo, 0xc558834b, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {C558834D-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeEnumHeaderRows, 0xc558834d, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {C558834E-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeInlineSupport, 0xc558834e, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {C5588350-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeEnumMessageParts, 0xc5588350, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CD9-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeInternational, 0xfd853cd9, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {C5588349-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeInternational, 0xc5588349, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CDB-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeBody, 0xfd853cdb, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {C558834C-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeBody, 0xc558834c, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {2F38042A-D02F-11d2-A004-00A0C90C9BB6}")
cpp_quote("DEFINE_GUID(CLSID_IMimeBodyW, 0x2f38042a, 0xd02f, 0x11d2, 0xa0, 0x4, 0x0, 0xa0, 0xc9, 0xc, 0x9b, 0xb6);")
cpp_quote("// {2F38042B-D02F-11d2-A004-00A0C90C9BB6}")
cpp_quote("DEFINE_GUID(IID_IMimeBodyW, 0x2f38042b, 0xd02f, 0x11d2, 0xa0, 0x4, 0x0, 0xa0, 0xc9, 0xc, 0x9b, 0xb6);")
cpp_quote("// {FD853CDC-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeMessageParts, 0xfd853cdc, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {C558834F-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeMessageParts, 0xc558834f, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CDD-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeAllocator, 0xfd853cdd, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {C5588351-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeAllocator, 0xc5588351, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CDE-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeSecurity, 0xfd853cde, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {C5588353-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeSecurity, 0xc5588353, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CDF-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IVirtualStream, 0xfd853cdf, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {C5588359-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IVirtualStream, 0xc5588359, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CE0-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeHeaderTable, 0xfd853ce0, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {FD853CD1-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeHeaderTable, 0xfd853cd1, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CE1-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimePropertySet, 0xfd853ce1, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {FD853CD3-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimePropertySet, 0xfd853cd3, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CE2-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeMessageTree, 0xfd853ce2, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {FD853CD4-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeMessageTree, 0xfd853cd4, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CE3-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimeMessage, 0xfd853ce3, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {FD853CD5-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeMessage, 0xfd853cd5, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {F90ADFEE-D01F-11d2-A004-00A0C90C9BB6}")
cpp_quote("DEFINE_GUID(CLSID_IMimeMessageW, 0xf90adfee, 0xd01f, 0x11d2, 0xa0, 0x4, 0x0, 0xa0, 0xc9, 0xc, 0x9b, 0xb6);")
cpp_quote("// {F90ADFEF-D01F-11d2-A004-00A0C90C9BB6}")
cpp_quote("DEFINE_GUID(IID_IMimeMessageW, 0xf90adfef, 0xd01f, 0x11d2, 0xa0, 0x4, 0x0, 0xa0, 0xc9, 0xc, 0x9b, 0xb6);")
cpp_quote("")
cpp_quote("// {FD853CED-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_IMimePropertySchema, 0xfd853ced, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("// {FD853CEC-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimePropertySchema, 0xfd853cec, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD853CEE-7F86-11d0-8252-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IMimeEnumProperties, 0xfd853cee, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {DE4AD8DA-555F-11d1-8DD0-00C04FB951F9}")
cpp_quote("DEFINE_GUID(IID_IPersistMime, 0xde4ad8da, 0x555f, 0x11d1, 0x8d, 0xd0, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xf9);")
cpp_quote("")
cpp_quote("// {761AA641-7BDA-11d1-8AA9-00C04FB951F3}")
cpp_quote("DEFINE_GUID(IID_IMimeMessageCallback, 0x761aa641, 0x7bda, 0x11d1, 0x8a, 0xa9, 0x0, 0xc0, 0x4f, 0xb9, 0x51, 0xf3);")
cpp_quote("")
cpp_quote("#if (_WIN32_OE >= 0x0500)")
cpp_quote("")
cpp_quote("// {1C82EAD9-508E-11d1-8DCF-00C04FB951F9}")
cpp_quote("DEFINE_GUID(CLSID_MimeEdit, 0x1c82ead9, 0x508e, 0x11d1, 0x8d, 0xcf, 0x0, 0xc0, 0x4f, 0xb9, 0x51, 0xf9);")
cpp_quote("")
cpp_quote("// {1C82EADA-508E-11d1-8DCF-00C04FB951F9}")
cpp_quote("DEFINE_GUID(CMDSETID_MimeEdit, 0x1c82eada, 0x508e, 0x11d1, 0x8d, 0xcf, 0x0, 0xc0, 0x4f, 0xb9, 0x51, 0xf9);")
cpp_quote("")
cpp_quote("// {1C82EADB-508E-11d1-8DCF-00C04FB951F9}")
cpp_quote("DEFINE_GUID(CMDSETID_MimeEditHost, 0x1c82eadb, 0x508e, 0x11d1, 0x8d, 0xcf, 0x0, 0xc0, 0x4f, 0xb9, 0x51, 0xf9);")
cpp_quote("")
cpp_quote("// {64577981-86D7-11d1-BDFC-00C04FA31009}")
cpp_quote("DEFINE_GUID(IID_IHashTable, 0x64577981, 0x86d7, 0x11d1, 0xbd, 0xfc, 0x0, 0xc0, 0x4f, 0xa3, 0x10, 0x9);")
cpp_quote("")
cpp_quote("// {64577982-86D7-11d1-BDFC-00C04FA31009}")
cpp_quote("DEFINE_GUID(CLSID_IHashTable, 0x64577982, 0x86d7, 0x11d1, 0xbd, 0xfc, 0x0, 0xc0, 0x4f, 0xa3, 0x10, 0x9);")
cpp_quote("")
cpp_quote("// {B0D17FC2-7BC4-11d1-BDFA-00C04FA31009}")
cpp_quote("DEFINE_GUID(CLSID_IFontCache, 0xb0d17fc2, 0x7bc4, 0x11d1, 0xbd, 0xfa, 0x0, 0xc0, 0x4f, 0xa3, 0x10, 0x9);")
cpp_quote("")
cpp_quote("// {B0D17FC4-7BC4-11d1-BDFA-00C04FA31009}")
cpp_quote("DEFINE_GUID(IID_IFontCache, 0xb0d17fc4, 0x7bc4, 0x11d1, 0xbd, 0xfa, 0x0, 0xc0, 0x4f, 0xa3, 0x10, 0x9);")
cpp_quote("")
cpp_quote("// {B0D17FC5-7BC4-11d1-BDFA-00C04FA31009}")
cpp_quote("DEFINE_GUID(IID_IFontCacheNotify, 0xb0d17fc5, 0x7bc4, 0x11d1, 0xbd, 0xfa, 0x0, 0xc0, 0x4f, 0xa3, 0x10, 0x9);")
cpp_quote("")
cpp_quote("// {35461E30-C488-11d1-960E-00C04FBD7C09}")
cpp_quote("DEFINE_GUID(CLSID_IMimeObjResolver, 0x35461e30, 0xc488, 0x11d1, 0x96, 0xe, 0x0, 0xc0, 0x4f, 0xbd, 0x7c, 0x9);")
cpp_quote("")
cpp_quote("// {FECEAFFD-C441-11d1-960E-00C04FBD7C09}")
cpp_quote("DEFINE_GUID(IID_IMimeObjResolver, 0xfeceaffd, 0xc441, 0x11d1, 0x96, 0xe, 0x0, 0xc0, 0x4f, 0xbd, 0x7c, 0x9);")
cpp_quote("")
cpp_quote("// {70183210-7b36-11d2-8c12-00c04fa31009}")
cpp_quote("DEFINE_GUID(IID_IMimeEditTag, 0x70183210, 0x7b36, 0x11d2, 0x8c, 0x12, 0x00, 0xc0, 0x4f, 0xa3, 0x10, 0x09);")
cpp_quote("")
cpp_quote("// {d09ee528-7b38-11d2-8c12-00c04fa31009}")
cpp_quote("DEFINE_GUID(IID_IMimeEditTagCollection, 0xd09ee528, 0x7b38, 0x11d2, 0x8c, 0x12, 0x00, 0xc0, 0x4f, 0xa3, 0x10, 0x09);")
cpp_quote("")
cpp_quote("#endif //_WIN32_OE")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Errors")
cpp_quote("// --------------------------------------------------------------------------------")
//;begin_internal
//
// NOTE: All inetcomm error codes must reside between CC00 and CFFF (a 1k block).
// This has been approved by Johann Posch (johannp)
// We further subdevide this range as follows:
// CC00-CCFF IMNXPORT results
// CD00-CDFF IMNACCT results
// CE00-CEFF MIMEOLE results
// CF00-CFFF undefined, do not use
// (t-erikne 03/24/97)
//
// NOTE: All MimeEdit error codes must reside between 0x1700 - 0x17FF
//
//
//;end_internal
cpp_quote("#ifndef FACILITY_INTERNET")
cpp_quote("#define FACILITY_INTERNET 12")
cpp_quote("#endif")
cpp_quote("#ifndef HR_E")
cpp_quote("#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)")
cpp_quote("#endif")
cpp_quote("#ifndef HR_S")
cpp_quote("#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)")
cpp_quote("#endif")
cpp_quote("#ifndef HR_CODE")
cpp_quote("#define HR_CODE(hr) (INT)(hr & 0xffff)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIMEOLE Failure Return Values")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MIME_E_REG_CREATE_KEY HR_E(0xCE01)")
cpp_quote("#define MIME_E_REG_QUERY_INFO HR_E(0xCE02)")
cpp_quote("#define MIME_E_INVALID_ENCTYPE HR_E(0xCE03)")
cpp_quote("#define MIME_E_BOUNDARY_MISMATCH HR_E(0xCE04)")
cpp_quote("#define MIME_E_NOT_FOUND HR_E(0xCE05)")
cpp_quote("#define MIME_E_NO_DATA HR_E(0xCE05)")
cpp_quote("#define MIME_E_BUFFER_TOO_SMALL HR_E(0xCE06)")
cpp_quote("#define MIME_E_INVALID_ITEM_FLAGS HR_E(0xCE07)")
cpp_quote("#define MIME_E_ONE_LINE_ITEM HR_E(0xCE08)")
cpp_quote("#define MIME_E_INVALID_HANDLE HR_E(0xCE09)")
cpp_quote("#define MIME_E_CHARSET_TRANSLATE HR_E(0xCE0A)")
cpp_quote("#define MIME_E_NOT_INITIALIZED HR_E(0xCE0B)")
cpp_quote("#define MIME_E_NO_MORE_ROWS HR_E(0xCE0C)")
cpp_quote("#define MIME_E_ALREADY_BOUND HR_E(0xCE0D)")
cpp_quote("#define MIME_E_CANT_RESET_ROOT HR_E(0xCE0E)")
cpp_quote("#define MIME_E_INSERT_NOT_ALLOWED HR_E(0xCE0F)")
cpp_quote("#define MIME_E_BAD_BODY_LOCATION HR_E(0xCE10)")
cpp_quote("#define MIME_E_NOT_MULTIPART HR_E(0xCE11)")
cpp_quote("#define MIME_E_NO_MULTIPART_BOUNDARY HR_E(0xCE12)")
cpp_quote("#define MIME_E_CONVERT_NOT_NEEDED HR_E(0xCE13)")
cpp_quote("#define MIME_E_CANT_MOVE_BODY HR_E(0xCE14)")
cpp_quote("#define MIME_E_UNKNOWN_BODYTREE_VERSION HR_E(0xCE15)")
cpp_quote("#define MIME_E_NOTHING_TO_SAVE HR_E(0xCE16)")
cpp_quote("#define MIME_E_NEED_SAVE_MESSAGE HR_E(0xCE17)")
cpp_quote("#define MIME_E_NOTHING_TO_REVERT HR_E(0xCE18)")
cpp_quote("#define MIME_E_MSG_SIZE_DIFF HR_E(0xCE19)")
cpp_quote("#define MIME_E_CANT_RESET_PARENT HR_E(0xCE1A)")
cpp_quote("#define MIME_E_CORRUPT_CACHE_TREE HR_E(0xCE1B)")
cpp_quote("#define MIME_E_BODYTREE_OUT_OF_SYNC HR_E(0xCE1C)")
cpp_quote("#define MIME_E_INVALID_ENCODINGTYPE HR_E(0xCE1D)")
cpp_quote("#define MIME_E_MULTIPART_NO_DATA HR_E(0xCE1E)")
cpp_quote("#define MIME_E_INVALID_OPTION_VALUE HR_E(0xCE1F)")
cpp_quote("#define MIME_E_INVALID_OPTION_ID HR_E(0xCE20)")
cpp_quote("#define MIME_E_INVALID_HEADER_NAME HR_E(0xCE21)")
cpp_quote("#define MIME_E_NOT_BOUND HR_E(0xCE22)")
cpp_quote("#define MIME_E_MAX_SIZE_TOO_SMALL HR_E(0xCE23)")
cpp_quote("#define MIME_E_MULTIPART_HAS_CHILDREN HR_E(0xCE25)")
cpp_quote("#define MIME_E_INVALID_PROP_FLAGS HR_E(0xCE26)")
cpp_quote("#define MIME_E_INVALID_ADDRESS_TYPE HR_E(0xCE27)")
cpp_quote("#define MIME_E_INVALID_OBJECT_IID HR_E(0xCE28)")
cpp_quote("#define MIME_E_MLANG_DLL_NOT_FOUND HR_E(0xCE29)")
cpp_quote("#define MIME_E_ROOT_NOT_EMPTY HR_E(0xCE2A)")
cpp_quote("#define MIME_E_MLANG_BAD_DLL HR_E(0xCE2B)")
cpp_quote("#define MIME_E_REG_OPEN_KEY HR_E(0xCE2C)")
cpp_quote("#define MIME_E_INVALID_INET_DATE HR_E(0xCE2D)")
cpp_quote("#define MIME_E_INVALID_BODYTYPE HR_E(0xCE2E)")
cpp_quote("#define MIME_E_INVALID_DELETE_TYPE HR_E(0xCE2F)")
cpp_quote("#define MIME_E_OPTION_HAS_NO_VALUE HR_E(0xCE30)")
cpp_quote("#define MIME_E_INVALID_CHARSET_TYPE HR_E(0xCE31)")
cpp_quote("#define MIME_E_VARTYPE_NO_CONVERT HR_E(0xCE32)")
cpp_quote("#define MIME_E_INVALID_VARTYPE HR_E(0xCE33)")
cpp_quote("#define MIME_E_NO_MORE_ADDRESS_TYPES HR_E(0xCE34)")
cpp_quote("#define MIME_E_INVALID_ENCODING_TYPE HR_E(0xCE35)")
cpp_quote("#define MIME_S_ILLEGAL_LINES_FOUND HR_S(0xCE36)")
cpp_quote("#define MIME_S_MIME_VERSION HR_S(0xCE37)")
cpp_quote("#define MIME_E_INVALID_TEXT_TYPE HR_E(0xCE38)")
cpp_quote("#define MIME_E_READ_ONLY HR_E(0xCE39)")
cpp_quote("#define MIME_S_INVALID_MESSAGE HR_S(0xCE3A)")
cpp_quote("#define MIME_S_CHARSET_CONFLICT HR_S(0xCE3B)")
cpp_quote("#define MIME_E_UNSUPPORTED_VARTYPE HR_E(0xCE3C)")
cpp_quote("#define MIME_S_NO_CHARSET_CONVERT HR_S(0xCE3D)")
cpp_quote("#define MIME_E_URL_NOTFOUND HR_E(0xCE3E)")
cpp_quote("#define MIME_E_BAD_TEXT_DATA HR_E(0xCE3F)")
cpp_quote("#define MIME_E_NO_SIGNER HR_S(0xCE40)")
cpp_quote("")
cpp_quote("// ---------------------------------------------------------------------------")
cpp_quote("// MIMEOLE Security Error Return Values")
cpp_quote("// ---------------------------------------------------------------------------")
//;begin_internal
// MIMEOLE Security HRESULTS are further subdivided
// NOTE: you should never progammatically rely on this ordering
// it simply gives you a visual cue in the DOUTs
// CEA0-CEAF Initialization/Global
// CEB0-CCCF General
// CED0-CEDF Certificate
// CEE0-CEEF Signing
// CEF0-CEFF Encryption
//;end_internal
cpp_quote("#define MIME_E_SECURITY_NOTINIT HR_E(0xCEA0)")
cpp_quote("#define MIME_E_SECURITY_LOADCRYPT32 HR_E(0xCEA1)")
cpp_quote("#define MIME_E_SECURITY_BADPROCADDR HR_E(0xCEA2)")
cpp_quote("#define MIME_E_SECURITY_NODEFAULT HR_E(0xCEB0)")
cpp_quote("#define MIME_E_SECURITY_NOOP HR_E(0xCEB1)")
cpp_quote("#define MIME_S_SECURITY_NOOP HR_S(0xCEB1)")
cpp_quote("#define MIME_S_SECURITY_NONE HR_S(0xCEB2)")
cpp_quote("#define MIME_S_SECURITY_ERROROCCURED HR_S(0xCEB3)")
cpp_quote("#define MIME_E_SECURITY_USERCHOICE HR_E(0xCEB4)")
cpp_quote("#define MIME_E_SECURITY_UNKMSGTYPE HR_E(0xCEB5)")
cpp_quote("#define MIME_E_SECURITY_BADMESSAGE HR_E(0xCEB6)")
cpp_quote("#define MIME_E_SECURITY_BADCONTENT HR_E(0xCEB7)")
cpp_quote("#define MIME_E_SECURITY_BADSECURETYPE HR_E(0xCEB8)")
cpp_quote("#define MIME_E_SECURITY_CLASSNOTSUPPORTED HR_E(0xCEB9)")
cpp_quote("#define MIME_S_SECURITY_RECURSEONLY HR_S(0xCEBA)")
cpp_quote("#define MIME_E_SECURITY_BADSTORE HR_E(0xCED0)")
cpp_quote("#define MIME_S_SECURITY_NOCERT HR_S(0xCED1)")
cpp_quote("#define MIME_E_SECURITY_NOCERT HR_E(0xCED1)")
cpp_quote("#define MIME_E_SECURITY_CERTERROR HR_E(0xCED2)")
cpp_quote("#define MIME_S_SECURITY_CERTERROR HR_S(0xCED2)")
cpp_quote("#define MIME_S_SECURITY_NODEFCERT HR_S(0xCED3)")
cpp_quote("#define MIME_E_SECURITY_BADSIGNATURE HR_E(0xCEE0)")
cpp_quote("#define MIME_E_SECURITY_MULTSIGNERS HR_E(0xCEE1)")
cpp_quote("#define MIME_E_SECURITY_NOSIGNINGCERT HR_E(0xCEE2)")
cpp_quote("#define MIME_E_SECURITY_CANTDECRYPT HR_E(0xCEF0)")
cpp_quote("#define MIME_E_SECURITY_ENCRYPTNOSENDERCERT HR_E(0xCEF1)")
cpp_quote("#define MIME_S_SECURITY_NOSENDERCERT HR_S(0xCEF2)")
cpp_quote("#define MIME_E_SECURITY_LABELACCESSDENIED HR_E(0xCEF3)")
cpp_quote("#define MIME_E_SECURITY_LABELACCESSCANCELLED HR_E(0xCEF4)")
cpp_quote("#define MIME_E_SECURITY_LABELCORRUPT HR_E(0xCEF5)")
cpp_quote("#define MIME_E_SECURITY_UIREQUIRED HR_E(0xCEF6)")
cpp_quote("#define MIME_E_SECURITY_RECEIPT_NOMATCHINGRECEIPTBODY HR_E(0xCEF7)")
cpp_quote("#define MIME_E_SECURITY_RECEIPT_MSGHASHMISMATCH HR_E(0xCEF8)")
cpp_quote("#define MIME_E_SECURITY_RECEIPT_CANTDECODE HR_E(0xCEF9)")
cpp_quote("#define MIME_E_SECURITY_RECEIPT_CANTFINDSENTITEM HR_E(0xCEFA)")
cpp_quote("#define MIME_E_SECURITY_RECEIPT_CANTFINDORGMSG HR_E(0xCEFB)")
cpp_quote("#define MIME_E_SECURITY_LABELUIREQUIRED HR_E(0xCEFC)")
cpp_quote("#define MIME_S_RECEIPT_FROMMYSELF HR_S(0xCEFC)")
cpp_quote("#define MIME_E_SECURITY_NOTIMPLEMENTED HR_E(0xCEFD)")
cpp_quote("")
cpp_quote("#if (_WIN32_OE >= 0x0500)")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIMEEDIT Failure Return Values")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MIMEEDIT_E_UNEXPECTED HR_E(0x1700)")
cpp_quote("#define MIMEEDIT_E_DODEFAULT HR_E(0x1701)")
cpp_quote("#define MIMEEDIT_E_LOADLIBRARYFAILURE HR_E(0x1702)")
cpp_quote("#define MIMEEDIT_E_USERCANCEL HR_E(0x1703)")
cpp_quote("#define MIMEEDIT_E_CHARSETNOTFOUND HR_E(0x1704)")
cpp_quote("#define MIMEEDIT_E_ILLEGALBODYFORMAT HR_E(0x1705)")
cpp_quote("#define MIMEEDIT_E_CANNOTSAVEUNTILPARSECOMPLETE HR_E(0x1706)")
cpp_quote("#define MIMEEDIT_E_CANNOTSAVEWHILESOURCEEDITING HR_E(0x1707)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIMEEDIT Success Return Values")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MIMEEDIT_S_OPENFILE HR_S(0x1750)")
cpp_quote("#define MIMEEDIT_S_SAVEFILE HR_S(0x1751)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIMEEDIT Warning Return Values")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MIMEEDIT_W_DOWNLOADNOTCOMPLETE HR_S(0x1760)")
cpp_quote("#define MIMEEDIT_W_BADURLSNOTATTACHED HR_S(0x1761)")
cpp_quote("")
cpp_quote("#endif //_WIN32_OE")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// String Definition Macros")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#ifdef __cplusplus")
cpp_quote("#define EXTERN_C extern \"C\"")
cpp_quote("#else")
cpp_quote("#define EXTERN_C extern")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef STRCONSTA")
cpp_quote("#ifdef DEFINE_STRCONST")
cpp_quote("#define STRCONSTA(x,y) EXTERN_C const char x[] = y")
cpp_quote("#define STRCONSTW(x,y) EXTERN_C const WCHAR x[] = L##y")
cpp_quote("#else")
cpp_quote("#define STRCONSTA(x,y) EXTERN_C const char x[]")
cpp_quote("#define STRCONSTW(x,y) EXTERN_C const WCHAR x[]")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// rfc822 Headers")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_HDR_FROM, \"From\");")
cpp_quote("STRCONSTA(STR_HDR_TO, \"To\");")
cpp_quote("STRCONSTA(STR_HDR_CC, \"Cc\");")
cpp_quote("STRCONSTA(STR_HDR_BCC, \"Bcc\");")
cpp_quote("STRCONSTA(STR_HDR_SENDER, \"Sender\");")
cpp_quote("STRCONSTA(STR_HDR_REPLYTO, \"Reply-To\");")
cpp_quote("STRCONSTA(STR_HDR_RETURNPATH, \"Return-Path\");")
cpp_quote("STRCONSTA(STR_HDR_RR, \"Rr\");")
cpp_quote("STRCONSTA(STR_HDR_RETRCPTTO, \"Return-Receipt-To\");")
cpp_quote("STRCONSTA(STR_HDR_APPARTO, \"Apparently-To\");")
cpp_quote("STRCONSTA(STR_HDR_DATE, \"Date\");")
cpp_quote("STRCONSTA(STR_HDR_RECEIVED, \"Received\");")
cpp_quote("STRCONSTA(STR_HDR_MESSAGEID, \"Message-ID\");")
cpp_quote("STRCONSTA(STR_HDR_XMAILER, \"X-Mailer\");")
cpp_quote("STRCONSTA(STR_HDR_ENCODING, \"Encoding\");")
cpp_quote("STRCONSTA(STR_HDR_ENCRYPTED, \"Encrypted\");")
cpp_quote("STRCONSTA(STR_HDR_COMMENT, \"Comment\");")
cpp_quote("STRCONSTA(STR_HDR_SUBJECT, \"Subject\");")
cpp_quote("STRCONSTA(STR_HDR_MIMEVER, \"MIME-Version\");")
cpp_quote("STRCONSTA(STR_HDR_CNTTYPE, \"Content-Type\");")
cpp_quote("STRCONSTA(STR_HDR_CNTXFER, \"Content-Transfer-Encoding\");")
cpp_quote("STRCONSTA(STR_HDR_CNTID, \"Content-ID\");")
cpp_quote("STRCONSTA(STR_HDR_CNTDESC, \"Content-Description\");")
cpp_quote("STRCONSTA(STR_HDR_CNTDISP, \"Content-Disposition\");")
cpp_quote("STRCONSTA(STR_HDR_CNTBASE, \"Content-Base\");")
cpp_quote("STRCONSTA(STR_HDR_CNTLOC, \"Content-Location\");")
cpp_quote("STRCONSTA(STR_HDR_NEWSGROUPS, \"Newsgroups\");")
cpp_quote("STRCONSTA(STR_HDR_PATH, \"Path\");")
cpp_quote("STRCONSTA(STR_HDR_FOLLOWUPTO, \"Followup-To\");")
cpp_quote("STRCONSTA(STR_HDR_EXPIRES, \"Expires\");")
cpp_quote("STRCONSTA(STR_HDR_REFS, \"References\");")
cpp_quote("STRCONSTA(STR_HDR_CONTROL, \"Control\");")
cpp_quote("STRCONSTA(STR_HDR_DISTRIB, \"Distribution\");")
cpp_quote("STRCONSTA(STR_HDR_KEYWORDS, \"Keywords\");")
cpp_quote("STRCONSTA(STR_HDR_SUMMARY, \"Summary\");")
cpp_quote("STRCONSTA(STR_HDR_APPROVED, \"Approved\");")
cpp_quote("STRCONSTA(STR_HDR_LINES, \"Lines\");")
cpp_quote("STRCONSTA(STR_HDR_XREF, \"Xref\");")
cpp_quote("STRCONSTA(STR_HDR_ORG, \"Organization\");")
cpp_quote("STRCONSTA(STR_HDR_XNEWSRDR, \"X-Newsreader\");")
cpp_quote("STRCONSTA(STR_HDR_XPRI, \"X-Priority\");")
cpp_quote("STRCONSTA(STR_HDR_XMSPRI, \"X-MSMail-Priority\");")
cpp_quote("STRCONSTA(STR_HDR_OFFSETS, \"X-Offsets\");")
cpp_quote("STRCONSTA(STR_HDR_XUNSENT, \"X-Unsent\");")
cpp_quote("STRCONSTA(STR_HDR_ARTICLEID, \"X-ArticleId\");")
cpp_quote("STRCONSTA(STR_HDR_NEWSGROUP, \"X-Newsgroup\");")
cpp_quote("STRCONSTA(STR_HDR_XVOICEMAIL, \"X-VoiceMail\");")
cpp_quote("STRCONSTA(STR_HDR_XMSOESREC, \"X-MSOESRec\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Parameters Available through IMimePropertySet/IMimeBody")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_PAR_CHARSET, \"par:content-type:charset\");")
cpp_quote("STRCONSTA(STR_PAR_NUMBER, \"par:content-type:number\");")
cpp_quote("STRCONSTA(STR_PAR_TOTAL, \"par:content-type:total\");")
cpp_quote("STRCONSTA(STR_PAR_ID, \"par:content-type:id\");")
cpp_quote("STRCONSTA(STR_PAR_BOUNDARY, \"par:content-type:boundary\");")
cpp_quote("STRCONSTA(STR_PAR_NAME, \"par:content-type:name\");")
cpp_quote("STRCONSTA(STR_PAR_PROTOCOL, \"par:content-type:protocol\");")
cpp_quote("STRCONSTA(STR_PAR_MICALG, \"par:content-type:micalg\");")
cpp_quote("STRCONSTA(STR_PAR_FILENAME, \"par:content-disposition:filename\");")
cpp_quote("STRCONSTA(STR_PAR_TYPE, \"par:content-type:type\");")
cpp_quote("STRCONSTA(STR_PAR_START, \"par:content-type:start\");")
cpp_quote("#if (_WIN32_OE >= 0x0500)")
cpp_quote("STRCONSTA(STR_PAR_ACCESSTYPE, \"par:content-type:access-type\");")
cpp_quote("STRCONSTA(STR_PAR_XURL, \"par:content-type:X-URL\");")
cpp_quote("STRCONSTA(STR_PAR_SIZE, \"par:content-type:size\");")
cpp_quote("STRCONSTA(STR_PAR_SMIMETYPE, \"par:content-type:smime-type\");")
cpp_quote("STRCONSTA(STR_PAR_REPORTTYPE, \"par:Content-Type:report-type\");")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Attributes Available through IMimePropertySet/IMimeBody")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_ATT_FILENAME, \"att:filename\");")
cpp_quote("STRCONSTA(STR_ATT_GENFNAME, \"att:generated-filename\");")
cpp_quote("STRCONSTA(STR_ATT_PRITYPE, \"att:pri-content-type\");")
cpp_quote("STRCONSTA(STR_ATT_SUBTYPE, \"att:sub-content-type\");")
cpp_quote("STRCONSTA(STR_ATT_NORMSUBJ, \"att:normalized-subject\");")
cpp_quote("STRCONSTA(STR_ATT_ILLEGAL, \"att:illegal-lines\");")
cpp_quote("STRCONSTA(STR_ATT_RENDERED, \"att:rendered\"); // VT_UI4 - TRUE or FALSE")
cpp_quote("STRCONSTA(STR_ATT_AUTOINLINED, \"att:auto-inlined\"); // VT_UI4 - TRUE or FALSE")
cpp_quote("STRCONSTA(STR_ATT_SENTTIME, \"att:sent-time\");")
cpp_quote("STRCONSTA(STR_ATT_RECVTIME, \"att:received-time\");")
cpp_quote("STRCONSTA(STR_ATT_PRIORITY, \"att:priority\");")
cpp_quote("STRCONSTA(STR_ATT_SERVER, \"att:athena-server\"); // VT_LPSTR")
cpp_quote("#ifdef OE5_BETA2")
cpp_quote("STRCONSTA(STR_ATT_ACCOUNTNAME, \"att:athena-account-name\"); // VT_LPSTR")
cpp_quote("#else")
cpp_quote("STRCONSTA(STR_ATT_ACCOUNT, \"att:athena-account\"); // VT_LPSTR")
cpp_quote("#endif")
cpp_quote("STRCONSTA(STR_ATT_UIDL, \"att:athena-pop3-uidl\"); // VT_LPSTR")
cpp_quote("STRCONSTA(STR_ATT_STOREMSGID, \"att:athena-store-msgid\"); // VT_UI4")
cpp_quote("STRCONSTA(STR_ATT_USERNAME, \"att:athena-user-name\"); // VT_LPSTR")
cpp_quote("STRCONSTA(STR_ATT_FORWARDTO, \"att:athena-forward-to\"); // VT_LPSTR")
cpp_quote("STRCONSTA(STR_ATT_STOREFOLDERID, \"att:athena-store-fdrid\"); // VT_UI4")
cpp_quote("STRCONSTA(STR_ATT_GHOSTED, \"att:athena-ghosted\"); // VT_I4")
cpp_quote("STRCONSTA(STR_ATT_UNCACHEDSIZE, \"att:athena-uncachedsize\"); // VT_UI4")
cpp_quote("STRCONSTA(STR_ATT_COMBINED, \"att:athena-combined\"); // VT_UI4")
cpp_quote("#ifdef OE5_BETA2")
cpp_quote("STRCONSTA(STR_ATT_ACCOUNTID, \"att:athena-account-id\"); // VT_LPSTR")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIME Content Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_MIME_TEXT_PLAIN, \"text/plain\");")
cpp_quote("STRCONSTA(STR_MIME_TEXT_HTML, \"text/html\");")
cpp_quote("STRCONSTA(STR_MIME_APPL_STREAM, \"application/octet-stream\");")
cpp_quote("STRCONSTA(STR_MIME_MPART_MIXED, \"multipart/mixed\");")
cpp_quote("STRCONSTA(STR_MIME_MPART_ALT, \"multipart/alternative\");")
cpp_quote("STRCONSTA(STR_MIME_MPART_RELATED, \"multipart/related\");")
cpp_quote("STRCONSTA(STR_MIME_MSG_PART, \"message/partial\");")
cpp_quote("STRCONSTA(STR_MIME_MSG_RFC822, \"message/rfc822\");")
cpp_quote("STRCONSTA(STR_MIME_APPLY_MSTNEF, \"application/ms-tnef\");")
cpp_quote("STRCONSTA(STR_MIME_APPL_PKCS7SIG, \"application/x-pkcs7-signature\");")
cpp_quote("STRCONSTA(STR_MIME_APPL_PKCS7SIG_1, \"application/pkcs7-signature\");")
cpp_quote("STRCONSTA(STR_MIME_TEXT_ENRCICHED, \"text/enriched\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIME Primary Content Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_CNT_TEXT, \"text\");")
cpp_quote("STRCONSTA(STR_CNT_MULTIPART, \"multipart\");")
cpp_quote("STRCONSTA(STR_CNT_MESSAGE, \"message\");")
cpp_quote("STRCONSTA(STR_CNT_IMAGE, \"image\");")
cpp_quote("STRCONSTA(STR_CNT_AUDIO, \"audio\");")
cpp_quote("STRCONSTA(STR_CNT_VIDEO, \"video\");")
cpp_quote("STRCONSTA(STR_CNT_APPLICATION, \"application\");")
cpp_quote("STRCONSTW(STR_CNT_APPLICATIONW, \"application\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIME Secondary Content Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_SUB_PLAIN, \"plain\");")
cpp_quote("STRCONSTA(STR_SUB_HTML, \"html\");")
cpp_quote("STRCONSTA(STR_SUB_ENRICHED, \"enriched\");")
cpp_quote("STRCONSTA(STR_SUB_RTF, \"ms-rtf\");")
cpp_quote("STRCONSTA(STR_SUB_MIXED, \"mixed\");")
cpp_quote("STRCONSTA(STR_SUB_PARALLEL, \"parallel\");")
cpp_quote("STRCONSTA(STR_SUB_DIGEST, \"digest\");")
cpp_quote("STRCONSTA(STR_SUB_RELATED, \"related\");")
cpp_quote("STRCONSTA(STR_SUB_ALTERNATIVE, \"alternative\");")
cpp_quote("STRCONSTA(STR_SUB_RFC822, \"rfc822\");")
cpp_quote("STRCONSTA(STR_SUB_PARTIAL, \"partial\");")
cpp_quote("STRCONSTA(STR_SUB_EXTERNAL, \"external-body\");")
cpp_quote("STRCONSTA(STR_SUB_OCTETSTREAM, \"octet-stream\");")
cpp_quote("STRCONSTW(STR_SUB_OCTETSTREAMW, \"octet-stream\");")
cpp_quote("STRCONSTA(STR_SUB_POSTSCRIPT, \"postscript\");")
cpp_quote("STRCONSTA(STR_SUB_GIF, \"gif\");")
cpp_quote("STRCONSTA(STR_SUB_JPEG, \"jpeg\");")
cpp_quote("STRCONSTA(STR_SUB_BASIC, \"basic\");")
cpp_quote("STRCONSTA(STR_SUB_MPEG, \"mpeg\");")
cpp_quote("STRCONSTA(STR_SUB_MSTNEF, \"ms-tnef\");")
cpp_quote("STRCONSTA(STR_SUB_MSWORD, \"msword\");")
cpp_quote("STRCONSTA(STR_SUB_WAV, \"wav\");")
cpp_quote("STRCONSTA(STR_SUB_PKCS7MIME, \"pkcs7-mime\"); // non-standard")
cpp_quote("STRCONSTA(STR_SUB_PKCS7SIG, \"pkcs7-signature\"); // non-standard")
cpp_quote("STRCONSTA(STR_SUB_XPKCS7MIME, \"x-pkcs7-mime\");")
cpp_quote("STRCONSTA(STR_SUB_XPKCS7SIG, \"x-pkcs7-signature\");")
cpp_quote("STRCONSTA(STR_SUB_SIGNED, \"signed\");")
cpp_quote("STRCONSTA(STR_SUB_BINHEX, \"mac-binhex40\");")
cpp_quote("STRCONSTA(STR_SUB_VCARD, \"x-vcard\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIME Content-Transfer-Encoding Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_ENC_7BIT, \"7bit\");")
cpp_quote("STRCONSTA(STR_ENC_QP, \"quoted-printable\");")
cpp_quote("STRCONSTA(STR_ENC_BASE64, \"base64\");")
cpp_quote("STRCONSTA(STR_ENC_8BIT, \"8bit\");")
cpp_quote("STRCONSTA(STR_ENC_BINARY, \"binary\");")
cpp_quote("STRCONSTA(STR_ENC_UUENCODE, \"uuencode\");")
cpp_quote("STRCONSTA(STR_ENC_XUUENCODE, \"x-uuencode\");")
cpp_quote("STRCONSTA(STR_ENC_XUUE, \"x-uue\");")
cpp_quote("STRCONSTA(STR_ENC_BINHEX40, \"mac-binhex40\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIME Content-Disposition Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_DIS_INLINE, \"inline\");")
cpp_quote("STRCONSTA(STR_DIS_ATTACHMENT, \"attachment\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MIME Protocol Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_PRO_SHA1, \"sha1\");")
cpp_quote("STRCONSTA(STR_PRO_MD5, \"rsa-md5\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Known Priority Strings")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_PRI_MS_HIGH, \"High\");")
cpp_quote("STRCONSTA(STR_PRI_MS_NORMAL, \"Normal\");")
cpp_quote("STRCONSTA(STR_PRI_MS_LOW, \"Low\");")
cpp_quote("STRCONSTA(STR_PRI_HIGH, \"1\");")
cpp_quote("STRCONSTA(STR_PRI_NORMAL, \"3\");")
cpp_quote("STRCONSTA(STR_PRI_LOW, \"5\");")
cpp_quote("STRCONSTA(STR_HDR_ORIG_RECIPIENT, \"Original-Recipient\");")
cpp_quote("STRCONSTA(STR_HDR_DISP_NOTIFICATION_TO, \"Disposition-Notification-To\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// IMimeMessage IDataObject clipboard formats (also include CF_TEXT)")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_CF_HTML, \"Microsoft Outlook Express HTML Format\");")
cpp_quote("STRCONSTA(STR_CF_INETMSG, \"Internet Message (rfc822/rfc1522)\");")
cpp_quote("STRCONSTA(STR_CF_RFC822, \"message/rfc822\");")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// SMime-Type strings")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("STRCONSTA(STR_SMT_SIGNEDDATA, \"signed-data\"); ")
cpp_quote("STRCONSTA(STR_SMT_ENVELOPEDDATA, \"enveloped-data\"); ")
cpp_quote("STRCONSTA(STR_SMT_SIGNEDRECEIPT, \"signed-receipt\"); ")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// PIDSTRING - Use in GetProp, SetProp, QueryProp, DeleteProp")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define PID_BASE 2")
cpp_quote("#define PIDTOSTR(_dwPropId) ((LPCSTR)((DWORD_PTR)(_dwPropId)))")
cpp_quote("#define STRTOPID(_pszName) ((DWORD)((DWORD_PTR)((LPCSTR)(_pszName))))")
cpp_quote("#define ISPIDSTR(_pszName) ((HIWORD((DWORD_PTR)(_pszName)) == 0))")
cpp_quote("#define ISKNOWNPID(_dwPropId) (_dwPropId >= PID_BASE && _dwPropId < PID_LAST)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Mime Property Ids")
cpp_quote("// --------------------------------------------------------------------------------")
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_RETRCPTTO = 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_CONTROL = 30,")
cpp_quote(" PID_HDR_DISTRIB = 31,")
cpp_quote(" PID_HDR_KEYWORDS = 32,")
cpp_quote(" PID_HDR_SUMMARY = 33,")
cpp_quote(" PID_HDR_APPROVED = 34,")
cpp_quote(" PID_HDR_LINES = 35,")
cpp_quote(" PID_HDR_XREF = 36,")
cpp_quote(" PID_HDR_ORG = 37,")
cpp_quote(" PID_HDR_XNEWSRDR = 38,")
cpp_quote(" PID_HDR_XPRI = 39,")
cpp_quote(" PID_HDR_XMSPRI = 40,")
cpp_quote(" PID_PAR_FILENAME = 41,")
cpp_quote(" PID_PAR_BOUNDARY = 42,")
cpp_quote(" PID_PAR_CHARSET = 43,")
cpp_quote(" PID_PAR_NAME = 44,")
cpp_quote(" PID_ATT_FILENAME = 45,")
cpp_quote(" PID_ATT_GENFNAME = 46,")
cpp_quote(" PID_ATT_PRITYPE = 47,")
cpp_quote(" PID_ATT_SUBTYPE = 48,")
cpp_quote(" PID_ATT_NORMSUBJ = 49,")
cpp_quote(" PID_ATT_ILLEGAL = 50,")
cpp_quote(" PID_ATT_RENDERED = 51,")
cpp_quote(" PID_ATT_SENTTIME = 52,")
cpp_quote(" PID_ATT_RECVTIME = 53,")
cpp_quote(" PID_ATT_PRIORITY = 54,")
cpp_quote(" PID_HDR_COMMENT = 55,")
cpp_quote(" PID_HDR_ENCODING = 56,")
cpp_quote(" PID_HDR_ENCRYPTED = 57,")
cpp_quote(" PID_HDR_OFFSETS = 58,")
cpp_quote(" PID_HDR_XUNSENT = 59,")
cpp_quote(" PID_HDR_ARTICLEID = 60,")
cpp_quote(" PID_HDR_SENDER = 61,")
cpp_quote(" PID_ATT_SERVER = 62,")
cpp_quote("#ifdef OE5_BETA2")
cpp_quote(" PID_ATT_ACCOUNTID = 63,")
cpp_quote("#else")
cpp_quote(" PID_ATT_ACCOUNT = 63,")
cpp_quote("#endif")
cpp_quote(" PID_ATT_UIDL = 64,")
cpp_quote(" PID_ATT_STOREMSGID = 65,")
cpp_quote(" PID_ATT_USERNAME = 66,")
cpp_quote(" PID_ATT_FORWARDTO = 67,")
cpp_quote(" PID_ATT_STOREFOLDERID = 68,")
cpp_quote(" PID_ATT_GHOSTED = 69,")
cpp_quote(" PID_ATT_UNCACHEDSIZE = 70,")
cpp_quote(" PID_ATT_COMBINED = 71,")
cpp_quote(" PID_ATT_AUTOINLINED = 72,")
cpp_quote(" PID_HDR_DISP_NOTIFICATION_TO = 73,")
cpp_quote(" PID_LAST = 74")
cpp_quote("} MIMEPROPID;")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Variant Typed Identifiers")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define TYPEDID_MASK ((ULONG)0x0000FFFF)")
cpp_quote("#define TYPEDID_TYPE(_typedid) (VARTYPE)(((ULONG)(_typedid)) & TYPEDID_MASK)")
cpp_quote("#define TYPEDID_ID(_typedid) (((ULONG)(_typedid))>>16)")
cpp_quote("#define TYPEDID(_vartype,_id) ((((TYPEDID)(_id))<<16)|((ULONG)(_vartype)))")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Options Ids")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define OID_ALLOW_8BIT_HEADER TYPEDID(VT_BOOL, 0x0001) // TRUE or FALSE")
cpp_quote("#define OID_CBMAX_HEADER_LINE TYPEDID(VT_UI4, 0x0002) // Bytes")
cpp_quote("#define OID_SAVE_FORMAT TYPEDID(VT_UI4, 0x0003) // SAVE_RFC822 or SAVE_RFC1521 (mime)")
cpp_quote("#define OID_WRAP_BODY_TEXT TYPEDID(VT_BOOL, 0x0004) // TRUE or FALSE")
cpp_quote("#define OID_CBMAX_BODY_LINE TYPEDID(VT_UI4, 0x0005) // Bytes")
cpp_quote("#define OID_TRANSMIT_BODY_ENCODING TYPEDID(VT_UI4, 0x0006) // ENCODINGTYPE")
cpp_quote("#define OID_TRANSMIT_TEXT_ENCODING TYPEDID(VT_UI4, 0x0007) // ENCODINGTYPE, IMimeMessageTree")
cpp_quote("#define OID_GENERATE_MESSAGE_ID TYPEDID(VT_BOOL, 0x0008) // TRUE or FALSE")
cpp_quote("#define OID_HIDE_TNEF_ATTACHMENTS TYPEDID(VT_BOOL, 0X000E) // TRUE or FALSE")
cpp_quote("#define OID_CLEANUP_TREE_ON_SAVE TYPEDID(VT_BOOL, 0X000F) // TRUE or FALSE")
cpp_quote("#define OID_BODY_REMOVE_NBSP TYPEDID(VT_BOOL, 0x0014) // TRUE or FALSE")
cpp_quote("#define OID_DEFAULT_BODY_CHARSET TYPEDID(VT_UI4, 0x0015) // HCHARSET")
cpp_quote("#define OID_DEFAULT_HEADER_CHARSET TYPEDID(VT_UI4, 0x0016) // HCHARSET")
cpp_quote("#define OID_DBCS_ESCAPE_IS_8BIT TYPEDID(VT_BOOL, 0x0017) // TRUE or FALSE")
cpp_quote("#define OID_SECURITY_TYPE TYPEDID(VT_UI4, 0x0018)")
cpp_quote("#define OID_SECURITY_ALG_HASH TYPEDID(VT_BLOB, 0x0019)")
cpp_quote("#define OID_SECURITY_ALG_BULK TYPEDID(VT_BLOB, 0x0020)")
cpp_quote("#ifndef _WIN64")
cpp_quote("#define OID_SECURITY_CERT_SIGNING TYPEDID(VT_UI4, 0x0021)")
cpp_quote("#define OID_SECURITY_CERT_DECRYPTION TYPEDID(VT_UI4, 0x0022)")
cpp_quote("#define OID_SECURITY_RG_CERT_ENCRYPT TYPEDID(VT_VECTOR | VT_UI4, 0x0023)")
cpp_quote("#define OID_SECURITY_HCERTSTORE TYPEDID(VT_UI4, 0x0024)")
cpp_quote("#define OID_SECURITY_RG_CERT_BAG TYPEDID(VT_VECTOR | VT_UI4, 0x0025)")
cpp_quote("#define OID_SECURITY_HCRYPTPROV TYPEDID(VT_UI4, 0x002F)")
cpp_quote("#define OID_SECURITY_SEARCHSTORES TYPEDID(VT_VECTOR | VT_UI4, 0x0027)")
cpp_quote("#define OID_SECURITY_RG_IASN TYPEDID(VT_VECTOR | VT_UI4, 0x0028)")
cpp_quote("#else // _WIN64")
cpp_quote("#define OID_SECURITY_CERT_SIGNING_64 TYPEDID(VT_UI8, 0x0021)")
cpp_quote("#define OID_SECURITY_CERT_DECRYPTION_64 TYPEDID(VT_UI8, 0x0022)")
cpp_quote("#define OID_SECURITY_RG_CERT_ENCRYPT_64 TYPEDID(VT_VECTOR | VT_UI8, 0x0023)")
cpp_quote("#define OID_SECURITY_HCERTSTORE_64 TYPEDID(VT_UI8, 0x0024)")
cpp_quote("#define OID_SECURITY_RG_CERT_BAG_64 TYPEDID(VT_VECTOR | VT_UI8, 0x0025)")
cpp_quote("#define OID_SECURITY_HCRYPTPROV_64 TYPEDID(VT_UI8, 0x002F)")
cpp_quote("#define OID_SECURITY_SEARCHSTORES_64 TYPEDID(VT_VECTOR | VT_UI4, 0x0027)")
cpp_quote("#define OID_SECURITY_RG_IASN_64 TYPEDID(VT_VECTOR | VT_UI4, 0x0028)")
cpp_quote("#endif")
cpp_quote("#define OID_SECURITY_CRL TYPEDID(VT_BLOB, 0x0026)")
cpp_quote("#define OID_SECURITY_SEARCHSTORES TYPEDID(VT_VECTOR | VT_UI4, 0x0027)")
cpp_quote("#define OID_SECURITY_RG_IASN TYPEDID(VT_VECTOR | VT_UI4, 0x0028)")
cpp_quote("#define OID_SECURITY_SYMCAPS TYPEDID(VT_BLOB, 0x0029)")
cpp_quote("#define OID_SECURITY_AUTHATTR TYPEDID(VT_BLOB, 0x002A)")
cpp_quote("#define OID_SECURITY_UNAUTHATTR TYPEDID(VT_BLOB, 0x002B)")
cpp_quote("#define OID_SECURITY_SIGNTIME TYPEDID(VT_FILETIME,0x002C)")
cpp_quote("#define OID_SECURITY_USER_VALIDITY TYPEDID(VT_UI4, 0x002D)")
cpp_quote("#define OID_SECURITY_RO_MSG_VALIDITY TYPEDID(VT_UI4, 0x002E) // read-only")
cpp_quote("#define OID_SECURITY_ENCODE_FLAGS TYPEDID(VT_UI4, 0x0030)")
cpp_quote("#define OID_SECURITY_CERT_INCLUDED TYPEDID(VT_BOOL, 0x0031) // read-only")
cpp_quote("#ifndef _WIN64")
cpp_quote("#define OID_SECURITY_HWND_OWNER TYPEDID(VT_UI4, 0x0032)")
cpp_quote("#endif")
cpp_quote("#define OID_SECURITY_REQUESTED_CTE TYPEDID(VT_I4, 0x0033)")
cpp_quote("#define OID_NO_DEFAULT_CNTTYPE TYPEDID(VT_BOOL, 0x0034)")
cpp_quote("#define OID_XMIT_PLAIN_TEXT_ENCODING TYPEDID(VT_UI4, 0x0035) // ENCODINGTYPE, IMimeMessageTree")
cpp_quote("#define OID_XMIT_HTML_TEXT_ENCODING TYPEDID(VT_UI4, 0x0036) // ENCODINGTYPE, IMimeMessageTree")
cpp_quote("#define OID_HEADER_RELOAD_TYPE TYPEDID(VT_UI4, 0x0037) // RELOADTYPE IMimeMessageTree or IMimeBody or IMimePropertySet")
cpp_quote("#define OID_CAN_INLINE_TEXT_BODIES TYPEDID(VT_BOOL, 0x0038) // TRUE or FALSE")
cpp_quote("#define OID_SHOW_MACBINARY TYPEDID(VT_BOOL, 0x0039) // TRUE or FALSE")
cpp_quote("#define OID_SAVEBODY_KEEPBOUNDARY TYPEDID(VT_BOOL, 0x0040) // TRUE or FALSE")
// Version 5 Options
cpp_quote("#if (_WIN32_OE >= 0x0500)")
// Old OIDs with new multiple value extensions
cpp_quote("#define OID_SECURITY_ALG_HASH_RG TYPEDID(VT_VECTOR | VT_VARIANT, 0x0019)")
cpp_quote("#ifdef _WIN64")
cpp_quote("#define OID_SECURITY_CERT_SIGNING_RG_64 TYPEDID(VT_VECTOR | VT_UI8, 0x0058)")
cpp_quote("#else //_WIN64")
cpp_quote("#define OID_SECURITY_CERT_SIGNING_RG TYPEDID(VT_VECTOR | VT_UI4, 0x0021)")
cpp_quote("#endif")
cpp_quote("#define OID_SECURITY_SYMCAPS_RG TYPEDID(VT_VECTOR | VT_VARIANT, 0x0029)")
cpp_quote("#define OID_SECURITY_AUTHATTR_RG TYPEDID(VT_VECTOR | VT_VARIANT, 0x002A)")
cpp_quote("#define OID_SECURITY_UNAUTHATTR_RG TYPEDID(VT_VECTOR | VT_VARIANT, 0x002B)")
cpp_quote("#define OID_SECURITY_SIGNTIME_RG TYPEDID(VT_VECTOR | VT_FILETIME, 0x002C)")
cpp_quote("#define OID_SECURITY_USER_VALIDITY_RG TYPEDID(VT_VECTOR | VT_UI4, 0x002D)")
cpp_quote("#define OID_SECURITY_RO_MSG_VALIDITY_RG TYPEDID(VT_VECTOR | VT_UI4, 0x002E) // read-only")
// New OIDs
cpp_quote("#define OID_SUPPORT_EXTERNAL_BODY TYPEDID(VT_BOOL, 0x0041) // TRUE or FALSE")
cpp_quote("#define OID_LOAD_USE_BIND_FILE TYPEDID(VT_BOOL, 0x0042) // TRUE or FALSE")
cpp_quote("#define OID_SECURITY_SIGNATURE_COUNT TYPEDID(VT_UI4, 0x0043) // Size of SECURITY LAYER arrays")
cpp_quote("#define OID_HANDSOFF_ONSAVE TYPEDID(VT_BOOL, 0x0044) // TRUE or FALSE")
cpp_quote("#define OID_SECURITY_RECEIPT_RG TYPEDID(VT_VECTOR | VT_VARIANT, 0x0045) // Receipt body")
cpp_quote("#define OID_NOSECURITY_ONSAVE TYPEDID(VT_BOOL, 0x0046) // TRUE or FALSE")
cpp_quote("#define OID_DECODE_RFC1154 TYPEDID(VT_BOOL, 0x0047) // TRUE or FALSE")
cpp_quote("#define OID_SECURITY_MESSAGE_HASH_RG TYPEDID(VT_VECTOR | VT_VARIANT, 0x004A) // Message Hash")
cpp_quote("#define OID_SECURITY_KEY_PROMPT TYPEDID(VT_LPWSTR, 0x004B) // Key Prompt")
cpp_quote("#ifndef _WIN64")
cpp_quote("#define OID_SECURITY_ENCRYPT_CERT_BAG TYPEDID(VT_UI4, 0x004C) // HCERTSTORE")
cpp_quote("#else //_WIN64")
cpp_quote("#define OID_SECURITY_ENCRYPT_CERT_BAG_64 TYPEDID(VT_UI8, 0x004C) // HCERTSTORE")
cpp_quote("#endif // WIN64")
cpp_quote("#endif")
// Version 5.01 Options
// cpp_quote("#if (_WIN32_OE >= 0x0501)")
cpp_quote("#ifdef _WIN64")
cpp_quote("#define OID_SECURITY_HWND_OWNER_64 TYPEDID(VT_UI8, 0x0057)")
cpp_quote("#endif // WIN64")
// 2Key implementation
cpp_quote("#ifndef _WIN64")
cpp_quote("#define OID_SECURITY_2KEY_CERT_BAG TYPEDID(VT_VECTOR | VT_UI4, 0x0059)")
cpp_quote("#else //_WIN64")
cpp_quote("#define OID_SECURITY_2KEY_CERT_BAG_64 TYPEDID(VT_VECTOR | VT_UI8, 0x0059)")
cpp_quote("#endif // WIN64")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Default Option Values")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define DEF_ALLOW_8BIT_HEADER FALSE")
cpp_quote("#define DEF_CBMAX_HEADER_LINE 1000")
cpp_quote("#define DEF_SAVE_FORMAT SAVE_RFC1521")
cpp_quote("#define DEF_WRAP_BODY_TEXT TRUE")
cpp_quote("#define DEF_CBMAX_BODY_LINE 74")
cpp_quote("#define DEF_GENERATE_MESSAGE_ID FALSE")
cpp_quote("#define DEF_HASH_ALG_ID 0x8004 //SHA //N needed?")
cpp_quote("#define DEF_ENCRYPTION_ALG_ID 0x6602 //RC2 //N needed?")
cpp_quote("#define DEF_INCLUDE_SENDER_CERT FALSE")
cpp_quote("#define DEF_HIDE_TNEF_ATTACHMENTS TRUE")
cpp_quote("#define DEF_CLEANUP_TREE_ON_SAVE TRUE")
cpp_quote("#define DEF_BODY_REMOVE_NBSP TRUE")
cpp_quote("#define DEF_SECURITY_IGNOREMASK 0")
cpp_quote("#define DEF_DBCS_ESCAPE_IS_8BIT FALSE")
cpp_quote("#define DEF_TRANSMIT_BODY_ENCODING IET_UNKNOWN")
cpp_quote("#define DEF_TRANSMIT_TEXT_ENCODING IET_UNKNOWN")
cpp_quote("#define DEF_XMIT_PLAIN_TEXT_ENCODING IET_UNKNOWN")
cpp_quote("#define DEF_XMIT_HTML_TEXT_ENCODING IET_UNKNOWN")
cpp_quote("#define DEF_NO_DEFAULT_CNTTYPE FALSE")
cpp_quote("#define DEF_HEADER_RELOAD_TYPE_TREE RELOAD_HEADER_RESET")
cpp_quote("#define DEF_HEADER_RELOAD_TYPE_PROPSET RELOAD_HEADER_NONE")
cpp_quote("#define DEF_CAN_INLINE_TEXT_BODIES FALSE")
cpp_quote("#define DEF_SHOW_MACBINARY FALSE")
cpp_quote("#define DEF_SAVEBODY_KEEPBOUNDARY FALSE")
// Version 5 Options
cpp_quote("#if (_WIN32_OE >= 0x0500)")
cpp_quote("#define DEF_SUPPORT_EXTERNAL_BODY FALSE")
cpp_quote("#define DEF_LOAD_USE_BIND_FILE FALSE")
cpp_quote("#define DEF_HANDSOFF_ONSAVE FALSE")
cpp_quote("#define DEF_DECODE_RFC1154 FALSE")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Min-Max Option Values")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MAX_CBMAX_HEADER_LINE 0xffffffff")
cpp_quote("#define MIN_CBMAX_HEADER_LINE 76")
cpp_quote("#define MAX_CBMAX_BODY_LINE 0xffffffff")
cpp_quote("#define MIN_CBMAX_BODY_LINE 30")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// LIBID_MIMEOLE")
cpp_quote("// --------------------------------------------------------------------------------")
[
uuid(E4B28371-83B0-11d0-8259-00C04FD85AB4),
helpstring("Microsoft MIMEOLE Type Library 1.0"),
version(1.0)
]
library MIMEOLE
{
importlib("stdole2.tlb");
#ifndef DECLARE_HANDLE
#define DECLARE_HANDLE(name) \
struct name##__ { DWORD unused; }; \
typedef const struct name##__ _far* name
#endif
DECLARE_HANDLE(HCHARSET);
typedef HCHARSET *LPHCHARSET;
DECLARE_HANDLE(HBODY);
typedef HBODY *LPHBODY;
DECLARE_HANDLE(HHEADERROW);
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, // Non-mime - UUENCODE
SAVE_RFC1521 // MIME
} MIMESAVETYPE;
typedef enum tagCSETAPPLYTYPE {
CSET_APPLY_UNTAGGED, // Apply the hCharset to all un-tagged properties or use as default on send
CSET_APPLY_ALL, // Apply the hCharset to all properties, including tagged properties
CSET_APPLY_TAG_ALL // Apply the hCharset to all properties, including tagged properties, and mark things as tagged (IBT_CSETTAGGED)
} CSETAPPLYTYPE;
// -----------------------------------------------------------------------------------
// ENCODINGTYPE | Internet Charset | Internet Encoding | Transmittable
// -----------------------------------------------------------------------------------
// IET_BINARY | No | No | No
// IET_BASE64 | Yes | Yes | Yes
// IET_UUENCODE | Yes | Yes | Yes
// IET_QP | Yes | Yes | Yes
// IET_7BIT | Yes | No (Dot Stuffed) | Yes
// IET_8BIT | Yes | No (Dot Stuffed) | Yes
// -----------------------------------------------------------------------------------
typedef enum tagENCODINGTYPE {
// -1 is reserved for an IMimeSecurity default
IET_BINARY, // decoded (mime, uu, or stripped lead-dots)/windows charset
IET_BASE64, // Base64 encoded/internet charset
IET_UUENCODE, // Uu encoded/internet charset
IET_QP, // Quoted-Printable encoded/internet charset
IET_7BIT, // non-encoded (lead-dots stuffed)/internet charset 7bit data
IET_8BIT, // non-encoded (lead-dots stuffed)/internet charset 8bit data
IET_INETCSET, // Decoded, but in an Internet Character Set
IET_UNICODE, // Decoded in unicode
IET_RFC1522, // Header Encoding
IET_ENCODED, // Used mostly for header properties (combines IET_INETCSET and IET_RFC1522)
IET_CURRENT, // Use the current encoding of the body
IET_UNKNOWN, // The encoding is unknown, can be treated as binary...
IET_BINHEX40, // Apple Macintosh Binhex
IET_LAST // Don't use
} ENCODINGTYPE;
// IET_DECODED means the same as IET_BINARY
const SHORT IET_DECODED = IET_BINARY;
// ---------------------------------------------------------------------------------------
// String Constants
// ---------------------------------------------------------------------------------------
const SHORT CCHMAX_HEADER_LINE = 1000;
// ---------------------------------------------------------------------------------------
// IID_IMimeInternational
// ---------------------------------------------------------------------------------------
[
uuid(C5588349-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeInternational"),
]
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; // Japan auto detect
const CODEPAGEID CP_KAUTODETECT = 50949; // Korean auto detect
const CODEPAGEID CP_ISO2022JPESC = 50221; // codepage for ISO-2022-JP-ESC
const CODEPAGEID CP_ISO2022JPSIO = 50222; // codepage for ISO-2022-JP-SIO
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]; // Character Set name
HCHARSET hCharset; // Handle to this character set
CODEPAGEID cpiWindows; // Windows CodePage
CODEPAGEID cpiInternet; // Internet Code Page
DWORD dwReserved1; // Reserved, don't use
} INETCSETINFO, *LPINETCSETINFO;
typedef enum tagINETLANGMASK {
ILM_FAMILY = 0x00000001, // CODEPAGEINFO::dwFamily is valid
ILM_NAME = 0x00000002, // CODEPAGEINFO::szName is valid
ILM_BODYCSET = 0x00000004, // CODEPAGEINFO::szBodyCset is valid
ILM_HEADERCSET = 0x00000008, // CODEPAGEINFO::szHeadCset is valid
ILM_WEBCSET = 0x00000010, // CODEPAGEINFO::szWebCset is valid
ILM_FIXEDFONT = 0x00000020, // CODEPAGEINFO::szFixedFont is valid
ILM_VARIABLEFONT = 0x00000040 // CODEPAGEINFO::szVariableFont is valid
} INETLANGMASK;
typedef struct tagCODEPAGEINFO {
DWORD dwMask; // Describes which fields are valid (INETLANGMASK)
CODEPAGEID cpiCodePage; // Handle to this charset (code page number / mlangid)
BOOL fIsValidCodePage; // Value of IsValidCodePage(idCodePage)
ULONG ulMaxCharSize; // Maximum width of a character in this codepage
BOOL fInternetCP; // Is this an Internet Code Page
CODEPAGEID cpiFamily; // Windows Code page if fInternetCP == TRUE
CHAR szName[CCHMAX_LANG_NAME]; // Language Name
CHAR szBodyCset[CCHMAX_CSET_NAME]; // Charset to be used for the body
CHAR szHeaderCset[CCHMAX_CSET_NAME]; // Charset to be used for the Header
CHAR szWebCset[CCHMAX_CSET_NAME]; // Charset to be used for the body
CHAR szFixedFont[CCHMAX_FACE_NAME]; // Fixed Width Font Face Name
CHAR szVariableFont[CCHMAX_FACE_NAME];// Variable Width Font Face Name
ENCODINGTYPE ietNewsDefault; // Default news mime encoding (FMT_BASE64 or FMT_QP)
ENCODINGTYPE ietMailDefault; // Default mail mime encoding (FMT_BASE64 or FMT_QP)
DWORD dwReserved1; // Reserved, don't use
} CODEPAGEINFO, *LPCODEPAGEINFO;
typedef struct tagRFC1522INFO {
BOOL fRfc1522Allowed; // Can rfc 1522 be used to encode/decode the header
BOOL fRfc1522Used; // Was rfc 1522 used to encode/decode the header
BOOL fAllow8bit; // Is 8bit allowed in the encoded header...
HCHARSET hRfc1522Cset; // The charset used in the rfc1522 encoded (DecodeHeader only)
} RFC1522INFO, *LPRFC1522INFO;
typedef enum tagCHARSETTYPE {
CHARSET_BODY, // Corresponds to CODEPAGEINFO::szBodyCset
CHARSET_HEADER, // Corresponds to CODEPAGEINFO::szHeaderCset
CHARSET_WEB // Corresponds to CODEPAGEINFO::szWebCset
} 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,
[out] 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);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeSecurity
// ---------------------------------------------------------------------------------------
[
uuid(C5588353-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeSecurity"),
]
interface IMimeSecurity : IUnknown
{
typedef [unique] IMimeSecurity *LPMIMESECURITY;
typedef [unique] const IMimeSecurity *LPCMIMESECURITY;
typedef BLOB THUMBBLOB;
typedef void *HCAPICERTSTORE;
cpp_quote("#ifndef __WINCRYPT_H__")
typedef const void *PCX509CERT;
cpp_quote("typedef void *HCERTSTORE;")
cpp_quote("#else")
cpp_quote("typedef PCCERT_CONTEXT PCX509CERT;")
cpp_quote("#endif")
cpp_quote("#ifndef IMS_ALGIDDEF")
cpp_quote("#define IMS_ALGIDDEF")
cpp_quote("typedef unsigned int ALG_ID;")
cpp_quote("#endif")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("// ITT_* - thumbprint types")
cpp_quote("// -------------------------------------------------------------------")
typedef DWORD ITHUMBPRINTTYPE;
cpp_quote("#define ITT_SIGNING 0x00000001")
cpp_quote("#define ITT_ENCRYPTION 0x00000002")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("// SEF_* - Secure Encoding Flags")
cpp_quote("// must not overlap the EBF flags")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("#define SEF_ENCRYPTWITHNOSENDERCERT 0x00000001")
cpp_quote("#define SEF_SENDERSCERTPROVIDED 0x00000002")
cpp_quote("#define SEF_NOUI 0x00000004")
cpp_quote("#define SEF_MASK 0x0000ffff")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("// EBF_* - Enchanted Broccoli Forest, also Encode Body Flags")
cpp_quote("// must not overlap the SEF flags")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("#define EBF_RECURSE 0x00010000")
cpp_quote("#define EBF_COMMITIFDIRTY 0x00020000")
cpp_quote("#define EBF_MASK 0xffff0000")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("// MSV_* - MIME Security Validity")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("#define MSV_OK 0x00000000")
cpp_quote("#define MSV_BADSIGNATURE 0X00000001")
cpp_quote("#define MSV_UNVERIFIABLE 0X00000002")
cpp_quote("#define MSV_UNKHASH 0X00000004")
cpp_quote("#define MSV_MALFORMEDSIG 0X00000080")
cpp_quote("#define MSV_SIGNATURE_MASK 0X000000ff")
cpp_quote("#define MSV_EXPIRED_SIGNINGCERT 0X00000100")
cpp_quote("#define MSV_SIGNING_MASK 0X00000f00")
cpp_quote("#define MSV_CANTDECRYPT 0X00001000")
cpp_quote("#define MSV_ENC_FOR_EXPIREDCERT 0X00002000")
cpp_quote("#define MSV_ENCRYPT_MASK 0x000ff000")
cpp_quote("#define MSV_INVALID 0X01000000")
cpp_quote("#define MSV_MSG_MASK 0x0f000000")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("// MST_* - MIME Security Type")
cpp_quote("// -------------------------------------------------------------------")
cpp_quote("#define MST_NONE 0x00000000")
cpp_quote("#define MST_THIS_SIGN 0x00000001")
cpp_quote("#define MST_THIS_ENCRYPT 0x00000002")
cpp_quote("#define MST_THIS_BLOBSIGN 0x00000005 // 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_THIS_MASK 0x000000ff")
cpp_quote("#define MST_CHILD_MASK 0x00000f00")
cpp_quote("#define MST_SUBMSG_MASK 0x0000f000")
cpp_quote("#define MST_DESCENDENT_MASK 0x0000ff00 //(MST_CHILD|MST_SUBMSG)")
cpp_quote("#define MST_SIGN_MASK 0x00001101")
cpp_quote("#define MST_ENCRYPT_MASK 0x00002202")
cpp_quote("#define MST_BLOB_FLAG 0x00000004")
cpp_quote("#define MST_TYPE_MASK 0x0000ffff")
cpp_quote("#define MST_RECEIPT_REQUEST 0x00010000")
cpp_quote("#define MST_SUPPRESS_UI 0x00020000")
cpp_quote("#define MST_CLASS_SMIME_V1 0x00000000")
cpp_quote("#define MST_CLASS_PGP 0x01000000")
cpp_quote("#define MST_CLASS_MASK 0xff000000")
// -------------------------------------------------------------------
// CERTSTATE
// -------------------------------------------------------------------
typedef enum tagCERTSTATE {
CERTIFICATE_OK, // Only non-error state
CERTIFICATE_NOT_PRESENT,
CERTIFICATE_EXPIRED, // Specific
CERTIFICATE_CHAIN_TOO_LONG, // |
CERTIFICATE_MISSING_ISSUER, // v
CERTIFICATE_CRL_LISTED, // General
CERTIFICATE_NOT_TRUSTED, // (Be as specific as possible)
CERTIFICATE_INVALID,
CERTIFICATE_ERROR, // Last resort
CERTIFICATE_NOPRINT, // no thumbprint provided
CERTIFICATE_UNKNOWN // Default
} CERTSTATE;
// -------------------------------------------------------------------
// CERTNAMETYPE:
// Equivalent of CAPI flags to CertNameToStr
// -------------------------------------------------------------------
typedef enum tagCERTNAMETYPE {
SIMPLE,
OID,
X500
} CERTNAMETYPE;
// -------------------------------------------------------------------
// CERTDATAID:
// used to identify request to GetCertData
// -------------------------------------------------------------------
typedef enum tagCERTDATAID {
CDID_EMAIL, // VT_LPSTR
CDID_MAX
} CERTDATAID;
// -------------------------------------------------------------------
// X509CERTRESULT:
//
// cEntries- count of the two arrays
// rgcs - array of results mapped to ops done on/with rgpCert
// rgpCert - array of certificates
//
// -------------------------------------------------------------------
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);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeHeaderTable
// ---------------------------------------------------------------------------------------
[
uuid(FD853CD1-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeHeaderTable"),
]
interface IMimeHeaderTable : IPersistStream
{
typedef struct tagFINDHEADER {
LPCSTR pszHeader; // Header Name to find
DWORD dwReserved; // Reserved, do use this
} FINDHEADER, *LPFINDHEADER;
typedef struct tagHEADERROWINFO {
DWORD dwRowNumber; // Position of the row within the header (1 - x)
ULONG cboffStart; // Index into pStream where Header Starts (From: xxxx)
ULONG cboffColon; // Index into pStream of the Header Colon
ULONG cboffEnd; // Index into pStream where the Header Ends
} HEADERROWINFO, *LPHEADERROWINFO;
typedef enum tagHEADERTABLEFLAGS {
HTF_NAMEINDATA = 0x00000001, // The header name is inlcuded in the data
HTF_ENUMHANDLESONLY = 0x00000002 // Enumerate Only Handles
} HEADERTABLEFLAGS;
HRESULT FindFirstRow(
[in] LPFINDHEADER pFindHeader,
[out] LPHHEADERROW phRow);
HRESULT FindNextRow(
[in] LPFINDHEADER pFindHeader,
[out] LPHHEADERROW phRow);
HRESULT CountRows(
[in] LPCSTR pszHeader,
[out] ULONG *pcRows);
HRESULT AppendRow(
[in] LPCSTR pszHeader,
[in] DWORD dwFlags,
[in] LPCSTR pszData,
[in] ULONG cchData,
[out] LPHHEADERROW phRow);
HRESULT DeleteRow(
[in] HHEADERROW hRow);
HRESULT GetRowData(
[in] HHEADERROW hRow,
[in] DWORD dwFlags,
[out] LPSTR *ppszData,
[out] ULONG *pcchData);
HRESULT SetRowData(
[in] HHEADERROW hRow,
[in] DWORD dwFlags,
[in] LPCSTR pszData,
[in] ULONG cchData);
HRESULT GetRowInfo(
[in] HHEADERROW hRow,
[in,out] LPHEADERROWINFO pInfo);
HRESULT SetRowNumber(
[in] HHEADERROW hRow,
[in] DWORD dwRowNumber);
HRESULT EnumRows(
[in] LPCSTR pszHeader,
[in] DWORD dwFlags,
[out] IMimeEnumHeaderRows **ppEnum);
HRESULT Clone(
[out] IMimeHeaderTable **ppTable);
HRESULT BindToObject(
[in] REFIID riid,
[out, iid_is(riid)] void **ppvObject);
}
// ---------------------------------------------------------------------------------------
// IID_IMimePropertySchema
// ---------------------------------------------------------------------------------------
[
uuid(FD853CEC-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimePropertySchema"),
]
interface IMimePropertySchema : IUnknown
{
typedef [unique] IMimePropertySchema *LPMIMEPROPERTYSCHEMA;
typedef enum tagMIMEPROPFLAGS {
MPF_INETCSET = 0x00000001, // Property can be encoded in an internet character set
MPF_RFC1522 = 0x00000002, // Property can be encoded using rfc1522
MPF_ADDRESS = 0x00000004, // Property is in the form of an rfc822 addr-path field
MPF_HASPARAMS = 0x00000008, // Property contains parseable parameters (i.e. Content-Type)
MPF_MIME = 0x00000010, // Property is a MIME specific header
MPF_READONLY = 0x00000020 // Property is read-only and can not be set or appended
} MIMEPROPFLAGS;
HRESULT RegisterProperty(
[in] LPCSTR pszName,
[in] DWORD dwFlags,
[in] DWORD dwRowNumber,
[in] VARTYPE vtDefault,
[out] LPDWORD pdwPropId);
HRESULT ModifyProperty(
[in] LPCSTR pszName,
[in] DWORD dwFlags,
[in] DWORD dwRowNumber,
[in] VARTYPE vtDefault);
HRESULT GetPropertyId(
[in] LPCSTR pszName,
[out] LPDWORD pdwPropId);
HRESULT GetPropertyName(
[in] DWORD dwPropId,
[out] LPSTR *ppszName);
HRESULT RegisterAddressType(
[in] LPCSTR pszName,
[out] LPDWORD pdwAdrType);
}
// ---------------------------------------------------------------------------------------
// IID_IMimePropertySet
// ---------------------------------------------------------------------------------------
[
uuid(FD853CD3-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimePropertySet"),
]
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; // Parameter Name (i.e. charset)
LPSTR pszData; // Paramater data
} MIMEPARAMINFO, *LPMIMEPARAMINFO;
typedef enum tagPROPINFOMASK {
PIM_CHARSET = 0x00000001, // The MIMEPROPINFO::hCharset member is valid
PIM_ENCODINGTYPE = 0x00000002, // The MIMEPROPINFO::ietEncoding member is valid
PIM_ROWNUMBER = 0x00000004, // The MIMEPROPINFO::dwRowNumber member is valid
PIM_FLAGS = 0x00000008, // The MIMEPROPINFO::dwFlags member is valid
PIM_PROPID = 0x00000010, // The MIMEPROPINFO::dwPropId member is valid
PIM_VALUES = 0x00000020, // The MIMEPROPINFO::cValues member is valid
PIM_VTDEFAULT = 0x00000040, // The MIMEPROPINFO::vtDefault member is valid
PIM_VTCURRENT = 0x00000080 // The MIMEPROPINFO::vtCurrent member is valid
} PROPINFOMASK;
typedef struct tagMIMEPROPINFO {
DWORD dwMask; // What members in this structure are valid
HCHARSET hCharset; // Property Charset
ENCODINGTYPE ietEncoding; // Encoded in an internet character set
DWORD dwRowNumber; // Current header property row number
DWORD dwFlags; // (GetPropInfo only) Property Flags (MIMEPROPFLAGS)
DWORD dwPropId; // (GetPropInfo only) Property Id
DWORD cValues; // (GetPropInfo only) Number of appended values (i.e. multi-line headers)
VARTYPE vtDefault; // The Default Data Type for this property
VARTYPE vtCurrent; // The Current Data Type for this property
} MIMEPROPINFO, *LPMIMEPROPINFO;
typedef const MIMEPROPINFO *LPCMIMEPROPINFO;
HRESULT GetPropInfo(
[in] LPCSTR pszName,
[in,out] LPMIMEPROPINFO pInfo);
HRESULT SetPropInfo(
[in] LPCSTR pszName,
[in] LPCMIMEPROPINFO pInfo);
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] 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] 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);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeAddressTable
// ---------------------------------------------------------------------------------------
[
uuid(C558834A-7F86-11d0-8252-00C04FD85AB4),
helpstring("IID_IMimeAddressTable "),
]
interface IMimeAddressTable : IUnknown
{
typedef [unique] IMimeAddressTable *LPMIMEADDRESSTABLE;
typedef DWORD IADDRESSTYPE;
DECLARE_HANDLE(HADDRESS);
typedef HADDRESS *LPHADDRESS;
cpp_quote("#define IAT_UNKNOWN 0x00000000")
cpp_quote("#define IAT_FROM 0x00000001")
cpp_quote("#define IAT_SENDER 0x00000002")
cpp_quote("#define IAT_TO 0x00000004")
cpp_quote("#define IAT_CC 0x00000008")
cpp_quote("#define IAT_BCC 0x00000010")
cpp_quote("#define IAT_REPLYTO 0x00000020")
cpp_quote("#define IAT_RETURNPATH 0x00000040")
cpp_quote("#define IAT_RETRCPTTO 0x00000080")
cpp_quote("#define IAT_RR 0x00000100")
cpp_quote("#define IAT_APPARTO 0x00000200")
cpp_quote("#define IAT_DISP_NOTIFICATION_TO 0x00000400")
cpp_quote("#define IAT_ALL 0xFFFFFFFF")
cpp_quote("#define IAT_KNOWN (IAT_FROM | IAT_TO | IAT_CC | IAT_BCC | IAT_REPLYTO | IAT_SENDER)")
cpp_quote("#define IAT_RECIPS (IAT_TO | IAT_CC | IAT_BCC)")
typedef enum tagADDRESSFORMAT {
AFT_DISPLAY_FRIENDLY, // Display with friendly names only
AFT_DISPLAY_EMAIL, // Display with friendly email addresses only
AFT_DISPLAY_BOTH, // Display with friendly name and eamil addresses
AFT_RFC822_DECODED, // RFC822 Format (decoded)
AFT_RFC822_ENCODED, // RFC822 Format (encoded)
AFT_RFC822_TRANSMIT // RFC822 Format (encoded) with CRLFs for folding
} ADDRESSFORMAT;
cpp_quote("#define IAP_CHARSET 0x00000001")
cpp_quote("#define IAP_HANDLE 0x00000002")
cpp_quote("#define IAP_ADRTYPE 0x00000004")
cpp_quote("#define IAP_FRIENDLY 0x00000008")
cpp_quote("#define IAP_EMAIL 0x00000020")
cpp_quote("#define IAP_CERTSTATE 0x00000100")
cpp_quote("#define IAP_SIGNING_PRINT 0x00000200")
cpp_quote("#define IAP_ENCRYPTION_PRINT 0x00000400")
cpp_quote("#define IAP_ENCODING 0x00000800")
cpp_quote("#define IAP_COOKIE 0x00001000")
cpp_quote("#define IAP_FRIENDLYW 0x00002000")
cpp_quote("#define IAP_ALL 0xffffffff")
typedef struct tagADDRESSPROPS {
DWORD dwProps; // Mask of IAP_xxx flags for valid items in this structure
HADDRESS hAddress; // IAP_HANDLE: Handle of this address
ENCODINGTYPE ietFriendly; // IAP_ENCODING: Current encoding of pszFriendly
HCHARSET hCharset; // IAP_CHARSET: Charset used to encode pszFriendly
DWORD dwAdrType; // IAP_ADRTYPE: Single IAT_xxx Flag, address type
LPSTR pszFriendly; // IAP_FRIENDLYA: Friendly Name (ANSI)
LPWSTR pszFriendlyW; // IAP_FRIENDLYW: Friendly Name (UNICODE)
LPSTR pszEmail; // IAP_EMAIL: Email Address (ANSI)
CERTSTATE certstate; // IAP_CERTSTATE: Certificate State
THUMBBLOB tbSigning; // IAP_SIGNING_PRINT: Thumbprint to be used for signing
THUMBBLOB tbEncryption; // IAP_ENCRYPTION_PRINT: Thumbprint to be used for signing
DWORD dwCookie; // IAP_COOKIE: User-defined cookie
DWORD dwReserved1; // Reserved, dont use
DWORD dwReserved2; // Reserved, dont use
} ADDRESSPROPS, *LPADDRESSPROPS;
typedef struct tagADDRESSLIST {
ULONG cAdrs; // Number of items in prgAddress
LPADDRESSPROPS prgAdr; // Array of pointers to IMimeAddressInfo objects
} ADDRESSLIST, *LPADDRESSLIST;
HRESULT Append(
[in] DWORD dwAdrType,
[in] ENCODINGTYPE ietFriendly,
[in] LPCSTR pszFriendly,
[in] LPCSTR pszEmail,
[out] LPHADDRESS phAddress);
HRESULT Insert(
[in] LPADDRESSPROPS pAddress,
[out] LPHADDRESS phAddress);
HRESULT SetProps(
[in] HADDRESS hAddress,
[in] LPADDRESSPROPS pAddress);
HRESULT GetProps(
[in] HADDRESS hAddress,
[in] LPADDRESSPROPS pAddress);
HRESULT GetSender(
[in,out] LPADDRESSPROPS pAddress);
HRESULT CountTypes(
[in] DWORD dwAdrTypes,
[out] ULONG *pcAdrs);
HRESULT GetTypes(
[in] DWORD dwAdrTypes,
[in] DWORD dwProps,
[in,out] LPADDRESSLIST pList);
HRESULT EnumTypes(
[in] DWORD dwAdrTypes,
[in] DWORD dwProps,
[out] IMimeEnumAddressTypes **ppEnum);
HRESULT Delete(
[in] HADDRESS hAddress);
HRESULT DeleteTypes(
[in] DWORD dwAdrTypes);
HRESULT GetFormat(
[in] DWORD dwAdrType,
[in] ADDRESSFORMAT format,
[out] LPSTR *ppszFormat);
HRESULT AppendRfc822(
[in] DWORD dwAdrType,
[in] ENCODINGTYPE ietEncoding,
[in] LPCSTR pszRfc822Adr);
HRESULT ParseRfc822(
[in] DWORD dwAdrType,
[in] ENCODINGTYPE ietEncoding,
[in] LPCSTR pszRfc822Adr,
[in,out] LPADDRESSLIST pList);
HRESULT Clone(
[out] IMimeAddressTable **ppTable);
HRESULT BindToObject(
[in] REFIID riid,
[out, iid_is(riid)] void **ppvObject);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeAddressTableW
// ---------------------------------------------------------------------------------------
[
uuid(11C8D742-0FB4-11d3-A01E-00A0C90C9BB6),
helpstring("IID_IMimeAddressTableW"),
]
interface IMimeAddressTableW : IMimeAddressTable
{
typedef [unique] IMimeAddressTableW *LPMIMEADDRESSTABLEW;
HRESULT AppendW(
[in] DWORD dwAdrType,
[in] ENCODINGTYPE ietFriendly,
[in] LPCWSTR pwszFriendly,
[in] LPCWSTR pwszEmail,
[out] LPHADDRESS phAddress);
HRESULT GetFormatW(
[in] DWORD dwAdrType,
[in] ADDRESSFORMAT format,
[out] LPWSTR *ppwszFormat);
HRESULT AppendRfc822W(
[in] DWORD dwAdrType,
[in] ENCODINGTYPE ietEncoding,
[in] LPCWSTR pwszRfc822Adr);
HRESULT ParseRfc822W(
[in] DWORD dwAdrType,
[in] LPCWSTR pwszRfc822Adr,
[in,out] LPADDRESSLIST pList);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeWebDocument
// ---------------------------------------------------------------------------------------
[
uuid(EE519F11-851A-11d0-825C-00C04FD85AB4),
helpstring("IMimeWebDocument"),
]
interface IMimeWebDocument : IUnknown
{
HRESULT GetURL(
[out] LPSTR *ppszURL);
HRESULT BindToStorage(
[in] REFIID riid,
[out, iid_is(riid)] LPVOID *ppvObject);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeBody
// ---------------------------------------------------------------------------------------
[
uuid(C558834C-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeBody"),
]
interface IMimeBody : IMimePropertySet
{
typedef [unique] IMimeBody *LPMIMEBODY;
typedef enum tagIMSGBODYTYPE {
IBT_SECURE, // Body has cryptographic enhancement(s)
IBT_ATTACHMENT, // Body is considered an attachment by mimeole
IBT_EMPTY, // Is the body empty
IBT_CSETTAGGED, // Is the body tagged with a character set?
IBT_AUTOATTACH // If OID_CAN_INLINE_TEXT_BODIES is TRUE and the body was marked as an attachment by mimeole
} IMSGBODYTYPE;
typedef struct tagBODYOFFSETS {
DWORD cbBoundaryStart; // Offset of starting boundary for the body
DWORD cbHeaderStart; // Header start offset
DWORD cbBodyStart; // Body start offset (same as end of header)
DWORD cbBodyEnd; // Body end offset
} BODYOFFSETS, *LPBODYOFFSETS;
typedef struct tagTRANSMITINFO {
ENCODINGTYPE ietCurrent; // Current encoding type of the data
ENCODINGTYPE ietXmitMime; // Recommended Transmit Encoding
ENCODINGTYPE ietXmit822; // Recommended Transmit Encoding
ULONG cbLongestLine; // Longest line seen, determines if wrapping is needed
ULONG cExtended; // Count of Extended Characters
ULONG ulPercentExt; // Percentage of extended characters in the body
ULONG cbSize; // Number of bytes in the decoded data (exact)
ULONG cLines; // Number of lines in the decoded data
} 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] LPCSTR pszPriType,
[in] 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);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeBodyW
// ---------------------------------------------------------------------------------------
[
uuid(2F38042B-D02F-11d2-A004-00A0C90C9BB6),
helpstring("IMimeBodyW"),
]
interface IMimeBodyW : IMimeBody
{
HRESULT SetDisplayNameW(
[in] LPCWSTR pwszDisplay);
HRESULT GetDisplayNameW(
[out] LPWSTR *ppwszDisplay);
HRESULT SetDataW(
[in] ENCODINGTYPE ietEncoding,
[in] LPCWSTR pwszPriType,
[in] LPCWSTR pwszSubType,
[in] REFIID riid,
[in, iid_is(riid)] LPVOID pvObject);
HRESULT SaveToFileW(
[in] ENCODINGTYPE ietEncoding,
[in] LPCWSTR pwszFilePath);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeMessageTree - Supports Aggregation
// ---------------------------------------------------------------------------------------
[
uuid(FD853CD4-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeMessageTree"),
]
interface IMimeMessageTree : IPersistStreamInit
{
typedef [unique] IMimeMessageTree *LPMIMEMESSAGETREE;
const HBODY HBODY_ROOT = (HBODY)-1;
typedef enum tagBODYLOCATION {
IBL_ROOT, // Get the root body of the message
IBL_PARENT, // Parent of pInRelation
IBL_FIRST, // First Child
IBL_LAST, // Last Child
IBL_NEXT, // Next Sibling
IBL_PREVIOUS // Previous Sibling
} BODYLOCATION;
typedef struct tagFINDBODY {
LPSTR pszPriType;
LPSTR pszSubType;
DWORD dwReserved;
} FINDBODY, *LPFINDBODY;
cpp_quote("#define COMMIT_ONLYIFDIRTY 0x00000001")
cpp_quote("#define COMMIT_REUSESTORAGE 0x00000002")
cpp_quote("#define COMMIT_SMIMETRANSFERENCODE 0x00000004")
HRESULT GetMessageSource(
[out] IStream **ppStream,
[in] DWORD dwFlags); // COMMIT_xxx Flags
HRESULT GetMessageSize(
[out] ULONG *pcbSize,
[in] DWORD dwFlags); // COMMIT_xxx Flags
HRESULT LoadOffsetTable(
[in] IStream *pStream);
HRESULT SaveOffsetTable(
[in] IStream *pStream,
[in] DWORD dwFlags); // COMMIT_xxx Flags
HRESULT GetFlags(
[out] DWORD *pdwFlags);
HRESULT Commit(
[in] DWORD dwFlags); // COMMIT_xxx Flags
HRESULT HandsOffStorage(void);
HRESULT BindToObject(
[in] const HBODY hBody,
[in] REFIID riid,
[out, iid_is(riid)] void **ppvObject);
// NOTE: High word of SAVEBODY_* is reserved for private internal flags
cpp_quote("#define SAVEBODY_KEEPBOUNDARY 0x00000001")
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);
cpp_quote("#define DELETE_PROMOTE_CHILDREN 0x00000001")
cpp_quote("#define DELETE_CHILDREN_ONLY 0x00000002")
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);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeMessage - Supports Aggregation
// ---------------------------------------------------------------------------------------
[
uuid(FD853CD5-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeMessage"),
]
interface IMimeMessage : IMimeMessageTree
{
typedef [unique] IMimeMessage *LPMIMEMESSAGE;
typedef DWORD TEXTTYPE;
typedef enum tagIMSGFLAGS {
IMF_ATTACHMENTS = 0x00000001, // The message has attachments
IMF_MULTIPART = 0x00000002, // The message is a multipart message
IMF_SUBMULTIPART = 0x00000004, // The message has a nested multipart section
IMF_MIME = 0x00000008, // The message is in MIME format
IMF_HTML = 0x00000010, // The message has a text/html body
IMF_PLAIN = 0x00000020, // The message has a text/plain body
IMF_PARTIAL = 0x00000040, // The message has un-matching boundaries, or is a message/partial
IMF_SIGNED = 0x00000080, // The message is signed
IMF_ENCRYPTED = 0x00000100, // The message is secured
IMF_TNEF = 0x00000200, // The message has a Microsoft TNEF attachment
IMF_MHTML = 0x00000400, // The message has a MIME-HTML multipart/related section
IMF_SECURE = 0x00000800, // The message has a cryptographic enhancement
IMF_TEXT = 0x00001000, // The message contains text/xxx part(s)
IMF_CSETTAGGED = 0x00002000, // The message was tagged with a charset
IMF_NEWS = 0x00004000, // The message has nntp (news) headers (Newsgroup, Path, etc)
IMF_VOICEMAIL = 0x00008000, // The message has the X-Voicemail Header Set to something
IMF_HASVCARD = 0x00010000, // The message has a text/v-card attachment.
IMF_RFC1154 = 0x00020000 // The message was decoded using RFC1154.
} IMSGFLAGS;
typedef enum tagIMSGPRIORITY {
IMSG_PRI_LOW = 5,
IMSG_PRI_NORMAL = 3,
IMSG_PRI_HIGH = 1
} IMSGPRIORITY;
cpp_quote("#define WPF_HTML 0x00000001") // Full-fidelity HTML (if not set, mimeole will downgrade to plain-text)
cpp_quote("#define WPF_AUTOINLINE 0x00000002") // Inline images that are marked as attachment
cpp_quote("#define WPF_SLIDESHOW 0x00000004") // Show all inlined images in a slideshow
cpp_quote("#define WPF_ATTACHLINKS 0x00000008") // Put links to the attachments in the WebPage
cpp_quote("#define WPF_IMAGESONLY 0x00000010") // Only show inline images
cpp_quote("#define WPF_NOMETACHARSET 0x00000020") // Only show inline images
typedef struct tagWEBPAGEOPTIONS {
DWORD cbSize; // Size of this structure
DWORD dwFlags; // WPF_xxx Flags
DWORD dwDelay; // Delay time in milliseconds for auto-slide-show
WCHAR wchQuote; // Quote char to use for reply ticking
} WEBPAGEOPTIONS, *LPWEBPAGEOPTIONS;
cpp_quote("#define TXT_PLAIN 0x00000001")
cpp_quote("#define TXT_HTML 0x00000002")
cpp_quote("#define URL_ATTACH_INTO_MIXED 0x00000001")
cpp_quote("#define URL_ATTACH_GENERATE_CID 0x00000002")
cpp_quote("#define URL_ATTACH_SET_CNTTYPE 0x00000004")
cpp_quote("#define URL_RESOLVE_RENDERED 0x00000001")
cpp_quote("#define URL_RESULVE_NO_BASE 0x00000002")
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 **ppStream,
[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 dwAdrType,
[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);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeMessageW
// ---------------------------------------------------------------------------------------
[
uuid(F90ADFEF-D01F-11d2-A004-00A0C90C9BB6),
helpstring("IMimeMessageW"),
]
interface IMimeMessageW : IMimeMessage
{
typedef IMimeMessageW *LPMIMEMESSAGEW;
HRESULT GetPropW(
[in] LPCWSTR pwszName,
[in] DWORD dwFlags,
[in,out] LPPROPVARIANT pValue);
HRESULT SetPropW(
[in] LPCWSTR pwszName,
[in] DWORD dwFlags,
[in] LPCPROPVARIANT pValue);
HRESULT DeletePropW(
[in] LPCWSTR pwszName);
HRESULT QueryPropW(
[in] LPCWSTR pwszName,
[in] LPCWSTR pwszCriteria,
[in] boolean fSubString,
[in] boolean fCaseSensitive);
HRESULT AttachFileW(
[in] LPCWSTR pwszFilePath,
[in] IStream *pstmFile,
[out] LPHBODY phBody);
HRESULT AttachURLW(
[in] LPCWSTR pwszBase,
[in] LPCWSTR pwszURL,
[in] DWORD dwFlags,
[in] IStream *pstmURL,
[out] LPWSTR *ppwszCIDURL,
[out] LPHBODY phBody);
HRESULT GetAddressFormatW(
[in] DWORD dwAdrType,
[in] ADDRESSFORMAT format,
[out] LPWSTR *ppwszFormat);
HRESULT ResolveURLW(
[in] HBODY hRelated,
[in] LPCWSTR pwszBase,
[in] LPCWSTR pwszURL,
[in] DWORD dwFlags,
[out] LPHBODY phBody);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeWebPageCallback
// ---------------------------------------------------------------------------------------
[
uuid(761AA641-7BDA-11d1-8AA9-00C04FB951F3),
helpstring("IMimeMessageCallback"),
]
interface IMimeMessageCallback : IUnknown
{
typedef IMimeMessageCallback *LPMIMEMESSAGECALLBACK;
// Returns S_OK if wrote something into pStream
HRESULT OnWebPageSplitter([in] DWORD cInlined, [in] IStream *ppStream);
}
// ---------------------------------------------------------------------------------------
// IID_IPersistMime
// ---------------------------------------------------------------------------------------
[
uuid(DE4AD8DA-555F-11d1-8DD0-00C04FB951F9),
helpstring("IPersistMime"),
]
interface IPersistMime : IPersist
{
typedef IPersistMime *LPPERSISTMIME;
cpp_quote("#define PMS_HTML 0x00000001")
cpp_quote("#define PMS_TEXT 0x00000002")
HRESULT Load([in] IMimeMessage *pMsg);
HRESULT Save([in] IMimeMessage *pMsg, [in] DWORD dwFlags);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeMessageParts - Used for splitting and re-combining partial messages
// ---------------------------------------------------------------------------------------
[
uuid(C558834F-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeMessageParts"),
]
interface IMimeMessageParts : IUnknown
{
typedef [unique] IMimeMessageParts *LPMIMEMESSAGEPARTS;
HRESULT CombineParts(
[out] IMimeMessage **ppMessage);
HRESULT AddPart(
[in] IMimeMessage *pMessage);
HRESULT SetMaxParts(
[in] ULONG cParts);
HRESULT CountParts(
[out] ULONG *pcParts);
HRESULT EnumParts(
[out] IMimeEnumMessageParts **ppEnum);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeEnumHeaderRows
// ---------------------------------------------------------------------------------------
[
uuid(C558834D-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeEnumHeaderRows"),
]
interface IMimeEnumHeaderRows : IUnknown
{
typedef [unique] IMimeEnumHeaderRows *LPMIMEENUMHEADERROWS;
typedef struct tagENUMHEADERROW {
HHEADERROW hRow;
LPSTR pszHeader;
LPSTR pszData;
ULONG cchData;
DWORD_PTR dwReserved;
} ENUMHEADERROW, *LPENUMHEADERROW;
HRESULT Next(
[in] ULONG cFetch,
[in,out] LPENUMHEADERROW prgRow,
[out] ULONG *pcFetched);
HRESULT Skip(
[in] ULONG cItems);
HRESULT Reset(void);
HRESULT Clone(
[out] IMimeEnumHeaderRows **ppEnum);
HRESULT Count(
[out] ULONG *pcItems);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeEnumProperties
// ---------------------------------------------------------------------------------------
[
uuid(FD853CEE-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeEnumProperties"),
]
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);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeEnumAddressTypes
// ---------------------------------------------------------------------------------------
[
uuid(C5588354-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeEnumAddressTypes"),
]
interface IMimeEnumAddressTypes : IUnknown
{
typedef [unique] IMimeEnumAddressTypes *LPMIMEENUMADDRESSTYPES;
HRESULT Next(
[in] ULONG cFetch,
[in,out] LPADDRESSPROPS prgAdr,
[out] ULONG *pcFetched);
HRESULT Skip(
[in] ULONG cItems);
HRESULT Reset(void);
HRESULT Clone(
[out] IMimeEnumAddressTypes **ppEnum);
HRESULT Count(
[out] ULONG *pcItems);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeEnumMessageParts - Used to enumerate IMimeMessageParts container
// ---------------------------------------------------------------------------------------
[
uuid(C5588350-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeEnumMessageParts"),
]
interface IMimeEnumMessageParts : IUnknown
{
typedef [unique] IMimeEnumMessageParts *LPMIMEENUMMESSAGEPARTS;
HRESULT Next(
[in] ULONG cFetch,
[in,out] IMimeMessage **prgpMessage,
[out] ULONG *pcFetched);
HRESULT Skip(
[in] ULONG cItems);
HRESULT Reset(void);
HRESULT Clone(
[out] IMimeEnumMessageParts **ppEnum);
HRESULT Count(
[out] ULONG *pcItems);
}
// ---------------------------------------------------------------------------------------
// IID_IHashTable
// ---------------------------------------------------------------------------------------
[
uuid(64577981-86D7-11d1-BDFC-00C04FA31009),
helpstring("IHashTable"),
]
interface IHashTable : IUnknown
{
typedef [unique] IHashTable *LPHASHTABLE;
// For use with IHashTable::Insert
const DWORD HF_NO_DUPLICATES = 0x00000001; // If duplicate entry exists, replace old data with new data
HRESULT Init(
[in] DWORD dwSize,
[in] BOOL fDupeKeys);
HRESULT Insert(
[in] LPSTR psz,
[in] LPVOID pv,
[in] DWORD dwFlags);
HRESULT Replace(
[in] LPSTR psz,
[in] LPVOID pv);
HRESULT Find(
[in] LPSTR psz,
[in] BOOL fRemove,
[out] LPVOID *ppv);
// enumeration. can walk the entries in the hash table
// use Reset to rest the enumerator and Next to walk the
// entries
HRESULT Reset(void);
HRESULT Next(
[in] ULONG cFetch,
[in,out] LPVOID **prgpv,
[out] ULONG *pcFetched);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeAllocator
// ---------------------------------------------------------------------------------------
[
uuid(C5588351-7F86-11d0-8252-00C04FD85AB4),
helpstring("IMimeAllocator"),
]
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);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeObjResolver
// ---------------------------------------------------------------------------------------
[
uuid(FECEAFFD-C441-11d1-960E-00C04FBD7C09),
helpstring("IMimeObjResolver"),
]
interface IMimeObjResolver : IUnknown
{
typedef [unique] IMimeObjResolver *LPMIMEOBJRESOLVER;
HRESULT MimeOleObjectFromMoniker(
[in] BINDF bindf,
[in] IMoniker *pmkOriginal,
[in] IBindCtx *pBindCtx,
[in] REFIID riid,
[out] LPVOID *ppvObject,
[out] IMoniker **ppmkNew);
}
}
typedef enum tagFNTSYSTYPE {
FNT_SYS_ICON = 0,
FNT_SYS_ICON_BOLD,
FNT_SYS_MENU,
FNT_SYS_ICON_STRIKEOUT,
FNT_SYS_LAST
} FNTSYSTYPE;
typedef struct _charformat CHARFORMAT;
// ---------------------------------------------------------------------------------------
// IID_IFontCache
// ---------------------------------------------------------------------------------------
[
uuid(B0D17FC2-7BC4-11d1-BDFA-00C04FA31009),
helpstring("IFontCache"),
]
interface IFontCache : IUnknown
{
typedef [unique] IFontCache *LPFONTCACHE;
[local]
HRESULT Init(
[in] HKEY hkey,
[in] LPCSTR pszIntlKey,
[in] DWORD dwFlags);
HRESULT GetFont(
[in] FNTSYSTYPE fntType,
[in] HCHARSET hCharset,
[out] HFONT *phFont);
HRESULT OnOptionChange(void);
HRESULT GetJP_ISOControl(
[out] BOOL *pfUseSIO);
}
// ---------------------------------------------------------------------------------------
// IID_IFontCacheNotify
// ---------------------------------------------------------------------------------------
[
uuid(B0D17FC5-7BC4-11d1-BDFA-00C04FA31009),
helpstring("IFontCacheNotify"),
]
interface IFontCacheNotify : IUnknown
{
typedef [unique] IFontCacheNotify *LPFONTCACHENOTIFY;
HRESULT OnPreFontChange(void);
HRESULT OnPostFontChange(void);
}
// ---------------------------------------------------------------------------------------
// IID_IMimeEditTag
// ---------------------------------------------------------------------------------------
[
uuid(70183210-7b36-11d2-8c12-00c04fa31009),
helpstring("IID_IMimeEditTag"),
]
interface IMimeEditTag : IUnknown
{
typedef [unique] IMimeEditTag *PMIMEEDITTAG;
// get and set the source-attributes on a tag. This is tag-specific and is where the data is coming from
// implementors should adjust the html source accordingly
HRESULT GetSrc(
[out] BSTR *pbstr);
HRESULT SetSrc(
[in] BSTR bstr);
// destination is set by the MHTML packager. It is the location that the tag will end up after
// being archived into the Mime-Message. Might be a CID: or the original URL location. Implementors
// should just hold onto and return this member data
HRESULT GetDest(
[out] BSTR *pbstr);
HRESULT SetDest(
[in] BSTR bstr);
// called by the packer before the document is persisted. The tag should remove any temporary state
// and change it's data parameters to point the the destination (if set)
HRESULT OnPreSave();
// called after the packer has saved the document. The tag should restore it's temporary state and
// revert back to the original source url
HRESULT OnPostSave();
// called by the packer to make sure that this tag should be packaged.
HRESULT CanPackage();
// called by the packer to validate a mime-type
HRESULT IsValidMimeType(
[in] LPWSTR pszTypeW);
};
// ---------------------------------------------------------------------------------------
// IID_IMimeEditTagCollection
// ---------------------------------------------------------------------------------------
[
uuid(d09ee528-7b38-11d2-8c12-00c04fa31009),
helpstring("IID_IMimeEditTagCollection"),
]
interface IMimeEditTagCollection : IUnknown
{
typedef [unique] IMimeEditTagCollection *PMIMEEDITTAGCOLLECTION;
HRESULT Init(
[in] IUnknown *pHtmlDoc);
HRESULT Next(
[in] ULONG cFetch,
[out] IMimeEditTag **ppTag,
[out] ULONG *pcFetched);
HRESULT Reset();
HRESULT Count(
[out] ULONG *pcItems);
};
cpp_quote("#if (_WIN32_OE >= 0x0500)")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// CMDSETID_MimeEdit commands")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MECMDID_DIRTY 1")
cpp_quote("#define MECMDID_EMPTY 2")
cpp_quote("#define MECMDID_STYLE 3")
cpp_quote("#define MECMDID_EDITHTML 4")
cpp_quote("#define MECMDID_DOWNGRADEPLAINTEXT 5")
cpp_quote("#define MECMDID_SETTEXT 6")
cpp_quote("#define MECMDID_ROT13 7")
cpp_quote("#define MECMDID_INSERTTEXTFILE 8")
cpp_quote("#define MECMDID_VIEWSOURCE 9")
cpp_quote("#define MECMDID_FORMATFONT 10")
cpp_quote("#define MECMDID_PREVIEWFORMAT 11")
cpp_quote("#define MECMDID_EDITMODE 12")
cpp_quote("#define MECMDID_CHARSET 13")
cpp_quote("#define MECMDID_SAVEASSTATIONERY 14")
cpp_quote("#define MECMDID_BACKGROUNDIMAGE 15")
cpp_quote("#define MECMDID_INSERTTEXT 16")
cpp_quote("#define MECMDID_INSERTHTML 17")
cpp_quote("#define MECMDID_BACKGROUNDCOLOR 18")
cpp_quote("#define MECMDID_APPLYDOCUMENT 19")
cpp_quote("#define MECMDID_SAVEATTACHMENTS 20")
cpp_quote("#define MECMDID_BACKGROUNDSOUND 21")
cpp_quote("#define MECMDID_INSERTBGSOUND 22")
cpp_quote("#define MECMDID_SHOWSOURCETABS 23")
cpp_quote("#define MECMDID_SETSOURCETAB 24")
cpp_quote("#define MECMDID_TABLINKS 25")
cpp_quote("#define MECMDID_FORMATPARAGRAPH 26")
cpp_quote("#define MECMDID_CANENCODETEXT 27")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MEO_FLAGS") //used by MEHOSTCMDID_FLAGS
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MEO_FLAGS_INCLUDEMSG 0x0001") // include message when loading
cpp_quote("#define MEO_FLAGS_HTML 0x0002") // status of HTML mode
cpp_quote("#define MEO_FLAGS_AUTOINLINE 0x0004") // want autoinlined attachments
cpp_quote("#define MEO_FLAGS_SLIDESHOW 0x0008") // show autoinline images as slideshow
cpp_quote("#define MEO_FLAGS_AUTOTEXT 0x0010") // autotext or not
cpp_quote("#define MEO_FLAGS_BLOCKQUOTE 0x0020") // blockquote indentation on reply
cpp_quote("#define MEO_FLAGS_SENDIMAGES 0x0040") // MHTML on or off
cpp_quote("#define MEO_FLAGS_DONTSPELLCHECKQUOTED 0x0080") // don't spell check quoted text
cpp_quote("#define MEO_FLAGS_SENDEXTERNALIMGSRC 0x0100") // send external image on reply/fwd
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MECMDID_VIEWSOURCE options")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MECMD_VS_HTML 0x0001") // view HTML source
cpp_quote("#define MECMD_VS_MESSAGE 0x0002") // view message source
cpp_quote("")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MEST_") //used by MECMDID_SETSOURCETAB
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MEST_EDIT 0") // goto the edit tab
cpp_quote("#define MEST_SOURCE 1") // goto the source tab
cpp_quote("#define MEST_PREVIEW 2") // goto the preview tab
cpp_quote("#define MEST_NEXT 3") // goto the next tab
cpp_quote("#define MEST_PREVIOUS 4") // goto the previous tab
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MECMDID_STYLE options")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MESTYLE_NOHEADER 0") // no header at all
cpp_quote("#define MESTYLE_PREVIEW 1") // preview header
cpp_quote("#define MESTYLE_FORMATBAR 2") // formatting bar
cpp_quote("#define MESTYLE_MINIHEADER 3") // mini header for focus changes
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MECMDID_HEADER_TYLE options")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MEHEADER_NONE 0x00")
cpp_quote("#define MEHEADER_NEWS 0x01")
cpp_quote("#define MEHEADER_MAIL 0x02")
cpp_quote("#define MEHEADER_FORCE_ENGLISH 0x04")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MECMDID_SIGNATURE_ENABLED options")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MESIG_AUTO 0x0001")
cpp_quote("#define MESIG_MANUAL 0x0002")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MECMDID_SIGNATURE_OPTIONS options")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MESIGOPT_PLAIN 0x0001")
cpp_quote("#define MESIGOPT_TOP 0x0002")
cpp_quote("#define MESIGOPT_PREFIX 0x0004")
cpp_quote("#define MESIGOPT_BOTTOM 0x0008")
cpp_quote("#define MESIGOPT_HTML 0x0010")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MEHOSTCMDID_BORDERFLAGS options")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MEBF_OUTERCLIENTEDGE 0x0001")
cpp_quote("#define MEBF_INNERCLIENTEDGE 0x0002")
cpp_quote("#define MEBF_FORMATBARSEP 0x0004")
cpp_quote("#define MEBF_NOSCROLL 0x0008")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MEHOSTCMDID_SPELL_OPTIONS options")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MESPELLOPT_IGNORENUMBER 0x0001")
cpp_quote("#define MESPELLOPT_IGNOREUPPER 0x0002")
cpp_quote("#define MESPELLOPT_IGNOREDBCS 0x0004")
cpp_quote("#define MESPELLOPT_IGNOREPROTECT 0x0008")
cpp_quote("#define MESPELLOPT_IGNOREURL 0x0010")
cpp_quote("#define MESPELLOPT_ALWAYSSUGGEST 0x0020")
cpp_quote("#define MESPELLOPT_CHECKONSEND 0x0040")
cpp_quote("#define MESPELLOPT_CHECKONTYPE 0x0080")
cpp_quote("")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MEHOSTCMDID_SOURCEEDIT_FLAGS options")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MESRCFLAGS_COLOR 0x0001")
cpp_quote("")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// CMDSETID_MimeEditHost commands")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MEHOSTCMDID_SIGNATURE_ENABLED 1")
cpp_quote("#define MEHOSTCMDID_SIGNATURE_OPTIONS 2")
cpp_quote("#define MEHOSTCMDID_SIGNATURE 3")
cpp_quote("#define MEHOSTCMDID_HEADER_TYPE 4")
cpp_quote("#define MEHOSTCMDID_ONPARSECOMPLETE 5")
cpp_quote("#define MEHOSTCMDID_FLAGS 6")
cpp_quote("#define MEHOSTCMDID_QUOTE_CHAR 7")
cpp_quote("#define MEHOSTCMDID_REPLY_TICK_COLOR 8")
cpp_quote("#define MEHOSTCMDID_COMPOSE_FONT 9")
cpp_quote("#define MEHOSTCMDID_ADD_TO_ADDRESSBOOK 10")
cpp_quote("#define MEHOSTCMDID_ADD_TO_FAVORITES 11")
cpp_quote("#define MEHOSTCMDID_SLIDESHOW_DELAY 12")
cpp_quote("#define MEHOSTCMDID_FONTCACHE 13")
cpp_quote("#define MEHOSTCMDID_BORDERFLAGS 14")
cpp_quote("#define MEHOSTCMDID_SECURITY_ZONE 15")
cpp_quote("#define MEHOSTCMDID_SPELL_OPTIONS 16")
cpp_quote("#define MEHOSTCMDID_SAVEATTACH_PATH 17")
cpp_quote("#define MEHOSTCMDID_SOURCEEDIT_FLAGS 18")
cpp_quote("#define MEHOSTCMDID_SPELL_LANGUAGE 19")
cpp_quote("#define MEHOSTCMDID_HTML_HELP 20")
cpp_quote("#define MEHOSTCMDID_UNSAFEATTACHMENTS 21")
cpp_quote("#define MEHOSTCMDID_IS_READ_IN_TEXT_ONLY 22")
cpp_quote("")
cpp_quote("#endif //_WIN32_OE")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MimeOLE Exported C API Functions")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#ifdef __cplusplus")
cpp_quote("extern \"C\" {")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Depends")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#include <urlmon.h>")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// API Name Decoration")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#if !defined(_MIMEOLE_)")
cpp_quote("#define MIMEOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI")
cpp_quote("#define MIMEOLEAPI_(_type_) EXTERN_C DECLSPEC_IMPORT _type_ WINAPI")
cpp_quote("#else")
cpp_quote("#define MIMEOLEAPI EXTERN_C HRESULT WINAPI")
cpp_quote("#define MIMEOLEAPI_(_type_) EXTERN_C _type_ WINAPI")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Constants")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define NOFLAGS 0")
cpp_quote("#define CCHMAX_CID 255")
cpp_quote("#define CCHMAX_MID 255")
cpp_quote("#define CCHMAX_INTERNET_DATE 50")
cpp_quote("")
cpp_quote("#define MECD_HTML 0x0001")
cpp_quote("#define MECD_PLAINTEXT 0x0002")
cpp_quote("#define MECD_ENCODEIMAGES 0x0004")
cpp_quote("#define MECD_ENCODEFILEURLSONLY 0x0008")
cpp_quote("#define MECD_ENCODESOUNDS 0x0010")
cpp_quote("#define MECD_ENCODEVIDEO 0x0020")
cpp_quote("#define MECD_ENCODEPLUGINS 0x0040")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Macros")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define MimeOleVariantInit(_pProp) \\")
cpp_quote(" ZeroMemory(_pProp, sizeof(PROPVARIANT))")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MimeOLE API Prototypes")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("")
cpp_quote("#define MIMEOLE_COMPAT_OE5 0x00000001")
cpp_quote("#define MIMEOLE_COMPAT_MLANG2 0x00000002")
cpp_quote("MIMEOLEAPI MimeOleSetCompatMode(")
cpp_quote(" /* in */ DWORD dwMode);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleContentTypeFromUrl(")
cpp_quote(" /* in */ LPCSTR pszBase,")
cpp_quote(" /* in */ LPCSTR pszUrl,")
cpp_quote(" /* out */ LPSTR *ppszCntType);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleParseMhtmlUrl(")
cpp_quote(" /* in */ LPSTR pszUrl,")
cpp_quote(" /* out */ LPSTR *ppszRootUrl,")
cpp_quote(" /* out */ LPSTR *ppszBodyUrl);")
cpp_quote("")
cpp_quote("#ifndef MAC")
cpp_quote("MIMEOLEAPI MimeOleObjectFromUrl(")
cpp_quote(" /* in */ LPCSTR pszUrl,")
cpp_quote(" /* in */ BOOL fCreate,")
cpp_quote(" /* in */ REFIID riid, ")
cpp_quote(" /* out */ LPVOID *ppvObject, ")
cpp_quote(" /* out */ IUnknown **ppUnkKeepAlive);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleObjectFromMoniker(")
cpp_quote(" /* in */ BINDF bindf,")
cpp_quote(" /* in */ IMoniker *pmkOriginal,")
cpp_quote(" /* in */ IBindCtx *pBindCtx,")
cpp_quote(" /* in */ REFIID riid, ")
cpp_quote(" /* out */ LPVOID *ppvObject,")
cpp_quote(" /* out */ IMoniker **ppmkNew);")
cpp_quote("#endif // !MAC")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCombineURL(")
cpp_quote(" /* in */ LPCSTR pszBase,")
cpp_quote(" /* in */ ULONG cchBase,")
cpp_quote(" /* in */ LPCSTR pszURL,")
cpp_quote(" /* in */ ULONG cchURL,")
cpp_quote(" /* in */ BOOL fUnEscape,")
cpp_quote(" /* out */ LPSTR *ppszAbsolute);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetSubjectFileName(")
cpp_quote(" /* in */ IMimePropertySet *pPropertySet,")
cpp_quote(" /* out */ ULONG *pulPart,")
cpp_quote(" /* out */ ULONG *pulTotal,")
cpp_quote(" /* in,out */ LPSTR pszFileName,")
cpp_quote(" /* in */ ULONG cchMax);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateWebDocument(")
cpp_quote(" /* in */ LPCSTR pszBase,")
cpp_quote(" /* in */ LPCSTR pszURL,")
cpp_quote(" /* out */ IMimeWebDocument **ppDocument);")
cpp_quote(" ")
cpp_quote("MIMEOLEAPI MimeOleGetRelatedSection(")
cpp_quote(" /* in */ IMimeMessageTree *pTree,")
cpp_quote(" /* in */ boolean fCreate,")
cpp_quote(" /* out */ LPHBODY phRelated,")
cpp_quote(" /* out */ boolean *pfMultiple);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetMixedSection(")
cpp_quote(" /* in */ IMimeMessageTree *pTree,")
cpp_quote(" /* in */ boolean fCreate,")
cpp_quote(" /* out */ LPHBODY phMixed,")
cpp_quote(" /* out */ boolean *pfMultiple);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetAlternativeSection(")
cpp_quote(" /* in */ IMimeMessageTree *pTree,")
cpp_quote(" /* out */ LPHBODY phAlternative,")
cpp_quote(" /* out */ boolean *pfMultiple);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGenerateCID(")
cpp_quote(" /* in,out */ LPSTR pszCID,")
cpp_quote(" /* in */ ULONG cchMax,")
cpp_quote(" /* in */ boolean fAbsolute);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGenerateMID(")
cpp_quote(" /* in,out */ LPSTR pszMID,")
cpp_quote(" /* in */ ULONG cchMax,")
cpp_quote(" /* in */ boolean fAbsolute);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateByteStream(")
cpp_quote(" /* out */ IStream **ppStream);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetPropertySchema(")
cpp_quote(" /* out */ IMimePropertySchema **ppSchema);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleQueryString(")
cpp_quote(" /* in */ LPCSTR pszSearchMe,")
cpp_quote(" /* in */ LPCSTR pszCriteria,")
cpp_quote(" /* in */ boolean fSubString,")
cpp_quote(" /* in */ boolean fCaseSensitive);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetPropA(")
cpp_quote(" /* in */ IMimePropertySet *pPropertyset,")
cpp_quote(" /* in */ LPCSTR pszName,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* out */ LPSTR *ppszData);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSetPropA(")
cpp_quote(" /* in */ IMimePropertySet *pPropertyset,")
cpp_quote(" /* in */ LPCSTR pszName,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* in */ LPCSTR pszData);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetPropW(")
cpp_quote(" /* in */ IMimePropertySet *pPropertyset,")
cpp_quote(" /* in */ LPCSTR pszName,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* out */ LPWSTR *ppszData);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSetPropW(")
cpp_quote(" /* in */ IMimePropertySet *pPropertyset,")
cpp_quote(" /* in */ LPCSTR pszName,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* in */ LPWSTR pszData);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetBodyPropA(")
cpp_quote(" /* in */ IMimeMessageTree *pTree,")
cpp_quote(" /* in */ HBODY hBody,")
cpp_quote(" /* in */ LPCSTR pszName,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* out */ LPSTR *ppszData);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSetBodyPropA(")
cpp_quote(" /* in */ IMimeMessageTree *pTree,")
cpp_quote(" /* in */ HBODY hBody,")
cpp_quote(" /* in */ LPCSTR pszName,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* in */ LPCSTR pszData);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetBodyPropW(")
cpp_quote(" /* in */ IMimeMessageTree *pTree,")
cpp_quote(" /* in */ HBODY hBody,")
cpp_quote(" /* in */ LPCSTR pszName,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* out */ LPWSTR *ppszData);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSetBodyPropW(")
cpp_quote(" /* in */ IMimeMessageTree *pTree,")
cpp_quote(" /* in */ HBODY hBody,")
cpp_quote(" /* in */ LPCSTR pszName,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* in */ LPCWSTR pszData);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateHeaderTable(")
cpp_quote(" /* out */ IMimeHeaderTable **ppTable);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleVariantFree(")
cpp_quote(" /* in,out */ LPPROPVARIANT pProp);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleVariantCopy(")
cpp_quote(" /* out */ LPPROPVARIANT pDest, ")
cpp_quote(" /* in */ LPPROPVARIANT pSource);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetExtClassId(")
cpp_quote(" /* in */ LPCSTR pszExtension, ")
cpp_quote(" /* out */ LPCLSID pclsid);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleEncodeHeader(")
cpp_quote(" /* in */ HCHARSET hCharset, ")
cpp_quote(" /* in */ LPPROPVARIANT pData, ")
cpp_quote(" /* out */ LPSTR *ppszEncoded, ")
cpp_quote(" /* in,out */ LPRFC1522INFO pRfc1522Info);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleDecodeHeader(")
cpp_quote(" /* in */ HCHARSET hCharset, ")
cpp_quote(" /* in */ LPCSTR pszData, ")
cpp_quote(" /* out */ LPPROPVARIANT pDecoded, ")
cpp_quote(" /* in,out */ LPRFC1522INFO pRfc1522Info);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleRfc1522Decode(")
cpp_quote(" /* in */ LPCSTR pszValue,")
cpp_quote(" /* in */ LPSTR pszCharset, ")
cpp_quote(" /* in */ ULONG cchmax, ")
cpp_quote(" /* out */ LPSTR *ppszDecoded);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleRfc1522Encode(")
cpp_quote(" /* in */ LPCSTR pszValue, ")
cpp_quote(" /* in */ HCHARSET hCharset, ")
cpp_quote(" /* out */ LPSTR *ppszEncoded);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetInternat(")
cpp_quote(" /* out */ IMimeInternational **ppInternat);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleFindCharset(")
cpp_quote(" /* in */ LPCSTR pszCharset, ")
cpp_quote(" /* out */ LPHCHARSET phCharset);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetCharsetInfo(")
cpp_quote(" /* in */ HCHARSET hCharset, ")
cpp_quote(" /* out */ LPINETCSETINFO pCsetInfo);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetCodePageInfo(")
cpp_quote(" /* in */ CODEPAGEID cpiCodePage, ")
cpp_quote(" /* out */ LPCODEPAGEINFO pCodePageInfo);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetDefaultCharset(")
cpp_quote(" /* out */ LPHCHARSET phCharset);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSetDefaultCharset(")
cpp_quote(" /* in */ HCHARSET hCharset);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetCodePageCharset(")
cpp_quote(" /* in */ CODEPAGEID cpiCodePage, ")
cpp_quote(" /* in */ CHARSETTYPE ctCsetType, ")
cpp_quote(" /* out */ LPHCHARSET phCharset);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateVirtualStream(")
cpp_quote(" /* out */ IStream **ppStream);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleOpenFileStream(")
cpp_quote(" /* in */ LPCSTR pszFilePath, ")
cpp_quote(" /* in */ DWORD dwCreationDistribution, ")
cpp_quote(" /* in */ DWORD dwAccess, ")
cpp_quote(" /* out */ IStream **ppstmFile);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleIsTnefStream(")
cpp_quote(" /* in */ IStream *pStream);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGenerateFileName(")
cpp_quote(" /* in */ LPCSTR pszContentType, ")
cpp_quote(" /* in */ LPCSTR pszSuggest, ")
cpp_quote(" /* in */ LPCSTR pszDefaultExt, ")
cpp_quote(" /* in,out */ LPSTR *ppszFileName);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetFileExtension(")
cpp_quote(" /* in */ LPCSTR pszFilePath, ")
cpp_quote(" /* in,out */ LPSTR pszExt, ")
cpp_quote(" /* in */ ULONG cchMax);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateSecurity(")
cpp_quote(" /* out */ IMimeSecurity **ppSecurity);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleInetDateToFileTime(")
cpp_quote(" /* in */ LPCSTR pszDate, ")
cpp_quote(" /* out */ LPFILETIME pft);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleFileTimeToInetDate(")
cpp_quote(" /* in */ LPFILETIME pft, ")
cpp_quote(" /* in,out */ LPSTR pszDate, ")
cpp_quote(" /* in */ ULONG cchMax);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateMessageParts(")
cpp_quote(" /* out */ IMimeMessageParts **ppParts);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetAllocator(")
cpp_quote(" /* out */ IMimeAllocator **ppAllocator);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleParseRfc822Address(")
cpp_quote(" /* in */ DWORD dwAdrType,")
cpp_quote(" /* in */ ENCODINGTYPE ietEncoding,")
cpp_quote(" /* in */ LPCSTR pszRfc822Adr, ")
cpp_quote(" /* out */ LPADDRESSLIST pList);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateMessage(")
cpp_quote(" /* in */ IUnknown *pUnkOuter,")
cpp_quote(" /* out */ IMimeMessage **ppMessage);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleMergePartialHeaders(")
cpp_quote(" /* in */ IStream *pstmIn, ")
cpp_quote(" /* in */ IStream *pstmOut);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleEscapeString(")
cpp_quote(" /* in */ CODEPAGEID cpiCodePage, ")
cpp_quote(" /* in */ LPCSTR pszIn, ")
cpp_quote(" /* out */ LPSTR *ppszOut);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleUnEscapeStringInPlace(")
cpp_quote(" /* in, out*/ LPSTR pszIn);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetExtContentType(")
cpp_quote(" /* in */ LPCSTR pszExtension,")
cpp_quote(" /* out */ LPSTR *ppszContentType);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetExtContentTypeW(")
cpp_quote(" /* in */ LPCWSTR pszExtension,")
cpp_quote(" /* out */ LPWSTR *ppszContentType);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetContentTypeExt(")
cpp_quote(" /* in */ LPCSTR pszContentType, ")
cpp_quote(" /* out */ LPSTR *ppszExtension);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetFileInfo(")
cpp_quote(" /* in */ LPSTR pszFilePath, ")
cpp_quote(" /* out */ LPSTR *ppszCntType,")
cpp_quote(" /* out */ LPSTR *ppszSubType,")
cpp_quote(" /* out */ LPSTR *ppszCntDesc,")
cpp_quote(" /* out */ LPSTR *ppszFileName,")
cpp_quote(" /* out */ LPSTR *ppszExtension);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetFileInfoW(")
cpp_quote(" /* in */ LPWSTR pszFilePath, ")
cpp_quote(" /* out */ LPWSTR *ppszCntType,")
cpp_quote(" /* out */ LPWSTR *ppszSubType,")
cpp_quote(" /* out */ LPWSTR *ppszCntDesc,")
cpp_quote(" /* out */ LPWSTR *ppszFileName,")
cpp_quote(" /* out */ LPWSTR *ppszExtension);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateBody(")
cpp_quote(" /* out */ IMimeBody **ppBody);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreatePropertySet(")
cpp_quote(" /* in */ IUnknown *pUnkOuter, ")
cpp_quote(" /* out */ IMimePropertySet **ppPropertySet);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateMessageTree(")
cpp_quote(" /* in */ IUnknown *pUnkOuter, ")
cpp_quote(" /* out */ IMimeMessageTree **ppMessageTree);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleGetCertsFromThumbprints(")
cpp_quote(" /* in */ THUMBBLOB *const rgThumbprint,")
cpp_quote(" /* in,out */ X509CERTRESULT *const pResults,")
cpp_quote(" /* in */ const HCERTSTORE *const rghCertStore,")
cpp_quote(" /* in */ const DWORD cCertStore);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSplitMessage(")
cpp_quote(" /* in */ IMimeMessage *pMessage,")
cpp_quote(" /* in */ ULONG cbMaxPart,")
cpp_quote(" /* out */ IMimeMessageParts **ppParts);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleClearDirtyTree(")
cpp_quote(" /* in */ IMimeMessageTree *pTree);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleConvertEnrichedToHTML(")
cpp_quote(" /* in */ CODEPAGEID codepage,")
cpp_quote(" /* in */ IStream *pIn,")
cpp_quote(" /* in */ IStream *pOut);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleIsEnrichedStream(")
cpp_quote(" /* in */ IStream *pStream);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapsToDlg(")
cpp_quote(" /* in */ LPBYTE pbSMimeCaps,")
cpp_quote(" /* in */ DWORD cbSMimeCaps,")
cpp_quote(" /* in */ DWORD cCerts,")
cpp_quote(" /* in */ PCX509CERT * rgCerts,")
cpp_quote(" /* in */ HWND hwndDlg,")
cpp_quote(" /* in */ DWORD idEncAlgs,")
cpp_quote(" /* in */ DWORD idSignAlgs,")
cpp_quote(" /* in */ DWORD idBlob);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapsFromDlg(")
cpp_quote(" /* in */ HWND hwnd,")
cpp_quote(" /* in */ DWORD idEncAlgs,")
cpp_quote(" /* in */ DWORD idSignAlgs,")
cpp_quote(" /* in */ DWORD idBlob,")
cpp_quote(" /* in/out */ LPBYTE pbSMimeCaps,")
cpp_quote(" /* in/out */ DWORD * pcbSmimeCaps);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapInit(")
cpp_quote(" /* in */ LPBYTE pbSMimeCap,")
cpp_quote(" /* in */ DWORD cbSMimeCap,")
cpp_quote(" /* out */ LPVOID * ppv);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapAddSMimeCap(")
cpp_quote(" /* in */ LPBYTE pbSMimeCap,")
cpp_quote(" /* in */ DWORD cbSMimeCap,")
cpp_quote(" /* in/out */ LPVOID pv);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapAddCert(")
cpp_quote(" /* in */ LPBYTE pbCert,")
cpp_quote(" /* in */ DWORD cbCert,")
cpp_quote(" /* in */ BOOL fParanoid,")
cpp_quote(" /* in/out */ LPVOID pv);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapGetEncAlg(")
cpp_quote(" /* in */ LPVOID pv,")
cpp_quote(" /* in/out */ LPBYTE pbEncode,")
cpp_quote(" /* in/out */ DWORD * pcbEncode,")
cpp_quote(" /* in/out */ DWORD * pdwBits);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapGetHashAlg(")
cpp_quote(" /* in */ LPVOID pv,")
cpp_quote(" /* in/out */ LPBYTE pbEncode,")
cpp_quote(" /* in/out */ DWORD * pcbEncode,")
cpp_quote(" /* in/out */ DWORD * pfBlobSign);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapRelease(")
cpp_quote(" /* in */ LPVOID pv);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleAlgNameFromSMimeCap(")
cpp_quote(" /* in */ LPBYTE pb,")
cpp_quote(" /* in */ DWORD cb,")
cpp_quote(" /* out */ LPCSTR * ppzProtocol);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleAlgStrengthFromSMimeCap(")
cpp_quote(" /* in */ LPBYTE pb,")
cpp_quote(" /* in */ DWORD cb,")
cpp_quote(" /* in */ BOOL fEncryption,")
cpp_quote(" /* out */ DWORD * pdwStrength);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleSMimeCapsFull(")
cpp_quote(" /* in */ LPVOID pv,")
cpp_quote(" /* in */ BOOL fFullEncryption,")
cpp_quote(" /* in */ BOOL fFullSigning,")
cpp_quote(" /* in/out */ LPBYTE pbSymCaps,")
cpp_quote(" /* in/out */ DWORD * pcbSymCaps);")
cpp_quote("")
cpp_quote("")
cpp_quote("#if (_WIN32_OE >= 0x0500)")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleCreateHashTable(")
cpp_quote(" /* in */ DWORD dwSize,")
cpp_quote(" /* in */ BOOL fDupeKeys,")
cpp_quote(" /* out */ IHashTable **ppHashTable);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleStripHeaders(")
cpp_quote(" /* in */ IMimeMessage *pMessage,")
cpp_quote(" /* in */ HBODY hBody,")
cpp_quote(" /* in */ LPCSTR pszNameDelete,")
cpp_quote(" /* in */ LPCSTR pszHeaderAdd,")
cpp_quote(" /* in */ IStream **ppStream);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeOleParseRfc822AddressW(")
cpp_quote(" /* in */ DWORD dwAdrType,")
cpp_quote(" /* in */ LPCWSTR pwszRfc822Adr, ")
cpp_quote(" /* out */ LPADDRESSLIST pList);")
cpp_quote("")
cpp_quote("#endif //_WIN32_OE")
cpp_quote("")
cpp_quote("#if (_WIN32_OE >= 0x0500)")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// MimeEdit API Prototypes")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("MIMEOLEAPI MimeEditViewSource(")
cpp_quote(" /* in */ HWND hwndParent,")
cpp_quote(" /* in */ IMimeMessage *pMsg);")
cpp_quote("")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeEditIsSafeToRun(")
cpp_quote(" /* in */ HWND hwndParent,")
cpp_quote(" /* in */ LPCSTR lpszFileName,")
cpp_quote(" /* in */ BOOL fPrompt);")
cpp_quote("")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeEditVerifyTrust(")
cpp_quote(" /* in */ HWND hwndParent,")
cpp_quote(" /* in */ LPCSTR lpszFileName,")
cpp_quote(" /* in */ LPCSTR lpszPathName);")
cpp_quote("")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeEditCreateMimeDocument(")
cpp_quote(" /* in */ IUnknown *pDoc,")
cpp_quote(" /* in */ IMimeMessage *pMsgSrc,")
cpp_quote(" /* in */ DWORD dwFlags,")
cpp_quote(" /* out */ IMimeMessage **ppMsg);")
cpp_quote("")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeEditGetBackgroundImageUrl(")
cpp_quote(" /* in */ IUnknown *pDoc,")
cpp_quote(" /* out */ BSTR *pbstr);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeEditDocumentFromStream(")
cpp_quote(" /* in */ IStream *pstm,")
cpp_quote(" /* in */ REFIID riid,")
cpp_quote(" /* out */ void **ppDoc);")
cpp_quote("")
cpp_quote("MIMEOLEAPI MimeGetAddressFormatW(")
cpp_quote(" /* in */ REFIID riid,")
cpp_quote(" /* in */ LPVOID pvObject,")
cpp_quote(" /* in */ DWORD dwAdrType,")
cpp_quote(" /* in */ ADDRESSFORMAT format,")
cpp_quote(" /* out */ LPWSTR *ppszFormat);")
cpp_quote("")
cpp_quote("#endif //_WIN32_OE")
cpp_quote("")
cpp_quote("#if (_WIN32_OE >= 0x501)")
//cpp_quote("#if (_WIN32_OE >= 0x500)")
cpp_quote("#ifdef __WINCRYPT_H__")
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("// RecipientID")
cpp_quote("//")
cpp_quote("// The value of dwRecepintType MUST be 0.")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#define szOID_Microsoft_Encryption_Cert \"1.3.6.1.4.1.311.16.4\"")
cpp_quote("typedef struct _CRYPT_RECIPIENT_ID {")
cpp_quote(" DWORD dwRecipientType;")
cpp_quote(" CERT_NAME_BLOB Issuer;")
cpp_quote(" CRYPT_INTEGER_BLOB SerialNumber;")
cpp_quote("} CRYPT_RECIPIENT_ID, * PCRYPT_RECIPIENT_ID;")
cpp_quote("")
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("// Sequence of attributes")
cpp_quote("//")
cpp_quote("// Used when setting and retrieving attributes on the property interfaces")
cpp_quote("// -- Uses the CRYPT_ATTRIBUTES structure")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#define szOID_Microsoft_Attribute_Sequence \"1.3.6.1.4.1.311.16.1.1\"")
cpp_quote("")
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("// SMime Encryption Key Preference")
cpp_quote("//")
cpp_quote("// This is an signed attribute used to convey the perfered encrytion")
cpp_quote("// certificate")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#define szOID_SMIME_Encryption_Key_Preference \"1.2.840.113549.1.9.16.2.11\"")
cpp_quote("typedef struct _SMIME_ENC_KEY_PREFERNCE {")
cpp_quote(" CERT_ID RecipientId;")
cpp_quote("")
cpp_quote(" // Following fields are optional and only appliciable to KEY_IDENTIFIER")
cpp_quote(" FILETIME Date;")
cpp_quote(" PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;")
cpp_quote("} SMIME_ENC_KEY_PREFERENCE, *PSMIME_ENC_KEY_PREFERENCE;")
cpp_quote("")
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("// Signing Certificate (defined in Enhanced Security Services for S/MIME)")
cpp_quote("//")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#define szOID_SMIME_Signing_Certificate \"1.2.840.113549.1.9.16.2.12\"")
cpp_quote("typedef struct _SMIME_ESS_CERTID {")
cpp_quote(" CRYPT_HASH_BLOB Hash;")
cpp_quote(" CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber;")
cpp_quote("} SMIME_ESS_CERTID, *PSMIME_ESS_CERTID;")
cpp_quote("")
cpp_quote("typedef struct _SMIME_SIGNING_CERTIFICATE {")
cpp_quote(" DWORD cCertificates;")
cpp_quote(" PSMIME_ESS_CERTID rgCertificates;")
cpp_quote(" DWORD cPolicies;")
cpp_quote(" CERT_POLICY_INFO * rgPolicies;")
cpp_quote("} SMIME_SIGNING_CERTIFICATE, *PSMIME_SIGNING_CERTIFICATE;")
cpp_quote("")
cpp_quote("#endif // __WINCRYPT_H__")
cpp_quote("")
cpp_quote("#ifdef __WINCRYPT_H__")
cpp_quote("// {ba715ae0-a740-11d2-8b22-0080c76b34c6}")
cpp_quote("DEFINE_GUID(IID_IMimeSecurityCallback, 0xba715ae0, 0xa740, 0x11d2, 0x8b, 0x22, 0x00, 0x80, 0xc7, 0x6b, 0x34, 0xc6);")
// ----------------------------------------------------------------------
// IID_IMimeSecurityCallback
// ----------------------------------------------------------------------
[
uuid(ba715ae0-a740-11d2-8b22-0080c76b34c6),
local,
helpstring("IMimeSecurityCallback"),
]
interface IMimeSecurityCallback : IUnknown
{
cpp_quote("")
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("")
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("")
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("")
typedef struct tagCMS_RECIPIENT_INFO {
DWORD dwRecipientType;
PCCERT_CONTEXT pccert;
CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
void * pvKeyEncryptionAuxInfo;
DWORD cbKeyEncryptionAuxInfo;
CRYPT_ALGORITHM_IDENTIFIER KeyWrapAlgorithm;
void * pvKeyWrapAuxInfo;
DWORD cbKeyWrapAuxInfo;
DWORD dwU1;
[switch_type(DWORD), switch_is(dwU1)]
union {
[case(1)] CRYPT_BIT_BLOB SubjectPublicKey;
[case(2)] struct {
HCRYPTPROV hprov;
HCRYPTKEY hkey;
} u2;
[case(3)] struct {
CRYPT_DATA_BLOB UserKeyingMaterial;
CRYPT_ALGORITHM_IDENTIFIER EphemeralAlgorithm;
CRYPT_BIT_BLOB SubjectPublicKey;
} u3;
[case(4)] struct {
CRYPT_DATA_BLOB UserKeyingMaterial;
HCRYPTPROV hprov;
DWORD dwKeySpec;
CERT_ID senderCertId;
CRYPT_BIT_BLOB SubjectPublicKey;
} u4;
} u1;
// KEY ID
//
// Key Ids are:
// 1) IssuerAndSerialNumber
// 2) SKI + filetime + attributes
// 3) KI + filetime + attributes
//
DWORD dwU3;
[switch_type(DWORD), switch_is(dwU3)]
union {
[case(1)] CERT_ISSUER_SERIAL_NUMBER IssuerSerial;
[case(2)] CRYPT_DATA_BLOB KeyId;
} u3;
FILETIME filetime;
PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
} CMS_RECIPIENT_INFO, *PCMS_RECIPIENT_INFO;
typedef union tagCMS_CTRL_DECRYPT_INFO {
CMSG_CTRL_KEY_TRANS_DECRYPT_PARA trans;
CMSG_CTRL_KEY_AGREE_DECRYPT_PARA agree;
CMSG_CTRL_MAIL_LIST_DECRYPT_PARA maillist;
} CMS_CTRL_DECRYPT_INFO, *PCMS_CTRL_DECYRPT_INFO;
HRESULT FindKeyFor(
[in] HWND hwnd,
[in] DWORD dwFlags,
[in] DWORD dwRecipientIndex,
[in] const CMSG_CMS_RECIPIENT_INFO * pRecipInfo,
[out] DWORD * pdwCtrl,
[in,out] CMS_CTRL_DECRYPT_INFO * pDecryptInfo,
[out] PCCERT_CONTEXT * ppccert);
HRESULT GetParameters(
[in] PCCERT_CONTEXT pccert,
[in] HCERTSTORE hstoreMsg,
[in,out] DWORD * pcbParams,
[in,out] BYTE ** pbParams);
}
cpp_quote("// {80830b40-962c-11d2-8af6-0080c76b34c6}")
cpp_quote("DEFINE_GUID(IID_IMimeSecurity2, 0x80830b40, 0x962c, 0x11d2, 0x8a, 0xf6, 0x00, 0x80, 0xc7, 0x6b, 0x34, 0xc6);")
//cpp_quote("// {C0830b40-962c-11d2-8af6-0080c76b34c6}")
//cpp_quote("DEFINE_GUID(CLSID_IMimeSecurity2, 0xC0830b40, 0x962c, 0x11d2, 0x8a, 0xf6, 0x00, 0x80, 0xc7, 0x6b, 0x34, 0xc6);")
cpp_quote("")
cpp_quote("#define SMIME_RECIPIENT_REPLACE_ALL 0x00000001")
cpp_quote("")
cpp_quote("#define SMIME_ATTRIBUTE_SET_SIGNED 0")
cpp_quote("#define SMIME_ATTRIBUTE_SET_UNSIGNED 1")
cpp_quote("#define SMIME_ATTRIBUTE_SET_UNPROTECTED 2")
cpp_quote("")
cpp_quote("#define SMIME_ATTR_REPLACE_EXISTING 0")
cpp_quote("#define SMIME_ATTR_ADD_TO_EXISTING 1")
cpp_quote("#define SMIME_ATTR_ADD_IF_NOT_EXISTS 2")
cpp_quote("")
cpp_quote("#define SMIME_SUPPORT_LABELS 0x00000001")
cpp_quote("#define SMIME_SUPPORT_RECEIPTS 0x00000002")
cpp_quote("#define SMIME_SUPPORT_MAILLIST 0x00000004")
cpp_quote("#define SMIME_SUPPORT_KEY_AGREE 0x00000008")
cpp_quote("")
// ---------------------------------------------------------------------------------
// IID_IMimeSecurity2
// ---------------------------------------------------------------------------------
[
uuid(80830b40-962c-11d2-8af6-0080c76b34c6),
local,
helpstring("IMimeSecurity2"),
]
interface IMimeSecurity2 : IUnknown
{
HRESULT Encode(
[in] HWND hwnd,
[in] DWORD dwFlags);
HRESULT Decode(
[in] HWND hwnd,
[in] DWORD dwFlags,
[in] IMimeSecurityCallback * pCallback);
HRESULT GetRecipientCount(
[in] DWORD dwFlags,
[out] DWORD * pdwRecipCount);
HRESULT AddRecipient(
[in] DWORD dwFlags,
[in] DWORD cRecipData,
[in] PCMS_RECIPIENT_INFO recipData);
HRESULT GetRecipient(
[in] DWORD dwFlags,
[in] DWORD iRecipient,
[in] DWORD cRecipients,
[in,out] PCMS_RECIPIENT_INFO pRecipData);
HRESULT DeleteRecipient(
[in] DWORD dwFlags,
[in] DWORD iRecipent,
[in] DWORD cRecipients);
HRESULT GetAttribute(
[in] DWORD dwFlags,
[in] DWORD iSigner,
[in] DWORD iAttributeSet,
[in] DWORD iInstance,
[in] LPCSTR pszObjectId,
[out] CRYPT_ATTRIBUTE ** ppattr);
HRESULT SetAttribute(
[in] DWORD dwFlags,
[in] DWORD iSigner,
[in] DWORD iAttributeSet,
[in] const CRYPT_ATTRIBUTE * pattr);
HRESULT DeleteAttribute(
[in] DWORD dwFlags,
[in] DWORD iSigner,
[in] DWORD iAttributeSet,
[in] DWORD iInstance,
[in] LPCSTR pszObjId);
HRESULT CreateReceipt(
[in] DWORD dwFlags,
[in] DWORD cbFromNames,
[in] const BYTE * pbFromNames,
[in] DWORD cSignerCertificates,
[in] PCCERT_CONTEXT * rgSignerCertificates,
[out] IMimeMessage ** ppMimeMessageReceipt);
HRESULT GetReceiptSendersList(
[in] DWORD dwFlags,
[out] DWORD * pcSendersList,
[out] CERT_NAME_BLOB ** rgSendersList);
HRESULT VerifyReceipt(
[in] DWORD dwFlags,
[in] IMimeMessage * pMimeMessageReceipt);
HRESULT CapabilitiesSupported(
[in,out] DWORD * pdwFeatures);
}
cpp_quote("#define MST_RECEIPT_REQUEST 0x00010000")
cpp_quote("")
cpp_quote("#define szOID_SMIME_ContentType_Receipt \"1.2.840.113549.1.9.16.1.1\"")
cpp_quote("#define szOID_SMIME_Receipt_Request \"1.2.840.113549.1.9.16.2.1\"")
cpp_quote("#define szOID_SMIME_Security_Label \"1.2.840.113549.1.9.16.2.2\"")
cpp_quote("#define szOID_SMIME_MLExpansion_History \"1.2.840.113549.1.9.16.2.3\"")
cpp_quote("#define szOID_SMIME_Content_Hints \"1.2.840.113549.1.9.16.2.4\"")
cpp_quote("#define szOID_SMIME_Msg_Sig_Digest \"1.2.840.113549.1.9.16.2.5\"")
cpp_quote("#define szOID_SMIME_Content_Identifer \"1.2.840.113549.1.9.16.2.7\"")
cpp_quote("#define szOID_SMIME_Content_PublishCert \"1.2.840.113549.1.9.16.1.3\"")
cpp_quote("")
cpp_quote("typedef struct {")
cpp_quote(" LPWSTR pszDescription; // Content hint description. Set to")
cpp_quote(" // Null to omit.")
cpp_quote(" LPSTR pszOIDContent;")
cpp_quote("} SMIME_CONTENT_HINTS, *PSMIME_CONTENT_HINTS;")
cpp_quote("")
cpp_quote("")
cpp_quote("//+----------------------------------------------------------------------------")
cpp_quote("")
cpp_quote("#define SMIME_RECEIPTS_FROM_ALL 0 // Everyone returns a receipt")
cpp_quote("#define SMIME_RECEIPTS_FROM_FIRST_TIER 1 // Only first tier receipients")
cpp_quote("")
cpp_quote("typedef struct _SMIME_RECEIPTS_FROM {")
cpp_quote(" DWORD AllOrFirstTier; // Valid only if cNames == 0")
cpp_quote(" DWORD cNames;")
cpp_quote(" CERT_NAME_BLOB * rgNames;")
cpp_quote("} SMIME_RECEIPTS_FROM;")
cpp_quote("")
cpp_quote("typedef struct _SMIME_RECEIPT_REQUEST {")
cpp_quote(" DATA_BLOB ContentIdentifier;")
cpp_quote(" SMIME_RECEIPTS_FROM ReceiptsFrom;")
cpp_quote(" DWORD cReceiptsTo;")
cpp_quote(" CERT_NAME_BLOB * rgReceiptsTo;")
cpp_quote("} SMIME_RECEIPT_REQUEST, *PSMIME_RECEIPT_REQUEST;")
cpp_quote("")
cpp_quote("typedef struct _SMIME_RECEIPT {")
cpp_quote(" DWORD Version;")
cpp_quote(" LPSTR pszOIDContent;")
cpp_quote(" DATA_BLOB ContentIdentifier;")
cpp_quote(" DATA_BLOB OriginatorSignature;")
cpp_quote("} SMIME_RECEIPT, *PSMIME_RECEIPT;")
cpp_quote("")
cpp_quote("//////////////////////////////////////////////////////////////////////////")
cpp_quote("")
cpp_quote("#define SMIME_MLPOLICY_NO_CHANGE 0 // No change on receipt processing")
cpp_quote("#define SMIME_MLPOLICY_NONE 1 // Don't return a receipt")
cpp_quote("#define SMIME_MLPOLICY_INSTEAD_OF 2 // Return receipt to these names")
cpp_quote("#define SMIME_MLPOLICY_IN_ADDITION_TO 3 // Also receipt to these names")
cpp_quote("")
cpp_quote("#define SMIME_MLDATA_ISSUER_SERIAL_NUMBER 1")
cpp_quote("#define SMIME_MLDATA_SUBJECT_KEY_IDENTIFIER 2")
cpp_quote("")
cpp_quote("typedef struct _SMIME_MLDATA {")
cpp_quote(" DWORD dwChoice;")
cpp_quote(" struct { // Isser and serial number and")
cpp_quote(" CRYPT_INTEGER_BLOB SerialNumber; // SubjectPublicKeyInfo are mutually")
cpp_quote(" CERT_NAME_BLOB Issuer; // exclusive. Only one should be set.")
cpp_quote(" } u;")
cpp_quote(" CRYPT_DATA_BLOB SubjectKeyIdentifier;")
cpp_quote("")
cpp_quote(" FILETIME ExpansionTime;")
cpp_quote("")
cpp_quote(" DWORD dwPolicy;")
cpp_quote(" DWORD cNames;")
cpp_quote(" CERT_NAME_BLOB * rgNames;")
cpp_quote("} SMIME_MLDATA, *PSMIME_MLDATA;")
cpp_quote("")
cpp_quote("typedef struct _SMIME_ML_EXPANSION_HISTORY {")
cpp_quote(" DWORD cMLData;")
cpp_quote(" SMIME_MLDATA * rgMLData;")
cpp_quote("} SMIME_ML_EXPANSION_HISTORY, *PSMIME_ML_EXPANSION_HISTORY;")
cpp_quote("")
cpp_quote("//////////////////////////////////////////////////////////////////////////")
cpp_quote("")
typedef struct _SMIME_SECURITY_LABEL {
LPSTR pszObjIdSecurityPolicy;
DWORD fHasClassification; // TRUE if dwClassification is set
DWORD dwClassification;
LPWSTR wszPrivacyMark; // Optional;
DWORD cCategories;
CRYPT_ATTRIBUTE_TYPE_VALUE * rgCategories;
} SMIME_SECURITY_LABEL, *PSMIME_SECURITY_LABEL;
cpp_quote("")
cpp_quote("#endif // __WINCRYPT_H__")
cpp_quote("")
cpp_quote("#endif //_WIN32_OE")
cpp_quote("#ifdef __cplusplus")
cpp_quote("}")
cpp_quote("#endif")