/*++ Copyright (c) 1995 Microsoft Corporation Module Name: smtpapi.h Abstract: This file contains information about the MSN SMTP server counters Author: Johnson Apacible (johnsona) 10-Sept-1995 Rohan Phillips (Rohanp) 11-Dec-1995 --*/ #ifndef _SMTPAPI_ #define _SMTPAPI_ #ifdef __cplusplus extern "C" { #endif #include #ifndef NET_API_FUNCTION #define NET_API_FUNCTION _stdcall #endif #include "smtpext.h" #include "perfcat.h" // // Config Structures and API's #pragma warning( disable:4200 ) // nonstandard ext. - zero sized array // (MIDL requires zero entries) #define NAME_TYPE_USER (BitFlag(0)) #define NAME_TYPE_LIST_NORMAL (BitFlag(1)) #define NAME_TYPE_LIST_DOMAIN (BitFlag(2)) #define NAME_TYPE_LIST_SITE (BitFlag(3)) #define NAME_TYPE_ALL ( \ NAME_TYPE_USER | \ NAME_TYPE_LIST_NORMAL | \ NAME_TYPE_LIST_DOMAIN | \ NAME_TYPE_LIST_SITE \ ) typedef struct _SMTP_NAME_ENTRY { DWORD dwType; LPWSTR lpszName; } SMTP_NAME_ENTRY, *LPSMTP_NAME_ENTRY; typedef struct _SMTP_NAME_LIST { DWORD cEntries; #if defined(MIDL_PASS) [size_is(cEntries)] #endif SMTP_NAME_ENTRY aNameEntry[]; } SMTP_NAME_LIST, *LPSMTP_NAME_LIST; typedef struct _SMTP_CONN_USER_ENTRY { DWORD dwUserId; LPWSTR lpszName; LPWSTR lpszHost; DWORD dwConnectTime; } SMTP_CONN_USER_ENTRY, *LPSMTP_CONN_USER_ENTRY; typedef struct _SMTP_CONN_USER_LIST { DWORD cEntries; #if defined(MIDL_PASS) [size_is(cEntries)] #endif SMTP_CONN_USER_ENTRY aConnUserEntry[]; } SMTP_CONN_USER_LIST, *LPSMTP_CONN_USER_LIST; typedef struct _SMTP_CONFIG_DOMAIN_ENTRY { LPWSTR lpszDomain; } SMTP_CONFIG_DOMAIN_ENTRY, *LPSMTP_CONFIG_DOMAIN_ENTRY; typedef struct _SMTP_CONFIG_DOMAIN_LIST { DWORD cEntries; // Count of supported domains #if defined(MIDL_PASS) [size_is(cEntries)] #endif SMTP_CONFIG_DOMAIN_ENTRY aDomainEntry[]; // Supported domains } SMTP_CONFIG_DOMAIN_LIST, *LPSMTP_CONFIG_DOMAIN_LIST; typedef struct _SMTP_CONFIG_ROUTING_ENTRY { LPWSTR lpszSource; } SMTP_CONFIG_ROUTING_ENTRY, *LPSMTP_CONFIG_ROUTING_ENTRY; typedef struct _SMTP_CONFIG_ROUTING_LIST { DWORD cEntries; // Count of supported data sources #if defined(MIDL_PASS) [size_is(cEntries)] #endif SMTP_CONFIG_ROUTING_ENTRY aRoutingEntry[]; } SMTP_CONFIG_ROUTING_LIST, *LPSMTP_CONFIG_ROUTING_LIST; // 0 - Perfmon stats typedef struct _SMTP_STATISTICS_0 { // total bytes sent/received, including protocol msgs unsigned __int64 BytesSentTotal; unsigned __int64 BytesRcvdTotal; unsigned __int64 BytesSentMsg; unsigned __int64 BytesRcvdMsg; //incoming counters DWORD NumMsgRecvd; DWORD NumRcptsRecvd; DWORD NumRcptsRecvdLocal; DWORD NumRcptsRecvdRemote; DWORD MsgsRefusedDueToSize; DWORD MsgsRefusedDueToNoCAddrObjects; DWORD MsgsRefusedDueToNoMailObjects; //MTA counters DWORD NumMsgsDelivered; DWORD NumDeliveryRetries; DWORD NumMsgsForwarded; DWORD NumNDRGenerated; DWORD LocalQueueLength; DWORD RetryQueueLength; DWORD NumMailFileHandles; DWORD NumQueueFileHandles; DWORD CatQueueLength; //outgoing counters DWORD NumMsgsSent; DWORD NumRcptsSent; DWORD NumSendRetries; DWORD RemoteQueueLength; //DNS query counters DWORD NumDnsQueries; DWORD RemoteRetryQueueLength; //connection counters DWORD NumConnInOpen; DWORD NumConnInClose; DWORD NumConnOutOpen; DWORD NumConnOutClose; DWORD NumConnOutRefused; // other counters DWORD NumProtocolErrs; DWORD DirectoryDrops; DWORD RoutingTableLookups; DWORD ETRNMessages; DWORD MsgsBadmailNoRecipients; DWORD MsgsBadmailHopCountExceeded; DWORD MsgsBadmailFailureGeneral; DWORD MsgsBadmailBadPickupFile; DWORD MsgsBadmailEvent; DWORD MsgsBadmailNdrOfDsn; DWORD MsgsPendingRouting; DWORD MsgsPendingUnreachableLink; DWORD SubmittedMessages; DWORD DSNFailures; DWORD MsgsInLocalDelivery; CATPERFBLOCK CatPerfBlock; DWORD TimeOfLastClear; // statistics last cleared } SMTP_STATISTICS_0, *LPSMTP_STATISTICS_0; typedef struct _SMTP_STATISTICS_BLOCK { DWORD dwInstance; SMTP_STATISTICS_0 Stats_0; } SMTP_STATISTICS_BLOCK, *PSMTP_STATISTICS_BLOCK; typedef struct _SMTP_STATISTICS_BLOCK_ARRAY { DWORD cEntries; // Count of instances of statistics #if defined(MIDL_PASS) [size_is(cEntries)] #endif SMTP_STATISTICS_BLOCK aStatsBlock[]; } SMTP_STATISTICS_BLOCK_ARRAY, *PSMTP_STATISTICS_BLOCK_ARRAY; #pragma warning(default:4200) // // Cut by keithlau on 7/8/96 // // #define FC_SMTP_INFO_LOOP_BACK ((FIELD_CONTROL)BitFlag(0)) // #define FC_SMTP_INFO_BACK_LOG ((FIELD_CONTROL)BitFlag(1)) // #define FC_SMTP_INFO_MAX_OBJECTS ((FIELD_CONTROL)BitFlag(6)) // #define FC_SMTP_INFO_DOMAIN ((FIELD_CONTROL)BitFlag(12)) // #define FC_SMTP_INFO_DELIVERY ((FIELD_CONTROL)BitFlag(17)) // #define FC_SMTP_INFO_BAD_MAIL ((FIELD_CONTROL)BitFlag(19)) // #define FC_SMTP_INFO_MAIL_QUEUE_DIR ((FIELD_CONTROL)BitFlag(20)) // #define FC_SMTP_INFO_FILELINKS ((FIELD_CONTROL)BitFlag(21)) // #define FC_SMTP_INFO_BATCHMSGS ((FIELD_CONTROL)BitFlag(22)) // #define FC_SMTP_INFO_ROUTING_DLL ((FIELD_CONTROL)BitFlag(23)) // #define FC_SMTP_INFO_MAIL_PICKUP_DIR ((FIELD_CONTROL)BitFlag(25)) #define FC_SMTP_INFO_REVERSE_LOOKUP ((FIELD_CONTROL)BitFlag(0)) #define FC_SMTP_INFO_MAX_HOP_COUNT ((FIELD_CONTROL)BitFlag(1)) #define FC_SMTP_INFO_MAX_ERRORS ((FIELD_CONTROL)BitFlag(2)) #define FC_SMTP_INFO_MAX_SIZE ((FIELD_CONTROL)BitFlag(3)) #define FC_SMTP_INFO_REMOTE_TIMEOUT ((FIELD_CONTROL)BitFlag(4)) #define FC_SMTP_INFO_MAX_OUTBOUND_CONN ((FIELD_CONTROL)BitFlag(5)) #define FC_SMTP_INFO_MAX_RECIPS ((FIELD_CONTROL)BitFlag(6)) #define FC_SMTP_INFO_RETRY ((FIELD_CONTROL)BitFlag(7)) #define FC_SMTP_INFO_PIPELINE ((FIELD_CONTROL)BitFlag(8)) #define FC_SMTP_INFO_OBSOLETE_ROUTING ((FIELD_CONTROL)BitFlag(9)) #define FC_SMTP_INFO_SEND_TO_ADMIN ((FIELD_CONTROL)BitFlag(10)) #define FC_SMTP_INFO_SMART_HOST ((FIELD_CONTROL)BitFlag(11)) #define FC_SMTP_INFO_AUTHORIZATION ((FIELD_CONTROL)BitFlag(12)) #define FC_SMTP_INFO_COMMON_PARAMS ((FIELD_CONTROL)BitFlag(13)) #define FC_SMTP_INFO_DEFAULT_DOMAIN ((FIELD_CONTROL)BitFlag(14)) #define FC_SMTP_INFO_ROUTING ((FIELD_CONTROL)BitFlag(15)) // // Added by keithlau on 7/8/96 // #define FC_SMTP_INFO_BAD_MAIL_DIR ((FIELD_CONTROL)BitFlag(15)) #define FC_SMTP_INFO_MASQUERADE ((FIELD_CONTROL)BitFlag(16)) #define FC_SMTP_INFO_REMOTE_PORT ((FIELD_CONTROL)BitFlag(17)) #define FC_SMTP_INFO_LOCAL_DOMAINS ((FIELD_CONTROL)BitFlag(18)) #define FC_SMTP_INFO_DOMAIN_ROUTING ((FIELD_CONTROL)BitFlag(19)) #define FC_SMTP_INFO_ADMIN_EMAIL_NAME ((FIELD_CONTROL)BitFlag(20)) #define FC_SMTP_INFO_ALWAYS_USE_SSL ((FIELD_CONTROL)BitFlag(21)) #define FC_SMTP_INFO_MAX_OUT_CONN_PER_DOMAIN ((FIELD_CONTROL)BitFlag(22)) #define FC_SMTP_INFO_SASL_LOGON_DOMAIN ((FIELD_CONTROL)BitFlag(23)) #define FC_SMTP_INFO_INBOUND_SUPPORT_OPTIONS ((FIELD_CONTROL)BitFlag(24)) #define FC_SMTP_INFO_DEFAULT_DROP_DIR ((FIELD_CONTROL)BitFlag(25)) #define FC_SMTP_INFO_FQDN ((FIELD_CONTROL)BitFlag(26)) #define FC_SMTP_INFO_ETRN_SUBDOMAINS ((FIELD_CONTROL)BitFlag(27)) #define FC_SMTP_INFO_NTAUTHENTICATION_PROVIDERS ((FIELD_CONTROL)BitFlag(29)) #define FC_SMTP_CLEARTEXT_AUTH_PROVIDER ((FIELD_CONTROL)BitFlag(30)) // // Added by mlans on 7/24/96 // #define FC_SMTP_INFO_SSL_PERM ((FIELD_CONTROL)BitFlag(28)) #define FC_SMTP_ROUTING_TYPE_FILTER ((FIELD_CONTROL)(BitFlag(30) | BitFlag(31))) #define FC_SMTP_ROUTING_TYPE_SQL ((FIELD_CONTROL)(0))) #define FC_SMTP_ROUTING_TYPE_FF ((FIELD_CONTROL)BitFlag(30)) #define FC_SMTP_ROUTING_TYPE_LDAP ((FIELD_CONTROL)BitFlag(31)) #define FC_SMTP_INFO_ALL ( \ FC_SMTP_INFO_REVERSE_LOOKUP | \ FC_SMTP_INFO_MAX_HOP_COUNT | \ FC_SMTP_INFO_MAX_ERRORS | \ FC_SMTP_INFO_MAX_SIZE | \ FC_SMTP_INFO_REMOTE_TIMEOUT | \ FC_SMTP_INFO_MAX_OUTBOUND_CONN | \ FC_SMTP_INFO_MAX_RECIPS | \ FC_SMTP_INFO_RETRY | \ FC_SMTP_INFO_PIPELINE | \ FC_SMTP_INFO_ROUTING | \ FC_SMTP_INFO_OBSOLETE_ROUTING | \ FC_SMTP_INFO_SEND_TO_ADMIN | \ FC_SMTP_INFO_SMART_HOST | \ FC_SMTP_INFO_COMMON_PARAMS | \ FC_SMTP_INFO_DEFAULT_DOMAIN | \ FC_SMTP_INFO_BAD_MAIL_DIR | \ FC_SMTP_INFO_MASQUERADE | \ FC_SMTP_INFO_LOCAL_DOMAINS | \ FC_SMTP_INFO_REMOTE_PORT | \ FC_SMTP_INFO_DOMAIN_ROUTING |\ FC_SMTP_INFO_ADMIN_EMAIL_NAME |\ FC_SMTP_INFO_ALWAYS_USE_SSL |\ FC_SMTP_INFO_MAX_OUT_CONN_PER_DOMAIN |\ FC_SMTP_INFO_INBOUND_SUPPORT_OPTIONS |\ FC_SMTP_INFO_DEFAULT_DROP_DIR |\ FC_SMTP_INFO_FQDN |\ FC_SMTP_INFO_ETRN_SUBDOMAINS |\ FC_SMTP_INFO_SSL_PERM |\ FC_SMTP_INFO_AUTHORIZATION |\ FC_SMTP_INFO_NTAUTHENTICATION_PROVIDERS |\ FC_SMTP_INFO_SASL_LOGON_DOMAIN |\ FC_SMTP_CLEARTEXT_AUTH_PROVIDER \ ) // // Cut out from FC_SMTP_INFO_ALL by keithlau on 7/8/96 // /* * FC_SMTP_INFO_LOOP_BACK | \ FC_SMTP_INFO_BACK_LOG | \ FC_SMTP_INFO_MAX_OBJECTS | \ FC_SMTP_INFO_DELIVERY | \ FC_SMTP_INFO_BAD_MAIL | \ FC_SMTP_INFO_DOMAIN | \ FC_SMTP_INFO_MAIL_QUEUE_DIR | \ FC_SMTP_INFO_FILELINKS | \ FC_SMTP_INFO_BATCHMSGS | \ FC_SMTP_INFO_ROUTING_DLL | \ FC_SMTP_INFO_MAIL_PICKUP_DIR \ * */ typedef struct _SMTP_CONFIG_INFO { FIELD_CONTROL FieldControl; // // Removed by keithlau on 7/8/96 // // DWORD dwCheckLoopBack; // Make sure we're not sending to ourself // DWORD dwLocalBackLog; // // DWORD dwRemoteBackLog; // // DWORD dwMaxAddressObjects; // Max CPool Addresses // DWORD dwMaxMailObjects; // Max CPool Msgs // DWORD dwShouldDelete; // Should delete messages when delivered // DWORD dwShouldDeliver; // Should deliver messages when accepted // DWORD dwUseFileLinks; // 0 = use NTFS file links, 1 = use CopyFile // DWORD dwBatchMsgs; // 0 = Don't batch msgs, 1 = batch msgs // DWORD dwMaxBatchLimit; // if dwBatchMsgs == 1, batch this many in a row // DWORD dwSaveBadMail; // Save bad mail locally - independent of sending to admin // DWORD dwEnableMailPickUp; // 1 = Pickup from a Dir, 0 = No pickup from a Dir // LPWSTR lpszDeleteDir; // Dir to move delivered msg to if dwShouldDelete == FALSE // LPWSTR lpszRoutingDll; // Mail routing DLL // LPWSTR lpszMailQueueDir; // Local directory to use for the mail queue // LPWSTR lpszMailPickupDir; // Local Directory for mail pickup // LPSMTP_CONFIG_DOMAIN_LIST DomainList; // Domain config info - default domain and supported domains DWORD dwReverseLookup; // Do DNS Reverse lookup? DWORD dwMaxHopCount; // Max msg hops before NDR DWORD dwMaxRemoteTimeOut; // Outbound inactivity timeout DWORD dwMaxErrors; // Max protocol errors before drop conn DWORD dwMaxMsgSizeAccepted; // Largest msg we'll accept DWORD dwMaxMsgSizeBeforeClose; // Largest msg we'll wait for before abrupt close DWORD dwMaxRcpts; // Max recips per message DWORD dwShouldRetry; // Should retry delivery DWORD dwMaxRetryAttempts; // Max # of retry attempts DWORD dwMaxRetryMinutes; // Minutes between retries DWORD dwNameResolution; // 0 = DNS, 1 = GetHostByName DWORD dwShouldPipelineOut; // Pipeline outbound mail? DWORD dwShouldPipelineIn; // Advertise inbound pipeline support? DWORD dwSmartHostType; // 0 = Never, 1 = On failed connection, 1 = Always DWORD dwSendNDRCopyToAdmin; // Send copy of all NDR's to AdminEmail? DWORD dwSendBadMailToAdmin; // Send bad msgs to AdminEmail? DWORD dwMaxOutboundConnections; // Maximum outbound connections allowed LPWSTR lpszSmartHostName; // Smart host server LPWSTR lpszConnectResp; // Connection response LPWSTR lpszBadMailDir; // Dir to save bad mail LPWSTR lpszDefaultDomain; // Default domain LPSMTP_CONFIG_ROUTING_LIST RoutingList; // Mail routing source information } SMTP_CONFIG_INFO, *LPSMTP_CONFIG_INFO; NET_API_STATUS NET_API_FUNCTION SmtpGetAdminInformation( IN LPWSTR pszServer OPTIONAL, OUT LPSMTP_CONFIG_INFO * ppConfig, DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpSetAdminInformation( IN LPWSTR pszServer OPTIONAL, IN LPSMTP_CONFIG_INFO pConfig, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpGetConnectedUserList( IN LPWSTR pszServer OPTIONAL, OUT LPSMTP_CONN_USER_LIST *ppConnUserList, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpDisconnectUser( IN LPWSTR pszServer OPTIONAL, IN DWORD dwUserId, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpRenameDomain( IN LPWSTR wszServerName, IN LPWSTR wszOldDomainName, IN LPWSTR wszNewDomainName, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpGetLocalDomains( IN LPWSTR wszServerName, OUT LPSMTP_CONFIG_DOMAIN_LIST *ppDomainList, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpAddLocalDomain( IN LPWSTR wszServerName, IN LPWSTR wszLocalDomain, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpDelLocalDomain( IN LPWSTR wszServerName, IN LPWSTR wszLocalDomain, IN DWORD dwInstance ); // // User config // #define FC_SMTP_USER_PROPS_FORWARD ((FIELD_CONTROL)BitFlag(0)) #define FC_SMTP_USER_PROPS_MAILBOX_SIZE ((FIELD_CONTROL)BitFlag(1)) #define FC_SMTP_USER_PROPS_VROOT ((FIELD_CONTROL)BitFlag(2)) #define FC_SMTP_USER_PROPS_LOCAL ((FIELD_CONTROL)BitFlag(3)) #define FC_SMTP_USER_PROPS_MAILBOX_MESSAGE_SIZE ((FIELD_CONTROL)BitFlag(4)) #define FC_SMTP_USER_PROPS_ALL ( \ FC_SMTP_USER_PROPS_FORWARD | \ FC_SMTP_USER_PROPS_MAILBOX_SIZE | \ FC_SMTP_USER_PROPS_VROOT | \ FC_SMTP_USER_PROPS_LOCAL |\ FC_SMTP_USER_PROPS_MAILBOX_MESSAGE_SIZE \ ) #if defined(MIDL_PASS) #define MIDL(x) x #else #define MIDL(x) #endif typedef struct _SMTP_USER_PROPS { FIELD_CONTROL fc; LPWSTR wszForward; DWORD dwMailboxMax; LPWSTR wszVRoot; DWORD dwLocal; DWORD dwMailboxMessageMax; } SMTP_USER_PROPS, *LPSMTP_USER_PROPS; NET_API_STATUS NET_API_FUNCTION SmtpCreateUser( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN LPWSTR wszForwardEmail, IN DWORD dwLocal, IN DWORD dwMailboxSize, IN DWORD dwMailboxMessageSize, IN LPWSTR wszVRoot, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpDeleteUser( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpGetUserProps( IN LPWSTR wszServerName, IN LPWSTR wszEmail, OUT LPSMTP_USER_PROPS *ppUserProps, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpSetUserProps( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN LPSMTP_USER_PROPS pUserProps, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpCreateDistList( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN DWORD dwType, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpDeleteDistList( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpCreateDistListMember( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN LPWSTR wszEmailMember, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpDeleteDistListMember( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN LPWSTR wszEmailMember, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpGetNameList( IN LPWSTR wszServer, IN LPWSTR wszEmail, IN DWORD dwType, IN DWORD dwRowsReq, IN BOOL fForward, OUT LPSMTP_NAME_LIST *ppNameList, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpGetNameListFromList( IN LPWSTR wszServerName, IN LPWSTR wszEmailList, IN LPWSTR wszEmail, IN DWORD dwType, IN DWORD dwRowsRequested, IN BOOL fForward, OUT LPSMTP_NAME_LIST *ppNameList, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpGetVRootSize( IN LPWSTR wszServerName, IN LPWSTR wszVRoot, IN LPDWORD pdwBytes, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpBackupRoutingTable( IN LPWSTR wszServerName, IN LPWSTR wszPath, IN DWORD dwInstance ); // =================================================== // SMTP SDK RPCs // NET_API_STATUS NET_API_FUNCTION SmtpGetUserProfileInformation( IN LPWSTR pszServer OPTIONAL, IN LPWSTR wszEmail, IN OUT LPSSE_USER_PROFILE_INFO lpProfileInfo, IN DWORD dwInstance ); NET_API_STATUS NET_API_FUNCTION SmtpSetUserProfileInformation( IN LPWSTR pszServer OPTIONAL, IN LPWSTR wszEmail, IN LPSSE_USER_PROFILE_INFO lpProfileInfo, IN DWORD dwInstance ); // // Get Server Statistics // NET_API_STATUS NET_API_FUNCTION SmtpQueryStatistics( IN LPWSTR ServerName OPTIONAL, IN DWORD Level, OUT LPBYTE * Buffer ); // // Clear server statistics // NET_API_STATUS NET_API_FUNCTION SmtpClearStatistics( IN LPWSTR ServerName OPTIONAL, IN DWORD dwInstance ); // // Used to free buffers returned by APIs // VOID SmtpFreeBuffer( LPVOID Buffer ); // // AQ Admin APIs // #include NET_API_STATUS NET_API_FUNCTION SmtpAQApplyActionToLinks( LPWSTR wszServer, LPWSTR wszInstance, LINK_ACTION laAction); NET_API_STATUS NET_API_FUNCTION SmtpAQApplyActionToMessages( LPWSTR wszServer, LPWSTR wszInstance, QUEUELINK_ID *pqlQueueLinkId, MESSAGE_FILTER *pmfMessageFilter, MESSAGE_ACTION maMessageAction, DWORD *pcMsgs); NET_API_STATUS NET_API_FUNCTION SmtpAQGetQueueInfo( LPWSTR wszServer, LPWSTR wszInstance, QUEUELINK_ID *pqlQueueId, QUEUE_INFO *pqiQueueInfo); NET_API_STATUS NET_API_FUNCTION SmtpAQGetLinkInfo( LPWSTR wszServer, LPWSTR wszInstance, QUEUELINK_ID *pqlLinkId, LINK_INFO *pliLinkInfo); NET_API_STATUS NET_API_FUNCTION SmtpAQSetLinkState( LPWSTR wszServer, LPWSTR wszInstance, QUEUELINK_ID *pqlLinkId, LINK_ACTION la); NET_API_STATUS NET_API_FUNCTION SmtpAQGetLinkIDs( LPWSTR wszServer, LPWSTR wszInstance, DWORD *pcLinks, QUEUELINK_ID **rgLinks); NET_API_STATUS NET_API_FUNCTION SmtpAQGetQueueIDs( LPWSTR wszServer, LPWSTR wszInstance, QUEUELINK_ID *pqlLinkId, DWORD *pcQueues, QUEUELINK_ID **rgQueues); NET_API_STATUS NET_API_FUNCTION SmtpAQGetMessageProperties( LPWSTR wszServer, LPWSTR wszInstance, QUEUELINK_ID *pqlQueueLinkId, MESSAGE_ENUM_FILTER *pmfMessageEnumFilter, DWORD *pcMsgs, MESSAGE_INFO **rgMsgs); #ifdef __cplusplus } #endif #endif _SMTPAPI_