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.
 
 
 
 
 
 

621 lines
18 KiB

//---------------------------------------------------------------------------
// OERules.idl
//---------------------------------------------------------------------------
import "objidl.idl";
import "ocidl.idl";
import "mimeole.idl";
import "oestore.idl";
//---------------------------------------------------------------------------
// Interfaces
//---------------------------------------------------------------------------
interface IOERulesManager;
interface IOEEnumRules;
interface IOEExecRules;
interface IOERule;
interface IOECriteria;
interface IOEActions;
// Make sure we only bring in this file only once
cpp_quote("// Bring in only once")
cpp_quote("#if _MSC_VER > 1000")
cpp_quote("#pragma once")
cpp_quote("#endif")
cpp_quote("")
//---------------------------------------------------------------------------
// HRESULT Macros
//---------------------------------------------------------------------------
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("")
typedef struct tagRULEFOLDERDATA
{
FILETIME ftStamp;
FOLDERID idFolder;
} RULEFOLDERDATA, * PRULEFOLDERDATA;
typedef enum tagRULE_TYPE
{
RULE_TYPE_MAIL = 0,
RULE_TYPE_NEWS,
RULE_TYPE_FILTER,
RULE_TYPE_MAX
} RULE_TYPE;
typedef DWORD RULE_SESSION;
typedef enum tagACT_TYPE
{
ACT_TYPE_NULL = 0,
ACT_TYPE_COPY,
ACT_TYPE_FWD,
ACT_TYPE_NOTIFYMSG,
ACT_TYPE_NOTIFYSND,
ACT_TYPE_REPLY,
ACT_TYPE_MOVE,
ACT_TYPE_DELETE,
ACT_TYPE_DELETESERVER,
ACT_TYPE_DONTDOWNLOAD,
ACT_TYPE_HIGHLIGHT,
ACT_TYPE_FLAG,
ACT_TYPE_STOP,
ACT_TYPE_READ,
ACT_TYPE_MARKDOWNLOAD,
ACT_TYPE_SHOW,
ACT_TYPE_JUNKMAIL,
ACT_TYPE_WATCH,
ACT_TYPE_MAX
} ACT_TYPE;
const DWORD ACT_FLAG_DEFAULT = 0x00000000;
const DWORD ACT_FLAG_INVERT = 0x00000001;
typedef struct tagACT_ITEM
{
ACT_TYPE type;
DWORD dwFlags;
PROPVARIANT propvar;
} ACT_ITEM, * PACT_ITEM;
typedef struct tagRULEINFO
{
RULEID ridRule;
IOERule * pIRule;
} RULEINFO, *PRULEINFO;
//---------------------------------------------------------------------------
// Rules Manager IDs
//---------------------------------------------------------------------------
// For Rules
const RULEID RULEID_JUNK = (RULEID) -3;
const RULEID RULEID_SENDERS = (RULEID) -2;
// For Views
const RULEID RULEID_VIEW_ALL = (RULEID) 0x00000FFA;
const RULEID RULEID_VIEW_UNREAD = (RULEID) 0x00000FFB;
const RULEID RULEID_VIEW_DOWNLOADED = (RULEID) 0x00000FFC;
const RULEID RULEID_VIEW_DELETED = (RULEID) 0x00000FFD;
const RULEID RULEID_VIEW_REPLIES = (RULEID) 0x00000FFE;
const RULEID RULEID_VIEW_IGNORED = (RULEID) 0x00000FFF;
//---------------------------------------------------------------------------
// Rules Manager HRESULTs
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// IOERulesManager interface
//---------------------------------------------------------------------------
[
object,
uuid(626bafe0-e5d6-11d1-b1dd-006097d503d9),
pointer_default(unique),
version(1.0)
]
interface IOERulesManager : IUnknown
{
const DWORD RULESMGR_VERSION = 0x00050000;
HRESULT Initialize(
[in] DWORD dwFlags);
HRESULT GetRule(
[in] RULEID ridRule,
[in] RULE_TYPE type,
[in] DWORD dwFlags,
[out] IOERule ** ppIRule);
HRESULT FindRule(
[in] LPCSTR pszRuleName,
[in] RULE_TYPE type,
[out] IOERule ** ppIRule);
const DWORD GETF_ALL = 0x00000000;
const DWORD GETF_EDIT = 0x00000001;
const DWORD GETF_SENDER = 0x00000002;
const DWORD GETF_JUNK = 0x00000004;
const DWORD GETF_POP3 = 0x00000008;
const DWORD GETF_NNTP = 0x00000010;
const DWORD GETF_IMAP = 0x00000020;
const DWORD GETF_HTTPMAIL = 0x00000040;
HRESULT GetRules(
[in] DWORD dwFlags,
[in] RULE_TYPE typeRule,
[in] RULEINFO ** ppinfoRule,
[in] ULONG * pcpinfoRule);
const DWORD SETF_APPEND = 0x00000000;
const DWORD SETF_CLEAR = 0x00000001;
const DWORD SETF_SENDER = 0x00000002;
const DWORD SETF_JUNK = 0x00000004;
const DWORD SETF_REPLACE = 0x00000008;
HRESULT SetRules(
[in] DWORD dwFlags,
[in] RULE_TYPE typeRule,
[in] RULEINFO * pinfoRule,
[in] ULONG cpIRule);
const DWORD ENUMF_ALL = 0x00000001;
const DWORD ENUMF_EDIT = 0x00000002;
const DWORD ENUMF_SENDER = 0x00000004;
const DWORD ENUMF_POP3 = 0x00000008;
const DWORD ENUMF_NNTP = 0x00000010;
const DWORD ENUMF_IMAP = 0x00000020;
const DWORD ENUMF_HTTPMAIL = 0x00000040;
HRESULT EnumRules(
[in] DWORD dwFlags,
[in] RULE_TYPE type,
[out] IOEEnumRules ** ppIEnumRules);
HRESULT GetState(
[in] RULE_TYPE type,
[in] DWORD dwFlags,
[out] DWORD * pdwState);
const DWORD EXECF_ALL = 0x00000001;
const DWORD EXECF_APPLY = 0x00000002;
HRESULT ExecRules(
[in] DWORD dwFlags,
[in] RULE_TYPE type,
[out] IOEExecRules ** ppIExecRules);
HRESULT ExecuteRules(
[in] RULE_TYPE typeRule,
[in] DWORD dwFlags,
[in] HWND hwndUI,
[in] IOEExecRules * pIExecRules,
[in] MESSAGEINFO * pMsgInfo,
[in] IMessageFolder * pFolder,
[in] IMimeMessage * pIMMsg);
};
//---------------------------------------------------------------------------
// Interface IOEEnumRules
//---------------------------------------------------------------------------
[
object,
uuid(626bafe2-e5d6-11d1-b1dd-006097d503d9),
pointer_default(unique),
version(1.0)
]
interface IOEEnumRules : IUnknown
{
typedef [unique] IOEEnumRules *LPENUMRULES;
HRESULT Next(
[in] ULONG cpIRule,
[out, size_is(cpIRule), length_is(*pcpIRuleFetched)]
IOERule ** rgpIRule,
[out] ULONG * pcpIRuleFetched);
HRESULT Skip(
[in] ULONG cpIRule);
HRESULT Reset();
HRESULT Clone(
[out] IOEEnumRules ** ppIEnumRules);
};
//---------------------------------------------------------------------------
// Interface IOEExecRules
//---------------------------------------------------------------------------
[
object,
uuid(626bafe4-e5d6-11d1-b1dd-006097d503d9),
pointer_default(unique),
version(1.0)
]
interface IOEExecRules : IUnknown
{
typedef [unique] IOEExecRules *LPEXECRULES;
HRESULT GetState(
[out] DWORD * pdwState);
const DWORD ERF_ONLYSERVER = 0x00000001;
const DWORD ERF_NOSERVER = 0x00000002;
const DWORD ERF_SKIPPARTIALS = 0x00000004;
HRESULT ExecuteRules(
[in] DWORD dwFlags,
[in] LPCSTR pszAcct,
[in] MESSAGEINFO * pMsgInfo,
[in] IMessageFolder * pFolder,
[in] IMimePropertySet * pIMPropSet,
[in] IMimeMessage * pIMMsg,
[in] ULONG cbMsgSize,
[out] ACT_ITEM ** ppActions,
[out] ULONG * pcActions);
HRESULT ReleaseObjects();
HRESULT GetRuleFolder(
[in] FOLDERID idfolder,
[out] DWORD_PTR * pdwFolder);
const DWORD RFT_FILE = 0x00000000;
const DWORD RFT_HTML = 0x00000001;
const DWORD RFT_TEXT = 0x00000002;
const DWORD RFT_MESSAGE = 0x00000003;
HRESULT GetRuleFile(
[in] LPCSTR pszFile,
[out] IStream ** ppstmFile,
[out] DWORD * pdwType);
const DWORD ASF_PLAYIFNEW = 0x00000001;
HRESULT AddSoundFile(
[in] DWORD dwFlags,
[in] LPCSTR pszSndFile);
HRESULT PlaySounds(
[in] DWORD dwFlags);
};
//---------------------------------------------------------------------------
// Interface IOERule
//---------------------------------------------------------------------------
[
object,
uuid(626bafe6-e5d6-11d1-b1dd-006097d503d9),
pointer_default(unique),
version(1.0)
]
interface IOERule : IUnknown
{
typedef enum tagRULE_PROP
{
RULE_PROP_NAME = 0,
RULE_PROP_DISABLED,
RULE_PROP_CRITERIA,
RULE_PROP_ACTIONS,
RULE_PROP_STATE,
RULE_PROP_VERSION,
RULE_PROP_READONLY,
RULE_PROP_JUNKPCT,
RULE_PROP_EXCPT_WAB,
RULE_PROP_MAX
} RULE_PROP;
HRESULT Reset();
const DWORD RULE_STATE_NULL = 0x00000000;
const DWORD RULE_STATE_HEADER = 0x00000001;
const DWORD RULE_STATE_ALL = 0x00000002;
HRESULT GetState(
[out] DWORD * pdwState);
HRESULT Validate(
[in] DWORD dwFlags);
HRESULT GetProp(
[in] RULE_PROP prop,
[in] DWORD dwFlags,
[in, out] PROPVARIANT * pvarResult);
HRESULT SetProp(
[in] RULE_PROP prop,
[in] DWORD dwFlags,
[in] PROPVARIANT * pvarValue);
HRESULT Evaluate(
[in] LPCSTR pszAcct,
[in] MESSAGEINFO * pMsgInfo,
[in] IMessageFolder * pFolder,
[in] IMimePropertySet * pIMPropSet,
[in] IMimeMessage * pIMMsg,
[in] ULONG cbMsgSize,
[out] ACT_ITEM ** ppActions,
[out] ULONG * pcActions);
HRESULT LoadReg(
[in] LPCSTR szRegPath);
HRESULT SaveReg(
[in] LPCSTR szRegPath,
[in] BOOL fClearDirty);
HRESULT Clone(
[out] IOERule ** ppIRule);
};
//---------------------------------------------------------------------------
// Interface IOECriteria
//---------------------------------------------------------------------------
[
object,
uuid(626bafe8-e5d6-11d1-b1dd-006097d503d9),
pointer_default(unique),
version(1.0)
]
interface IOECriteria : IUnknown
{
typedef enum tagCRIT_TYPE
{
CRIT_TYPE_NULL = 0,
CRIT_TYPE_NEWSGROUP,
CRIT_TYPE_TOME,
CRIT_TYPE_CCME,
CRIT_TYPE_BCCME,
CRIT_TYPE_TOADDR,
CRIT_TYPE_CCADDR,
CRIT_TYPE_FROMADDR,
CRIT_TYPE_SUBJECT,
CRIT_TYPE_BODY,
CRIT_TYPE_TO,
CRIT_TYPE_CC,
CRIT_TYPE_FROM,
CRIT_TYPE_PRIORITY,
CRIT_TYPE_ATTACH,
CRIT_TYPE_SIZE,
CRIT_TYPE_DATE,
CRIT_TYPE_HEADER,
CRIT_TYPE_JUNK,
CRIT_TYPE_ACCOUNT,
CRIT_TYPE_ALL,
CRIT_TYPE_TOORCCADDR,
CRIT_TYPE_TOORCC,
CRIT_TYPE_SENDER,
CRIT_TYPE_REPLIES,
CRIT_TYPE_DOWNLOADED,
CRIT_TYPE_DELETED,
CRIT_TYPE_THREADSTATE,
CRIT_TYPE_READ,
CRIT_TYPE_LINES,
CRIT_TYPE_AGE,
CRIT_TYPE_SECURE,
CRIT_TYPE_FLAGGED,
CRIT_TYPE_MAX
} CRIT_TYPE;
const DWORD CRIT_FLAG_DEFAULT = 0x00000000;
const DWORD CRIT_FLAG_INVERT = 0x00000001;
const DWORD CRIT_FLAG_MULTIPLEAND = 0x00000002;
const DWORD CRIT_DATA_IGNORETHREAD = 0x00000002;
const DWORD CRIT_DATA_WATCHTHREAD = 0x00000001;
const DWORD CRIT_DATA_NORMALTHREAD = 0x00000000;
const DWORD CRIT_DATA_HIPRI = 0x00000002;
const DWORD CRIT_DATA_LOPRI = 0x00000001;
const DWORD CRIT_DATA_NORMALPRI = 0x00000000;
const DWORD CRIT_DATA_ENCRYPTSECURE = 0x00000002;
const DWORD CRIT_DATA_SIGNEDSECURE = 0x00000001;
const DWORD CRIT_DATA_NOSECURE = 0x00000000;
typedef enum tagCRIT_LOGIC
{
CRIT_LOGIC_NULL = 0,
CRIT_LOGIC_OR,
CRIT_LOGIC_AND,
CRIT_LOGIC_MAX
} CRIT_LOGIC;
typedef struct tagCRIT_ITEM
{
CRIT_TYPE type;
DWORD dwFlags;
PROPVARIANT propvar;
CRIT_LOGIC logic;
} CRIT_ITEM, * PCRIT_ITEM;
HRESULT Reset();
const DWORD CRIT_STATE_NULL = 0x00000000;
const DWORD CRIT_STATE_DIRTY = 0x00000001;
const DWORD CRIT_STATE_LOADED = 0x00000002;
const DWORD CRIT_STATE_HEADER = 0x00010000;
const DWORD CRIT_STATE_ALL = 0x00020000;
const DWORD CRIT_STATE_MASK = 0x00FF0000;
HRESULT GetState(
[out] DWORD * pdwState);
HRESULT GetCriteria(
[in] DWORD dwFlags,
[out] PCRIT_ITEM * ppItem,
[out] ULONG * pcItem);
HRESULT SetCriteria(
[in] DWORD dwFlags,
[in] CRIT_ITEM * pItem,
[in] ULONG cItem);
HRESULT Validate(
[in] DWORD dwFlags);
HRESULT AppendCriteria(
[in] DWORD dwFlags,
[in] CRIT_LOGIC logic,
[in] CRIT_ITEM * pItem,
[in] ULONG cItem,
[out] ULONG * pcItemAppended);
HRESULT MatchMessage(
[in] LPCSTR pszAcct,
[in] MESSAGEINFO * pMsgInfo,
[in] IMessageFolder * pFolder,
[in] IMimePropertySet * pIMPropSet,
[in] IMimeMessage * pIMMsg,
[in] ULONG cbMsgSize);
HRESULT LoadReg(
[in] LPCSTR szRegPath);
HRESULT SaveReg(
[in] LPCSTR szRegPath,
[in] BOOL fClearDirty);
HRESULT Clone(
[out] IOECriteria ** ppICriteria);
};
//---------------------------------------------------------------------------
// Interface IOEActions
//---------------------------------------------------------------------------
[
object,
uuid(626bafea-e5d6-11d1-b1dd-006097d503d9),
pointer_default(unique),
version(1.0)
]
interface IOEActions : IUnknown
{
const DWORD ACT_DATA_NULL = 0x00000000;
const DWORD ACT_DATA_WATCHTHREAD = 0x00000001;
const DWORD ACT_DATA_IGNORETHREAD = 0x00000002;
const DWORD ACT_DATA_SHOW = 0x00000001;
const DWORD ACT_DATA_HIDE = 0x00000002;
HRESULT Reset();
const DWORD ACT_STATE_NULL = 0x00000000;
const DWORD ACT_STATE_DIRTY = 0x00000100;
const DWORD ACT_STATE_LOADED = 0x00000200;
const DWORD ACT_STATE_SERVER = 0x01000000;
const DWORD ACT_STATE_LOCAL = 0x02000000;
const DWORD ACT_STATE_MASK = 0xFF000000;
HRESULT GetState(
[out] DWORD * pdwState);
HRESULT GetActions(
[in] DWORD dwFlags,
[out] PACT_ITEM * ppItem,
[out] ULONG * pcItem);
HRESULT SetActions(
[in] DWORD dwFlags,
[in] ACT_ITEM * pItem,
[in] ULONG cItem);
HRESULT Validate(
[in] DWORD dwFlags);
HRESULT AppendActions(
[in] DWORD dwFlags,
[in] ACT_ITEM * pItem,
[in] ULONG cItem,
[out] ULONG * pcItemAppended);
HRESULT LoadReg(
[in] LPCSTR szRegPath);
HRESULT SaveReg(
[in] LPCSTR szRegPath,
[in] BOOL fClearDirty);
HRESULT Clone(
[out] IOEActions ** ppIActions);
};
//---------------------------------------------------------------------------
// OE Rules Type Library
//---------------------------------------------------------------------------
[
uuid(626bafec-e5d6-11d1-b1dd-006097d503d9),
version(1.0),
helpstring("Microsoft Outlook Express Rules Type Library")
]
library OERules
{
importlib("stdole2.tlb");
[
uuid(626bafe1-e5d6-11d1-b1dd-006097d503d9),
]
coclass OERulesManager
{
[default] interface IOERulesManager;
};
[
uuid(626bafe3-e5d6-11d1-b1dd-006097d503d9),
]
coclass OEEnumRules
{
[default] interface IOEEnumRules;
};
[
uuid(626bafe5-e5d6-11d1-b1dd-006097d503d9),
]
coclass OEExecRules
{
[default] interface IOEExecRules;
};
[
uuid(626bafe7-e5d6-11d1-b1dd-006097d503d9),
]
coclass OERule
{
[default] interface IOERule;
interface IPersistStream;
};
[
uuid(626bafe9-e5d6-11d1-b1dd-006097d503d9),
]
coclass OECriteria
{
[default] interface IOECriteria;
interface IPersistStream;
};
[
uuid(626bafeb-e5d6-11d1-b1dd-006097d503d9),
]
coclass OEActions
{
[default] interface IOEActions;
interface IPersistStream;
};
};