This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/adminext.h

304 lines
9.6 KiB
C

/**********************************************************************/
/** Microsoft Exchange **/
/** Copyright (c) Microsoft Corp. 1986-1996. All Rights Reserved. **/
/**********************************************************************/
/*
adminext.h
This file contains the common messages, manifests, types, and
structures used by Microsoft Exchange Administration Extensions.
NOTE: You must include windows.h and mapix.h before this file.
*/
#ifndef _ADMINEXT_H_
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define _ADMINEXT_H_
#ifdef __cplusplus
extern "C"
{
#endif
// Miscellanous definitions
#define ADMIN_ExtensionAPIVersion 0x000d
// List of dialog page IDs passed to the ShowPage proc in the
// extension DLL for approval.
// for gateway objects (ObjID_GW)
#define iddGWGeneral 3020
#define iddGWPermissions 3500
#define iddGWSchedule 4011
#define iddGWConnected_Sites 4020
#define iddGWAddress_Space 3021
#define iddGWDelivery_Restrictions 4008
#define iddGWAdvanced 3022
#define iddGWImportContainer 3063
#define iddGWExportContainers 3067
#define iddGWDiagLogSetting 4030
// for mail agent objects (ObjID_MA)
#define iddMAGeneral 4028
#define iddMAPermissions 3500
#define iddMADistributionList 4090
#define iddMAEMailAddresses 4014
#define iddMADeliveryRestrictions 4008
#define iddMADeliveryOptions 4007
#define iddMASecurity 4051
#define iddMACustomAttributes 4022
#define iddMASchedule 4011
#define iddMAAdvanced 4040
typedef struct _ADMIN_ObjectInfo
{
LPWSTR szComputerName; // Computer on which the gateway runs, when applicable
LPWSTR szDistinguishedName; // of the object administered
LPWSTR szDNHomeMDB; // Distinguished name of the server running the home message database
LPWSTR szDNHomeMTA; // Distinguished name of the server running the home message transport agent
LCID lcid; // locale ID
UINT uObjectID; // object ID code
HFONT hfontDialog; // font handle
} ADMIN_ObjectInfo;
// Object ID codes
#define ObjID_UK 0 // UnKnown
#define ObjID_DSFirst 1 // first DS DOC
#define ObjID_EP 2 // Enterprise
#define ObjID_DM 3 // Domain (Site)
#define ObjID_CT 4 // Container
#define ObjID_SV 5 // Server
// Recipients
#define ObjID_MR 6 // Mail Recipients
#define ObjID_MB 7 // Mailbox
#define ObjID_DL 8 // Distribution List
#define ObjID_RR 9 // Remote Recipient
#define ObjID_PF 10 // Public Folder
#define ObjID_MA 11 // Mail Agent
// Connections
#define ObjID_GW 12 // Gateway
#define ObjID_MGW 13 // Special Gateway for Goalline
#define ObjID_DXAREQ 14 // DXA requestor, was Remote DXA
#define ObjID_DXASV 15 // DXA Site server
#define ObjID_DXACONN 16 // DXA Server Connection
#define ObjID_ISC 17 // Site Connector
#define ObjID_LNKRAS 18 // Dynamic RAS Connector
#define ObjID_LNKTCP 19 // TCP (RFC1006) X.400 Connector
#define ObjID_LNKTP4 20 // TP4 X.400 Connector
#define ObjID_LNKX25 21 // X.25 X.400 Connector
#define ObjID_DRC 22 // Directory Replication Connector
// Server Objects
#define ObjID_MTA 23 // MTA
#define ObjID_DSA 24 // Directory
#define ObjID_MDB 26 // Private Information Store
#define ObjID_PMDB 27 // Public Information Store
#define ObjID_LDXA 28 // Local DXA
#define ObjID_SAA 29 // System Attendant
#define ObjID_STKRAS 30 // RAS MTA Transport Stack
#define ObjID_STKTCP 31 // TCP (RFC1006) MTA Transport Stack
#define ObjID_STKTP4 32 // TP4 MTA Transport Stack
#define ObjID_STKX25 33 // X.25 MTA Transport Stack
// Monitor Configurations
#define ObjID_MSV 34 // Monitoring Server Configuration (DS)
#define ObjID_MLK 35 // Monitoring Link Configuration (DS)
// Templates
#define ObjID_ATP 36 // Address Type
#define ObjID_ATL 37 // Address Template
#define ObjID_DTL 38 // Display Template
// Schema Objects
#define ObjID_Schema 39 // The Schema container (DMD)
#define ObjID_SchemaAttr 40 // Schema Attribute
#define ObjID_SchemaObj 41 // Schema Object
// Site Configurations
#define ObjID_ENC 42 // Encryption Configuration
#define ObjID_SADR 43 // Site Addressing
#define ObjID_SDSA 44 // Site Directory Configuration
#define ObjID_SMDB 45 // Site Information Store Configuration
#define ObjID_SMTA 46 // Site MTA Configuration
#define ObjID_ADDIN 47 // Add-In
#define ObjID_EXT 48 // Admin Extension
typedef struct _ADMIN_SheetInfo
{
HINSTANCE hInstance;
UINT iddDialog; // To pass to MAKEINTRESOURCE()
DLGPROC lpfnDlgProc;
UINT idsName; // For LoadString()
LPARAM lParam; // Passed to DlgProc on WM_INITDIALOG
LANGID langid; // language ID of dialog to be loaded
} ADMIN_SheetInfo;
/*********************************************************************************/
/*********************************************************************************/
// Functions implemented by the Extension DLL
// and called by the Microsoft Exchange Administrator program.
typedef BOOL (PASCAL * PADMIN_InstallExtension) (ADMIN_ObjectInfo * poi);
typedef BOOL (PASCAL * PADMIN_DeinstallExtension) (ADMIN_ObjectInfo * poi);
typedef BOOL (PASCAL * PADMIN_ShowPage) (UINT iddAdminPage);
typedef INT (PASCAL * PADMIN_StartPage) (void);
typedef BOOL (PASCAL * PADMIN_InitSheet)
( ADMIN_ObjectInfo * poi,
ULONG fFlags,
ADMIN_SheetInfo ** ppsi,
UINT * pcsi,
VOID ** ppvExtensionData);
// PADMIN_InitSheet definitions for fFlags
#define fxfReadOnly 0x00000001
// high byte of fFlags reserved as private for extension dll writers to use as they see fit.
#define MaskExtensionPrivateFlags 0x00ffffff
/*********************************************************************************/
/*********************************************************************************/
// FSetActive() typedef BOOL (PASCAL * PADMIN_RefreshDisplay) (VOID * pvExtensionData, HWND hwnd);
typedef BOOL (PASCAL * PADMIN_HasHelp) (VOID * pvExtensionData, HWND hwnd);
typedef VOID (PASCAL * PADMIN_DoHelp) (VOID * pvExtensionData, HWND hwnd);
typedef BOOL (PASCAL * PADMIN_SaveData) (VOID * pvExtensionData, HWND hwnd);
typedef BOOL (PASCAL * PADMIN_CommitData) (VOID * pvExtensionData, HWND hwnd);
typedef VOID (PASCAL * PADMIN_DeinitSheet)
(VOID * pvExtensionData);
// The pointers in this structure (except pfnInitSheet) can be NULL
// if a pointer is null, no call is made.
typedef struct _ADMIN_ExtensionFunction
{
int nAPIVersion;
PADMIN_InstallExtension pfnInstallExtension;
PADMIN_DeinstallExtension pfnDeinstallExtension;
PADMIN_InitSheet pfnInitSheet;
PADMIN_ShowPage pfnShowPage;
PADMIN_StartPage pfnStartPage;
PADMIN_HasHelp pfnHasHelp;
PADMIN_DoHelp pfnDoHelp;
PADMIN_SaveData pfnSaveData;
PADMIN_CommitData pfnCommitData;
PADMIN_DeinitSheet pfnDeinitSheet;
} ADMIN_ExtensionFunction;
// Functions implemented by the Microsoft Exchange Administrator Program
// and called by the Extension DLL.
typedef RC (PASCAL * PADMIN_GetObjectDataSize)
(HWND hwnd, LPWSTR wszBlobName, UINT * pcb);
typedef RC (PASCAL * PADMIN_GetObjectData)
(HWND hwnd, LPWSTR wszBlobName, BYTE * pb, UINT cb);
typedef RC (PASCAL * PADMIN_SetObjectData)
(HWND hwnd, BYTE * pb, UINT cb, BOOL fNew);
// These 2 APIs take WCHAR *, NOT TCHAR!!!
// szServiceName is the SHORT name of the service.
typedef BOOL (PASCAL * PADMIN_AddService)
(HWND hwnd, LPWSTR wszServiceName);
typedef BOOL (PASCAL * PADMIN_RemoveService)
(HWND hwnd, LPWSTR wszServiceName);
typedef VOID (PASCAL * PADMIN_InfoHasChanged)
(HWND hwnd);
typedef VOID (PASCAL * PADMIN_SetIcon)
(HWND hwnd, int id);
typedef VOID (PASCAL * PADMIN_SetTitle)
(HWND hwnd, int id);
typedef BOOL (PASCAL * PADMIN_LoadDialogResource)
(HINSTANCE hinst, UINT iddDialog, LANGID langid, BYTE ** ppbDialog);
// *ppbDialog will be set to NULL after being freed in this call
typedef VOID (PASCAL * PADMIN_FreeDialogResource)
(BYTE ** ppbDialog);
/*
* psz is a pointer to an array of string pointers. The array is
* cstr elements long.
* Name 0: psz[0], etc.
* The extension is responsible for calling FreeNameList to reelease the memory
*/
typedef BOOL (PASCAL * PADMIN_GetNameList)
(HWND hwnd, int * pcstr, LPWSTR ** ppsz);
typedef void (PASCAL * PADMIN_FreeNameList)
(int cstr, LPWSTR * psz);
/*
* Admin will make a copy of the strings, so the extension can release the memory
* it allocated when the SetProxy call returns.
*/
typedef BOOL (PASCAL * PADMIN_SetNameList)
(HWND hwnd, int cstr, LPWSTR * psz);
// NOTE on both GetNameList and SetNameList: Admin will issue the error message if appropriate
typedef struct _ADMIN_AdministratorFunction
{
PADMIN_GetObjectDataSize pfnGetObjectDataSize;
PADMIN_GetObjectData pfnGetObjectData;
PADMIN_SetObjectData pfnSetObjectData;
PADMIN_AddService pfnAddService;
PADMIN_RemoveService pfnRemoveService;
PADMIN_InfoHasChanged pfnInfoHasChanged;
PADMIN_SetIcon pfnSetIcon;
PADMIN_SetTitle pfnSetTitle;
PADMIN_GetNameList pfnGetNameList;
PADMIN_FreeNameList pfnFreeNameList;
PADMIN_SetNameList pfnSetNameList;
PADMIN_LoadDialogResource pfnLoadDialogResource;
PADMIN_FreeDialogResource pfnFreeDialogResource;
} ADMIN_AdministratorFunction;
typedef struct _ADMIN_AdministratorConnections
{
IMAPISession * psesMapi;
IAddrBook * pab;
IABContainer * pabContainer;
} ADMIN_AdministratorConnections;
// Initialization function where the API is clarified.
typedef VOID (PASCAL * PADMIN_Initialize)
( ADMIN_AdministratorConnections * pac,
ADMIN_AdministratorFunction * pAdminFunction,
ADMIN_ExtensionFunction ** ppExtensionFunction);
#ifdef __cplusplus
}
#endif
#pragma option pop /*P_O_Pop*/
#endif // #ifndef _ADMINEXT_H_