//+------------------------------------------------------------ // // Copyright (C) 1998, Microsoft Corporation // // File: smtpseo.h // // Contents: // Common types definitions needed across projects for SMTP's seo // dispatcher // // Classes: // // Functions: // // History: // jstamerj 980608 12:29:40: Created. // //------------------------------------------------------------- #ifndef __SMTPSEO_H__ #define __SMTPSEO_H__ #include #include //+------------------------------------------------------------ // // Function: SMTP SEO completion function // // Synopsis: // // Arguments: // // Returns: // S_OK: Success // // History: // jstamerj 980610 16:13:28: Created. // //------------------------------------------------------------- typedef HRESULT (*PFN_SMTPEVENT_CALLBACK)(HRESULT hrStatus, PVOID pvContext); typedef enum _SMTP_DISPATCH_EVENT_TYPE { SMTP_EVENT_NONE = 0, SMTP_MAIL_DROP_EVENT, SMTP_STOREDRV_DELIVERY_EVENT, SMTP_STOREDRV_ALLOC_EVENT, SMTP_STOREDRV_STARTUP_EVENT, SMTP_STOREDRV_PREPSHUTDOWN_EVENT, SMTP_STOREDRV_SHUTDOWN_EVENT, SMTP_MAILTRANSPORT_SUBMISSION_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_REGISTER_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_BEGIN_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_END_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_BUILDQUERY_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_BUILDQUERIES_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_SENDQUERY_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_SORTQUERYRESULT_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_PROCESSITEM_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_EXPANDITEM_EVENT, SMTP_MAILTRANSPORT_CATEGORIZE_COMPLETEITEM_EVENT, SMTP_MAILTRANSPORT_POSTCATEGORIZE_EVENT, SMTP_MAILTRANSPORT_GET_ROUTER_FOR_MESSAGE_EVENT, SMTP_STOREDRV_ENUMMESS_EVENT, SMTP_MAILTRANSPORT_PRECATEGORIZE_EVENT, SMTP_MSGTRACKLOG_EVENT, SMTP_DNSRESOLVERRECORDSINK_EVENT, SMTP_MAXMSGSIZE_EVENT, SMTP_LOG_EVENT, SMTP_GET_AUX_DOMAIN_INFO_FLAGS_EVENT } SMTP_DISPATCH_EVENT_TYPE; typedef struct _EVENTPARAMS_SUBMISSION { IMailMsgProperties *pIMailMsgProperties; PFN_SMTPEVENT_CALLBACK pfnCompletion; PVOID pCCatMsgQueue; } EVENTPARAMS_SUBMISSION, *PEVENTPARAMS_SUBMISSION; typedef struct _EVENTPARAMS_PRECATEGORIZE { IMailMsgProperties *pIMailMsgProperties; PFN_SMTPEVENT_CALLBACK pfnCompletion; PVOID pCCatMsgQueue; } EVENTPARAMS_PRECATEGORIZE, *PEVENTPARAMS_PRECATEGORIZE; typedef struct _EVENTPARAMS_POSTCATEGORIZE { IMailMsgProperties *pIMailMsgProperties; PFN_SMTPEVENT_CALLBACK pfnCompletion; PVOID pCCatMsgQueue; } EVENTPARAMS_POSTCATEGORIZE, *PEVENTPARAMS_POSTCATEGORIZE; typedef struct _EVENTPARAMS_CATREGISTER { ICategorizerParameters *pICatParams; PFN_SMTPEVENT_CALLBACK pfnDefault; LPSTR pszSourceLine; LPVOID pvCCategorizer; HRESULT hrSinkStatus; } EVENTPARAMS_CATREGISTER, *PEVENTPARAMS_CATREGISTER; typedef struct _EVENTPARAMS_CATBEGIN { ICategorizerMailMsgs *pICatMailMsgs; } EVENTPARAMS_CATBEGIN, *PEVENTPARAMS_CATBEGIN; typedef struct _EVENTPARAMS_CATEND { ICategorizerMailMsgs *pICatMailMsgs; HRESULT hrStatus; } EVENTPARAMS_CATEND, *PEVENTPARAMS_CATEND; typedef struct _EVENTPARAMS_CATBUILDQUERY { ICategorizerParameters *pICatParams; ICategorizerItem *pICatItem; PFN_SMTPEVENT_CALLBACK pfnDefault; PVOID pCCatAddr; } EVENTPARAMS_CATBUILDQUERY, *PEVENTPARAMS_CATBUILDQUERY; typedef struct _EVENTPARAMS_CATBUILDQUERIES { ICategorizerParameters *pICatParams; DWORD dwcAddresses; ICategorizerItem **rgpICatItems; ICategorizerQueries *pICatQueries; PFN_SMTPEVENT_CALLBACK pfnDefault; PVOID pblk; } EVENTPARAMS_CATBUILDQUERIES, *PEVENTPARAMS_CATBUILDQUERIES; typedef struct _EVENTPARAMS_CATSENDQUERY { // // Params needed to call real sinks // ICategorizerParameters *pICatParams; ICategorizerQueries *pICatQueries; ICategorizerAsyncContext *pICatAsyncContext; // // Params needed by our implementation of ICategorizerAsyncContext // IMailTransportNotify *pIMailTransportNotify; PVOID pvNotifyContext; HRESULT hrResolutionStatus; PVOID pblk; // // Default/completion processing functions // PFN_SMTPEVENT_CALLBACK pfnDefault; PFN_SMTPEVENT_CALLBACK pfnCompletion; } EVENTPARAMS_CATSENDQUERY, *PEVENTPARAMS_CATSENDQUERY; typedef struct _EVENTPARAMS_CATSORTQUERYRESULT { ICategorizerParameters *pICatParams; HRESULT hrResolutionStatus; DWORD dwcAddresses; ICategorizerItem **rgpICatItems; DWORD dwcResults; ICategorizerItemAttributes **rgpICatItemAttributes; PFN_SMTPEVENT_CALLBACK pfnDefault; PVOID pblk; } EVENTPARAMS_CATSORTQUERYRESULT, *PEVENTPARAMS_CATSORTQUERYRESULT; typedef struct _EVENTPARAMS_CATPROCESSITEM { ICategorizerParameters *pICatParams; ICategorizerItem *pICatItem; PFN_SMTPEVENT_CALLBACK pfnDefault; PVOID pCCatAddr; } EVENTPARAMS_CATPROCESSITEM, *PEVENTPARAMS_CATPROCESSITEM; typedef struct _EVENTPARAMS_CATEXPANDITEM { ICategorizerParameters *pICatParams; ICategorizerItem *pICatItem; PFN_SMTPEVENT_CALLBACK pfnDefault; PFN_SMTPEVENT_CALLBACK pfnCompletion; PVOID pCCatAddr; IMailTransportNotify *pIMailTransportNotify; PVOID pvNotifyContext; } EVENTPARAMS_CATEXPANDITEM, *PEVENTPARAMS_CATEXPANDITEM; typedef struct _EVENTPARAMS_CATCOMPLETEITEM { ICategorizerParameters *pICatParams; ICategorizerItem *pICatItem; PFN_SMTPEVENT_CALLBACK pfnDefault; PVOID pCCatAddr; } EVENTPARAMS_CATCOMPLETEITEM, *PEVENTPARAMS_CATCOMPLETEITEM; typedef struct _EVENTPARAMS_ROUTER { DWORD dwVirtualServerID; IMailMsgProperties *pIMailMsgProperties; IMessageRouter *pIMessageRouter; IMailTransportRouterReset *pIRouterReset; IMailTransportRoutingEngine *pIRoutingEngineDefault; } EVENTPARAMS_ROUTER, *PEVENTPARAMS_ROUTER; typedef struct _EVENTPARAMS_MSGTRACKLOG { IUnknown *pIServer; IMailMsgProperties *pIMailMsgProperties; LPMSG_TRACK_INFO pMsgTrackInfo; } EVENTPARAMS_MSGTRACKLOG, *PEVENTPARAMS_MSGTRACKLOG; typedef struct _EVENTPARAMS_DNSRESOLVERRECORD { LPSTR pszHostName; LPSTR pszFQDN; DWORD dwVirtualServerId; IDnsResolverRecord **ppIDnsResolverRecord; } EVENTPARAMS_DNSRESOLVERRECORD, *PEVENTPARAMS_DNSRESOLVERRECORD; typedef struct _EVENTPARAMS_MAXMSGSIZE { IUnknown *pIUnknown; IMailMsgProperties *pIMailMsg; BOOL *pfShouldImposeLimit; } EVENTPARAMS_MAXMSGSIZE, *PEVENTPARAMS_MAXMSGSIZE; typedef struct _EVENTPARAMS_LOG { LPSMTP_LOG_EVENT_INFO pSmtpEventLogInfo; PVOID pDefaultEventLogHandler; DWORD iSelectedDebugLevel; } EVENTPARAMS_LOG, *PEVENTPARAMS_LOG; typedef struct _EVENTPARAMS_GET_AUX_DOMAIN_INFO_FLAGS { IUnknown *pIServer; LPCSTR pszDomainName; DWORD *pdwDomainInfoFlags; } EVENTPARAMS_GET_AUX_DOMAIN_INFO_FLAGS, *PEVENTPARAMS_GET_AUX_DOMAIN_INFO_FLAGS; #endif //__SMTPSEO_H__