windows-nt/Source/XPSP1/NT/inetsrv/iis/staxinc/export/abook.h
2020-09-26 16:20:57 +08:00

384 lines
13 KiB
C

//+---------------------------------------------------------------
//
// File: Abook.h
//
// Synopsis: Prove Server level api for MSN Servers to access addres book
//
// Copyright (C) 1995 Microsoft Corporation
// All rights reserved.
//
// History: SunShaw Created 30 Jan 1996
//
//----------------------------------------------------------------
#ifndef _ABOOK_H_
#define _ABOOK_H_
#include <abtype.h>
#if defined(__cplusplus)
extern "C" {
#if !defined(DllExport)
#define DllExport __declspec( dllexport )
#endif
#if !defined(DllImport)
#define DllImport __declspec( dllimport )
#endif
#if !defined(_ABOOK_DLL_DEFINED)
#define _ABOOK_DLL_DEFINED
#if defined(WIN32)
#if defined(_ABOOK_DLL)
#define AbookDll DllExport
#else
#define AbookDll DllImport
#endif
#else
#define _ABOOK_DLL
#endif
#endif
#define ABCALLCONV __stdcall
#define ABEXPDLLCPP extern "C" AbookDll
//+---------------------------------------------------------------
//
// All Function Prototype used by SMTP, POP3 or AbSysAdmin
//
//----------------------------------------------------------------
typedef ABRETC (ABCALLCONV *LPFNAB_INIT)(LPSTR, LPFNLOGTRANX, PLIST_ENTRY, HANDLE*);
typedef ABRETC (ABCALLCONV *LPFNAB_TERM)(HANDLE);
typedef ABRETC (ABCALLCONV *LPFNAB_CANCEL)(HANDLE);
typedef ABRETC (ABCALLCONV *LPFNAB_GET_ERROR_STRING)(ABRETC, LPSTR, DWORD);
typedef ABRETC (ABCALLCONV *LPFNAB_GET_ROUTING_DIRECTORY)(PLIST_ENTRY pleSources, LPSTR szDirectory);
typedef ABRETC (ABCALLCONV *LPFNAB_SET_SOURCES)(HANDLE, PLIST_ENTRY);
typedef ABRETC (ABCALLCONV *LPFNAB_VALIDATE_SOURCE)(HANDLE hAbook, LPSTR szSource);
typedef ABRETC (ABCALLCONV *LPFNAB_VALIDATE_NUM_SOURCES)(HANDLE hAbook, DWORD dwNumSources);
typedef ABRETC (ABCALLCONV *LPFNAB_RES_ADDR)(HANDLE, PLIST_ENTRY, PABADDRSTAT pabAddrStat, PABROUTING pabroutingCheckPoint, ABRESOLVE *pabresolve);
typedef ABRETC (ABCALLCONV *LPFNAB_GET_RES_ADDR)(HANDLE, PABRESOLVE pabresolve, PABROUTING pabrouting);
typedef ABRETC (ABCALLCONV *LPFNAB_END_RES_ADDR)(HANDLE, PABRESOLVE pabresolve);
typedef ABRETC (ABCALLCONV *LPFNAB_RES_ADDR_ASYNC)(HANDLE, PLIST_ENTRY, PABADDRSTAT pabAddrStat, PABROUTING pabroutingCheckPoint, ABRESOLVE *pabresolve, LPVOID pContext);
typedef ABRETC (ABCALLCONV *LPFNAB_GET_MAILROOT)(HANDLE, PCHAR, LPSTR, LPDWORD);
typedef ABRETC (ABCALLCONV *LPFNAB_GET_PERFMON_BLK)(HANDLE, PABOOKDB_STATISTICS_0);
typedef ABRETC (ABCALLCONV *LPFNAB_END_ENUM_RESULT)(HANDLE, PABENUM);
typedef ABRETC (ABCALLCONV *LPFNAB_ENUM_NAME_LIST)(HANDLE, LPSTR, BOOL, DWORD, PABENUM);
typedef ABRETC (ABCALLCONV *LPFNAB_ENUM_NAME_LIST_FROM_DL)(HANDLE, LPSTR, LPSTR, BOOL, DWORD, PABENUM);
typedef ABRETC (ABCALLCONV *LPFNAB_GET_NEXT_EMAIL)(HANDLE, PABENUM, DWORD*, LPSTR);
typedef ABRETC (ABCALLCONV *LPFNAB_ADD_LOCAL_DOMAIN)(HANDLE, LPSTR);
typedef ABRETC (ABCALLCONV *LPFNAB_ADD_ALIAS_DOMAIN)(HANDLE, LPSTR, LPSTR);
typedef ABRETC (ABCALLCONV *LPFNAB_DELETE_LOCAL_DOMAIN)(HANDLE, LPSTR);
typedef ABRETC (ABCALLCONV *LPFNAB_DELETE_ALL_LOCAL_DOMAINS)(HANDLE);
typedef ABRETC (ABCALLCONV *LPFNAB_CREATE_USER)(HANDLE hAbook, LPSTR szEmail, LPSTR szForward, BOOL fLocalUser, LPSTR szVRoot, DWORD cbMailboxMax, DWORD cbMailboxMessageMax);
typedef ABRETC (ABCALLCONV *LPFNAB_DELETE_USER)(HANDLE hAbook, LPSTR szEmail);
typedef ABRETC (ABCALLCONV *LPFNAB_SET_FORWARD)(HANDLE hAbook, LPSTR szEmail, LPSTR szForward);
typedef ABRETC (ABCALLCONV *LPFNAB_SET_MAILROOT)(HANDLE hAbook, LPSTR szEmail, LPSTR szVRoot);
typedef ABRETC (ABCALLCONV *LPFNAB_SET_MAILBOX_SIZE)(HANDLE hAbook, LPSTR szEmail, DWORD cbMailboxMax);
typedef ABRETC (ABCALLCONV *LPFNAB_SET_MAILBOX_MESSAGE_SIZE)(HANDLE hAbook, LPSTR szEmail, DWORD cbMailboxMessageMax);
typedef ABRETC (ABCALLCONV *LPFNAB_CREATE_DL)(HANDLE hAbook, LPSTR szEmail, DWORD dwType);
typedef ABRETC (ABCALLCONV *LPFNAB_DELETE_DL)(HANDLE hAbook, LPSTR szEmail);
typedef ABRETC (ABCALLCONV *LPFNAB_CREATE_DL_MEMBER)(HANDLE hAbook, LPSTR szEmail, LPSTR szMember);
typedef ABRETC (ABCALLCONV *LPFNAB_DELETE_DL_MEMBER)(HANDLE hAbook, LPSTR szEmail, LPSTR szMember);
typedef ABRETC (ABCALLCONV *LPFNAB_GET_USER_PROPS)(HANDLE hAbook, LPSTR lpszEmail, ABUSER *pABUSER);
typedef ABRETC (ABCALLCONV *LPFNAB_MAKE_BACKUP)(HANDLE hAbook, LPSTR szConfig);
typedef DWORD (ABCALLCONV *LPFNAB_GET_TYPE)(void);
// Get user or DL's properties
ABEXPDLLCPP ABRETC ABCALLCONV AbGetUserProps(HANDLE hAbook, LPSTR lpszEmail, ABUSER *pABUSER);
ABEXPDLLCPP ABRETC ABCALLCONV AbGetDLProps(HANDLE hAbook, LPSTR lpszEmail, ABDL *pABDL);
// Given beginning chars, match user names
ABEXPDLLCPP ABRETC ABCALLCONV AbEnumNameList(HANDLE hAbook, LPSTR lpszEmail, BOOL f ,
DWORD dwType, PABENUM pabenum);
// Match user names only in the given DL
ABEXPDLLCPP ABRETC ABCALLCONV AbEnumNameListFromDL(HANDLE hAbook, LPSTR lpszDLName, LPSTR lpszEmail,
BOOL f , DWORD dwType, PABENUM pabenum);
// Get back all the matching names
ABEXPDLLCPP ABRETC ABCALLCONV AbGetNextEmail(HANDLE hAbook, PABENUM pabenum, DWORD *pdwType, LPSTR lpszEmail);
//+---------------------------------------------------------------
//
// Function: AbGetType
//
// Synopsis: returns the routing type number
//
// Arguments:
//
// Returns: DWORD Routing type number defined above
//
//----------------------------------------------------------------
#define ROUTING_TYPE_SQL 1
#define ROUTING_TYPE_FF 2
#define ROUTING_TYPE_LDAP 3
ABEXPDLLCPP DWORD ABCALLCONV AbGetType
();
//+---------------------------------------------------------------
//
// Function: AbInitialize
//
// Synopsis: Must be the first call to abookdb.dll (except AbGetType)
//
// Arguments:
// LPSTR [in] Display name for abookdb users/context,
// i.e. SMTP, POP3 or NULL if don't care.
// LPFNLOGTRANX [in] Transaction Logging callback.
// NULL if don't care about transaction logging.
// PHANDLE [out] Return buffer for context handle,
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbInitialize
(LPSTR pszDisplayName, LPFNLOGTRANX pfnTranx, PLIST_ENTRY pHead, HANDLE* phAbook);
//+---------------------------------------------------------------
//
// Function: AbSetSources
//
// Synopsis: Called to update available data sources at any time
//
// Arguments: LPSTR it's the command line and should have the following form:
// [server=ayin][,][MaxCnx=100]
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbSetSources(HANDLE hAbook, PLIST_ENTRY pHead);
//+---------------------------------------------------------------
//
// Function: AbGetErrorString
//
// Synopsis: To translate ABRETC to an error string
//
// Arguments: ABRETC [in] The return code from abook API
// LPSTR [out] Buffer for the error string to copy into
// DWORD [in] The size of the buffer supplized
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbGetErrorString(ABRETC abrc, LPSTR lpBuf, DWORD cbBufSize);
//+---------------------------------------------------------------
//
// Function: AbTerminate
//
// Synopsis: User must call this when done with abook.dll
//
// Arguments:
// HANDLE [in] Context Handle returned from AbInitialize.
//
// Returns: NONE
//
//----------------------------------------------------------------
ABEXPDLLCPP VOID ABCALLCONV AbTerminate(HANDLE hAbook);
//+---------------------------------------------------------------
//
// Function: AbCancel
//
// Synopsis: This function will cancel all resolve address calls
// to DB so that SMTP can shut down cleanly without waiting
// too long.
//
// Arguments:
// HANDLE [in] Context Handle returned from AbInitialize.
//
// Returns: ABRETC
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbCancel(HANDLE hAbook);
//+---------------------------------------------------------------
//
// Function: AbResolveAddress
//
// Synopsis: Resolves email address to minimum routing info.
//
// Arguments:
// HANDLE [in] Context Handle returned from AbInitialize.
// HACCT [in] HACCT for sender, 0 for non-MSN account
// PQUEUE_ENTRY [in|out] List of CAddr/Recipients
// LPFNCREATEADDR [in] Callback constructor of CAddr
// BOOL* [out] Pointer to buffer to indicate at least 1
// recipient is encrypted and needs verification
// could be NULL in 2.0
//
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbResolveAddress
(
HANDLE hAbook,
PLIST_ENTRY pltInput,
PABADDRSTAT pabAddrStat,
PABROUTING pabroutingCheckPoint,
ABRESOLVE *pabresolve
);
ABEXPDLLCPP ABRETC ABCALLCONV AbAsyncResolveAddress
(
HANDLE hAbook,
PLIST_ENTRY pltInput,
PABADDRSTAT pabAddrStat,
PABROUTING pabroutingCheckPoint,
ABRESOLVE *pabresolve,
LPFNRESOLVECOMPLETE pfnCompletion,
LPVOID pContext
);
ABEXPDLLCPP ABRETC ABCALLCONV AbGetResolveAddress
(
HANDLE hAbook,
ABRESOLVE *pabresolve,
ABROUTING *pabrouting
);
ABEXPDLLCPP ABRETC ABCALLCONV AbEndResolveAddress
(
HANDLE hAbook,
ABRESOLVE *pabresolve
);
ABEXPDLLCPP ABRETC ABCALLCONV AbEndEnumResult
(HANDLE hAbook, PABENUM pabEnum);
//+---------------------------------------------------------------
//
// Function: AbAddLocalDomain AbDeleteLocalDomain
//
// Synopsis: add and delete Local domain to the database
//
// Arguments:
// HANDLE [in] Context Handle returned from AbInitialize.
// HACCT [in] Currently ignored
// PABPDI [in] Pointer to the Local domain structure
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbAddLocalDomain(HANDLE hAbook, LPSTR szDomainName);
ABEXPDLLCPP ABRETC ABCALLCONV AbAddAliasDomain(HANDLE hAbook, LPSTR szDomainName, LPSTR szAliasName);
ABEXPDLLCPP ABRETC ABCALLCONV AbDeleteLocalDomain(HANDLE hAbook, LPSTR szDomainName);
ABEXPDLLCPP ABRETC ABCALLCONV AbDeleteAllLocalDomains(HANDLE hAbook);
//+---------------------------------------------------------------
//
// Function: AbGetUserMailRoot
//
// Synopsis: Gets the Virtual Mail Root for the specified users
//
// Arguments:
// HANDLE [in] Context Handle returned from AbInitialize.
// PCHAR [in] ASCII user name
// LPCHAR [in] ASCII Virtual Mail Root
// LPDWORD [in|out] (in) size of buffer, (out) string length
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbGetUserMailRoot
(HANDLE hAbook, PCHAR pszUser, LPSTR pszVRoot, LPDWORD pcbVRootSize);
//+---------------------------------------------------------------
//
// Function: AbGetPerfmonBlock
//
// Synopsis: Gets the Pointer to the Perfmon Statistic block
// associated with hAbook. The pointer is guaranteed
// to be valid before the AbTerminate call.
//
// Arguments:
// HANDLE [in] Context Handle returned from AbInitialize.
// PABOOKDB_STATISTICS_0*
// [out] Buffer is receive the pointer to stat
// block.
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbGetPerfmonBlock
(HANDLE hAbook, PABOOKDB_STATISTICS_0* ppabStat);
//+---------------------------------------------------------------
//
// Function: AbMakeBackup
//
// Synopsis: Triggers the routing table to make a backup of the
// data associated with hAbook.
//
// Arguments:
// HANDLE [in] Context Handle returned from AbInitialize.
// LPSTR [in] configuration string
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbMakeBackup
(HANDLE hAbook, LPSTR szConfig);
//+---------------------------------------------------------------
//
// Function: AbValidateSource
//
// Synopsis: Validates a single source for accuracy before
// saving into the registry
//
// Arguments:
// HANDLE [in] Context Handle returned from AbInitialize.
// LPSTR [in] source string
//
// Returns: ABRETC AddressBook Return code details in <abtype.h>
//
//----------------------------------------------------------------
ABEXPDLLCPP ABRETC ABCALLCONV AbValidateSource
(HANDLE hAbook, LPSTR szSource);
}
#endif
#endif