You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.6 KiB
85 lines
2.6 KiB
/***********************************************************************
|
|
*
|
|
* _ABCONT.H
|
|
*
|
|
* Header file for code in ABCONT.C: Container Object
|
|
*
|
|
* Copyright 1992 - 1996 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
***********************************************************************/
|
|
|
|
/*
|
|
* ABContainer object.
|
|
*/
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE struct _CONTAINER
|
|
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, CONTAINER_)
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
MAPI_IMAPIPROP_METHODS(IMPL)
|
|
MAPI_IMAPICONTAINER_METHODS(IMPL)
|
|
MAPI_IABCONTAINER_METHODS(IMPL)
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, CONTAINER_)
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
MAPI_IMAPIPROP_METHODS(IMPL)
|
|
MAPI_IMAPICONTAINER_METHODS(IMPL)
|
|
MAPI_IABCONTAINER_METHODS(IMPL)
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
|
|
|
|
DECLARE_MAPI_INTERFACE(CONTAINER_) {
|
|
BEGIN_INTERFACE
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
MAPI_IMAPIPROP_METHODS(IMPL)
|
|
MAPI_IMAPICONTAINER_METHODS(IMPL)
|
|
MAPI_IABCONTAINER_METHODS(IMPL)
|
|
};
|
|
|
|
typedef struct _CONTAINER {
|
|
MAILUSER_BASE_MEMBERS(CONTAINER)
|
|
ULONG ulType;
|
|
BOOL fLoadedLDAP;
|
|
} CONTAINER, *LPCONTAINER;
|
|
|
|
#define CBCONTAINER sizeof(CONTAINER)
|
|
|
|
HRESULT HrSetCONTAINERAccess(LPCONTAINER lpCONTAINER,
|
|
ULONG ulFlags);
|
|
|
|
//
|
|
// Create a new AB Container object
|
|
//
|
|
HRESULT HrNewCONTAINER(LPIAB lpIAB,
|
|
ULONG ulType,
|
|
LPCIID lpInterface,
|
|
ULONG ulOpenFlags,
|
|
ULONG cbEID,
|
|
LPENTRYID lpEID,
|
|
ULONG *lpulObjType,
|
|
LPVOID *lppContainer);
|
|
|
|
// Internal flags for HrNewCONTAINER - these flags determine the type of
|
|
// container being created
|
|
typedef enum _ContainerType {
|
|
AB_ROOT = 0, // Root Container
|
|
AB_WELL,
|
|
AB_DL, // Distribution list container
|
|
AB_CONTAINER, // Normal container
|
|
AB_PAB, // "PAB" or default container
|
|
AB_LDAP_CONTAINER // Special LDAP container
|
|
} CONTAINER_TYPE, *LPCONTAINER_TYPE;
|
|
|
|
|
|
|
|
// Inside the WAB when we call GetContentsTable followed by SetColumns, we basically end up
|
|
// reading everything from the WAB twice which is a time consuming process
|
|
// To improve performance we can try avoiding one unnecessary call but we need to do
|
|
// this carefully ..
|
|
// The following flag is specified to GetContentsTable ONLY WHEN that call will
|
|
// be imediately followed by SetColumns .. do not expose this flag to anyone else..
|
|
// this is a WAB-internal flag only
|
|
//
|
|
#define WAB_CONTENTTABLE_NODATA 0x00400000
|