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/edk.h

422 lines
12 KiB
C

// --edk.h----------------------------------------------------------------------
//
// Master include file for Microsoft Exchange SDK
//
// Copyright 1986 - 1998 Microsoft Corporation. All Rights Reserved.
// -----------------------------------------------------------------------------
#ifndef __EDK_H__
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define __EDK_H__
//==============================================================================
// VERSION INFORMATION
//==============================================================================
#define EDK_MAJOR_VERSION 1 // major header version
#define EDK_MINOR_VERSION 0 // minor header version
#define EDK_VERSION_NUMBER ((EDK_MAJOR_VERSION<<8)|EDK_MINOR_VERSION)
#define EDK_VERSION_STR "1.00.00\0"
//==============================================================================
// By default, the VC++ Workbench creates a make file with _DEBUG or NDEBUG.
// We need to define DEBUG or SHIP to work with all the header files.
//==============================================================================
#if !defined(DEBUG) && !defined(SHIP)
#ifdef _DEBUG
#define DEBUG
#define TEST
#else // NDEBUG should be defined
#define SHIP
#endif
#endif
//==============================================================================
// NON-RESOURCE
//==============================================================================
#ifndef RC_INVOKED // skip rest of file
#pragma warning(disable:4100 4103 4115 4200 4201 4204 4211 4214 4505 4514 4611 4706 4710)
#define _INC_OLE
#define INC_RPC
#define INC_OLE2
#ifdef UNICODE
#ifndef _UNICODE
#define _UNICODE
#endif
#endif
#if defined(_M_IX86)
#define _EXCHANGE_MACHINE_TYPE "i386"
#elif defined(_M_ALPHA)
#define _EXCHANGE_MACHINE_TYPE "ALPHA"
#elif defined(_M_MRX000)
#define _EXCHANGE_MACHINE_TYPE "MIPS"
#elif defined(_M_PPC)
#define _EXCHANGE_MACHINE_TYPE "PPC"
#endif
#include <windows.h>
#include <windowsx.h>
#pragma warning(disable:4103)
#include <objbase.h>
#pragma warning(disable:4103)
#ifdef EXTERN_C
#undef EXTERN_C
#endif
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
EXTERN_C const IID IID_IExchangeManageStore;
EXTERN_C const IID IID_IExchangeModifyTable;
EXTERN_C const IID IID_IExchangeConfigureXfer;
EXTERN_C const IID IID_IExchangeXferBuffer;
EXTERN_C const IID IID_IExchangeExportChanges;
EXTERN_C const IID IID_IExchangeImportHierarchyChanges;
EXTERN_C const IID IID_IExchangeImportContentsChanges;
EXTERN_C const IID LIBID_aclcls;
EXTERN_C const IID IID_IExchangeFolderACLs;
EXTERN_C const IID LIBID_rulecls;
EXTERN_C const IID IID_IExchangeFolderRules;
EXTERN_C const IID IID_IEDKVirtualStreamOnProperty;
EXTERN_C const IID IID_IExchangeRuleAction;
EXTERN_C const IID IID_IExchangeFastTransfer;
EXTERN_C const IID IID_IExchangeFavorites;
EXTERN_C const IID IID_IExchangeMessageCpid0;
EXTERN_C const IID IID_IExchangeRuleExtCallback;
EXTERN_C const IID IID_IExchangeRuleExt;
#ifdef EDK_USES_IID
#define INITGUID
#include <initguid.h>
#pragma warning(disable:4200)
#include <edkguid.h>
#include <rclsid.h>
#include <vsopcsid.h>
#pragma warning(disable:4200)
#define USES_IID_IUnknown
#define USES_IID_IMessage
#define USES_IID_IStream
#define USES_IID_IClassFactory
#define USES_IID_IPersistMessage
#define USES_IID_IMAPIForm
#define USES_IID_IMAPIProp
#define USES_IID_IMAPIPropData
#define USES_IID_IMAPIFolder
#define USES_IID_IABContainer
#define USES_IID_IAddrBook
#define USES_IID_IMAPIFormInfo
#define USES_IID_IMailUser
#define USES_IID_IAttachment
#define USES_IID_IDistList
#define USES_IID_IMAPIStatus
#define USES_IID_IMAPISession
#define USES_IID_IMsgStore
#define USES_IID_IProfSect
#define USES_IID_IMAPIContainer
#define USES_IID_IMAPITable
#define USES_PS_MAPI
#define USES_PS_PUBLIC_STRINGS
#endif
#include <assert.h>
#include <conio.h>
#include <ctl3d.h>
#include <ctype.h>
#include <fcntl.h>
#include <io.h>
#include <limits.h>
#include <malloc.h>
#define _MAPINLS_H_
#pragma warning(disable:4200)
#include <mapidefs.h>
#pragma warning(disable:4200)
#ifdef DEBUG
#ifdef MAPI_DEFERRED_ERRORS
#undef MAPI_DEFERRED_ERRORS
#endif
#define MAPI_DEFERRED_ERRORS 0
#endif
#include <mapicode.h>
#include <mapiform.h>
#include <mapiguid.h>
#include <mapispi.h>
#include <mapitags.h>
#include <mapiutil.h>
#include <mapival.h>
#include <mapiwin.h>
#include <mapix.h>
#include <rtflib.h>
#include <memory.h>
#pragma warning(disable:4200)
#include <edkmdb.h>
#pragma warning(disable:4200)
#pragma warning(disable:4200)
#include <_entryid.h>
#pragma warning(disable:4200)
#include <process.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#pragma warning(disable:4200)
#include <tnef.h>
#pragma warning(disable:4200)
#include <wchar.h>
#include <winbase.h>
#include <winperf.h>
#pragma warning(disable:4200)
#include <imessage.h>
#pragma warning(disable:4200)
#include <emsabtag.h>
//==============================================================================
// EDK include files. See end of file for more include files that need to be
// included after macro definitions.
//==============================================================================
#include "edkmsg.h"
#include "edkcode.h"
#include "edkdebug.h"
#include "edkmapi.h"
#include "addrlkup.h"
#include "edktrack.h"
#include "convstrc.h"
#include "convcwrp.h"
#include "edkevent.h"
#include "exchinst.h"
#include "monitor.h"
#include "gwreport.h"
#include "stats.h"
#include "stattype.h"
#include "winwrap.h"
#include "mblogon.h"
#include "edkutils.h"
#include "newpst.h"
#include "proptag.h"
#include "edkcfg.h"
#include "vsof.h"
#include "vsop.h"
//==============================================================================
// MACROS
//==============================================================================
#ifdef __cplusplus
#ifdef FBadUnknown
#undef FBadUnknown
#endif
#define FBadUnknown( lpObj ) ((lpObj) == NULL)
#endif
// convenient macros for manipulating 64-bit integers to 32-bit integers
#define LOWPART_DWORDLONG ((DWORDLONG) 0x00000000FFFFFFFF)
#define HIGHPART_DWORDLONG ((DWORDLONG) 0xFFFFFFFF00000000)
#define MAKEDWORDLONG(lo,hi) ( (DWORDLONG) ( ( (hi) << 32 ) | (lo) ) )
#define LOWDWORD(x) ( (DWORD) ( (x) & LOWPART_DWORDLONG ) )
#define HIDWORD(x) ( (DWORD) ( ( (x) & HIGHPART_DWORDLONG ) >> 32 ) )
#define LOWPART_LONGLONG ((LONGLONG) 0x00000000FFFFFFFF)
#define HIGHPART_LONGLONG ((LONGLONG) 0xFFFFFFFF00000000)
#define LOWLONG(x) ( (DWORD) ( (x) & LOWPART_LONGLONG ) )
#define HILONG(x) ( (LONG) ( ( (x) & HIGHPART_LONGLONG ) >> 32 ) )
// definition of the Exchange address type.
#define EXCHANGE_ADDRTYPE "EX"
#define MAX_ULONG (ULONG) ~0L // All bits on.
#define EDK_MAX_QUERY_ROWS 1024
#define VALID_OBJ_TYPE(x) (((x) >= ((ULONG)0x00000001)) && \
((x) <= ((ULONG)0x0000000B)))
#define VALID_PROP_ID(x) ((PROP_ID((x)) != 0x0000) && (PROP_ID((x)) != 0xFFFF))
#define CbNewSPropValue(_centries) \
((_centries)*sizeof(SPropValue))
#define CbNewFlagList(_cflag) \
(offsetof(FlagList,ulFlag) + (_cflag)*sizeof(ULONG))
#define OLECALL(x) (x)->lpVtbl
#define ULOLERELEASE(x) \
{ \
if((x) != NULL) \
{ \
OLECALL((x))->Release((x)); \
} \
(x) = NULL; \
}
#define VALID_BOOL(x) (((x) == TRUE) || ((x) == FALSE))
#define VALID_EDK_CONTAINER(x) \
((((ULONG)(x)) == ((ULONG)EDK_FOLDER)) || \
(((ULONG)(x)) == ((ULONG)EDK_PUBLIC_FOLDER)) || \
(((ULONG)(x)) == ((ULONG)EDK_DIRECTORY)))
// Returns count of elements in any array.
#define ARRAY_CNT( array) (sizeof( array) / sizeof(array[0]))
#if !defined(__cplusplus) || defined(CINTERFACE)
#define MAPICALL(x) (x)->lpVtbl
#else
#define MAPICALL(x) (x)
#endif
#ifdef MAX_ALIGN
#undef MAX_ALIGN
#endif
#define MAX_ALIGN 16
//$--cbStrLen@------------------------------------------------
// Returns total number of bytes (including NULL) used by
// a string. Useful for string allocations...
// -----------------------------------------------------------
#define cbStrLenA(sz) ((lstrlenA((sz)) + 1) * sizeof(CHAR))
#if defined(_M_IX86)
#define cbStrLenW(sz) ((lstrlenW((sz)) + 1) * sizeof(WCHAR))
#else
// lstrlenW can return 0 for UNALIGNED UNICODE strings on non-IX86 platforms
__inline static size_t cbStrLenW(
IN UNALIGNED const WCHAR *wsz)
{
size_t cbWsz = 0;
for(; *wsz; wsz++)
cbWsz += sizeof( WCHAR);
return( cbWsz + sizeof( WCHAR));
}
#endif
#ifdef UNICODE
#define cbStrLen cbStrLenW
#else
#define cbStrLen cbStrLenA
#endif
// Block transfer size for streams and files
#define EDK_CBTRANSFER 4096
#define ULRELEASE(x) \
{ \
UlRelease((x)); \
(x) = NULL; \
}
#define MAPIFREEBUFFER(x) \
{ \
MAPIFreeBuffer((x)); \
(x) = NULL; \
}
#define FREEPADRLIST(x) \
{ \
FreePadrlist((x)); \
(x) = NULL; \
}
#define FREEPROWS(x) \
{ \
FreeProws((x)); \
(x) = NULL; \
}
#define FREE(x) { if((x) != NULL) { free((void *)(x)); (x) = NULL; } }
#define LOCALFREE(x) { if((x) != NULL) {LocalFree((void *)(x)); (x) = NULL;} }
#define GLOBALFREE(x) { if((x) != NULL) {GlobalFree((void *)(x)); (x) = NULL;} }
#define DLLIMPORT __declspec( dllimport )
#define DLLEXPORT __declspec( dllexport )
#define STRNCPY(dst,src) lstrcpyn((dst), (src), (sizeof(dst)/sizeof(TCHAR))-1)
#define STRNCAT(dst,src) _tcsncat((dst), (src), (sizeof(dst)/sizeof(TCHAR))-1)
#define FREEHSCM(h) \
{ \
if ((h) != NULL) \
{ \
if(CloseServiceHandle(h) == FALSE) \
{ \
HRESULT _hr = HR_LOG(E_FAIL); \
} \
(h) = NULL; \
} \
}
#define CLOSEHANDLE(h) \
{ \
if(((h) != NULL) && ((h) != INVALID_HANDLE_VALUE)) \
{ \
if(CloseHandle((h)) == FALSE) \
{ \
HRESULT _hr = HR_LOG(E_FAIL); \
} \
(h) = NULL; \
} \
}
#define REGCLOSEKEY(h) \
{ \
if((h) != NULL && (h) != INVALID_HANDLE_VALUE) \
{ \
if(RegCloseKey((h)) != ERROR_SUCCESS) \
{ \
HRESULT _hr = HR_LOG(E_FAIL); \
} \
(h) = NULL; \
} \
}
//==============================================================================
// EDK include files that depend upon above macros.
//==============================================================================
#ifdef __cplusplus // C++ classes
#include "EdkUtCPP.H"
#endif
//==============================================================================
#endif // RC_INVOKED
#pragma option pop /*P_O_Pop*/
#endif // __EDK_H__