/* * EDKMDB.H * * Microsoft Exchange Information Store * Copyright (C) 1986-1996, Microsoft Corporation * * Contains declarations of additional properties and interfaces * offered by Microsoft Exchange Information Store */ #ifndef EDKMDB_INCLUDED #define EDKMDB_INCLUDED /* * WARNING: Many of the property id values contained within this * file are subject to change. For best results please use the * literals declared here instead of the numerical values. */ #define pidExchangeXmitReservedMin 0x3FE0 #define pidExchangeNonXmitReservedMin 0x65E0 #define pidProfileMin 0x6600 #define pidStoreMin 0x6618 #define pidFolderMin 0x6638 #define pidMessageReadOnlyMin 0x6640 #define pidMessageWriteableMin 0x6658 #define pidAttachReadOnlyMin 0x666C #define pidSpecialMin 0x6670 #define pidAdminMin 0x6690 #define pidSecureProfileMin PROP_ID_SECURE_MIN /*------------------------------------------------------------------------ * * PROFILE properties * * These are used in profiles which contain the Exchange Messaging * Service. These profiles contain a "global section" used to store * common data, plus individual sections for the transport provider, * one store provider for the user, one store provider for the public * store, and one store provider for each additional mailbox the user * has delegate access to. * *-----------------------------------------------------------------------*/ /* GUID of the global section */ #define pbGlobalProfileSectionGuid "\x13\xDB\xB0\xC8\xAA\x05\x10\x1A\x9B\xB0\x00\xAA\x00\x2F\xC4\x5A" /* Properties in the global section */ #define PR_PROFILE_VERSION PROP_TAG( PT_LONG, pidProfileMin+0x00) #define PR_PROFILE_CONFIG_FLAGS PROP_TAG( PT_LONG, pidProfileMin+0x01) #define PR_PROFILE_HOME_SERVER PROP_TAG( PT_STRING8, pidProfileMin+0x02) #define PR_PROFILE_HOME_SERVER_DN PROP_TAG( PT_STRING8, pidProfileMin+0x12) #define PR_PROFILE_HOME_SERVER_ADDRS PROP_TAG( PT_MV_STRING8, pidProfileMin+0x13) #define PR_PROFILE_USER PROP_TAG( PT_STRING8, pidProfileMin+0x03) #define PR_PROFILE_CONNECT_FLAGS PROP_TAG( PT_LONG, pidProfileMin+0x04) #define PR_PROFILE_TRANSPORT_FLAGS PROP_TAG( PT_LONG, pidProfileMin+0x05) #define PR_PROFILE_UI_STATE PROP_TAG( PT_LONG, pidProfileMin+0x06) #define PR_PROFILE_UNRESOLVED_NAME PROP_TAG( PT_STRING8, pidProfileMin+0x07) #define PR_PROFILE_UNRESOLVED_SERVER PROP_TAG( PT_STRING8, pidProfileMin+0x08) #define PR_PROFILE_BINDING_ORDER PROP_TAG( PT_STRING8, pidProfileMin+0x09) #define PR_PROFILE_MAX_RESTRICT PROP_TAG( PT_LONG, pidProfileMin+0x0D) #define PR_PROFILE_AB_FILES_PATH PROP_TAG( PT_STRING8, pidProfileMin+0xE) #define PR_PROFILE_OFFLINE_STORE_PATH PROP_TAG( PT_STRING8, pidProfileMin+0x10) #define PR_PROFILE_OFFLINE_INFO PROP_TAG( PT_BINARY, pidProfileMin+0x11) #define PR_PROFILE_ADDR_INFO PROP_TAG( PT_BINARY, pidSpecialMin+0x17) #define PR_PROFILE_OPTIONS_DATA PROP_TAG( PT_BINARY, pidSpecialMin+0x19) #define PR_PROFILE_SECURE_MAILBOX PROP_TAG( PT_BINARY, pidSecureProfileMin + 0) #define PR_DISABLE_WINSOCK PROP_TAG( PT_LONG, pidProfileMin+0x18) /* Properties passed through the Service Entry to the OST */ #define PR_OST_ENCRYPTION PROP_TAG(PT_LONG, 0x6702) /* Values for PR_OST_ENCRYPTION */ #define OSTF_NO_ENCRYPTION ((DWORD)0x80000000) #define OSTF_COMPRESSABLE_ENCRYPTION ((DWORD)0x40000000) #define OSTF_BEST_ENCRYPTION ((DWORD)0x20000000) /* Properties in each profile section */ #define PR_PROFILE_OPEN_FLAGS PROP_TAG( PT_LONG, pidProfileMin+0x09) #define PR_PROFILE_TYPE PROP_TAG( PT_LONG, pidProfileMin+0x0A) #define PR_PROFILE_MAILBOX PROP_TAG( PT_STRING8, pidProfileMin+0x0B) #define PR_PROFILE_SERVER PROP_TAG( PT_STRING8, pidProfileMin+0x0C) #define PR_PROFILE_SERVER_DN PROP_TAG( PT_STRING8, pidProfileMin+0x14) /* Properties in the Public Folders section */ #define PR_PROFILE_FAVFLD_DISPLAY_NAME PROP_TAG(PT_STRING8, pidProfileMin+0x0F) #define PR_PROFILE_FAVFLD_COMMENT PROP_TAG(PT_STRING8, pidProfileMin+0x15) #define PR_PROFILE_ALLPUB_DISPLAY_NAME PROP_TAG(PT_STRING8, pidProfileMin+0x16) #define PR_PROFILE_ALLPUB_COMMENT PROP_TAG(PT_STRING8, pidProfileMin+0x17) // Current value for PR_PROFILE_VERSION #define PROFILE_VERSION ((ULONG)0x501) // Bit values for PR_PROFILE_CONFIG_FLAGS #define CONFIG_SERVICE ((ULONG)1) #define CONFIG_SHOW_STARTUP_UI ((ULONG)2) #define CONFIG_SHOW_CONNECT_UI ((ULONG)4) #define CONFIG_PROMPT_FOR_CREDENTIALS ((ULONG)8) // Bit values for PR_PROFILE_CONNECT_FLAGS #define CONNECT_USE_ADMIN_PRIVILEGE ((ULONG)1) #define CONNECT_NO_RPC_ENCRYPTION ((ULONG)2) // Bit values for PR_PROFILE_TRANSPORT_FLAGS #define TRANSPORT_DOWNLOAD ((ULONG)1) #define TRANSPORT_UPLOAD ((ULONG)2) // Bit values for PR_PROFILE_OPEN_FLAGS #define OPENSTORE_USE_ADMIN_PRIVILEGE ((ULONG)1) #define OPENSTORE_PUBLIC ((ULONG)2) #define OPENSTORE_HOME_LOGON ((ULONG)4) #define OPENSTORE_TAKE_OWNERSHIP ((ULONG)8) #define OPENSTORE_OVERRIDE_HOME_MDB ((ULONG)16) #define OPENSTORE_TRANSPORT ((ULONG)32) #define OPENSTORE_REMOTE_TRANSPORT ((ULONG)64) // Values for PR_PROFILE_TYPE #define PROFILE_PRIMARY_USER ((ULONG)1) #define PROFILE_DELEGATE ((ULONG)2) #define PROFILE_PUBLIC_STORE ((ULONG)3) #define PROFILE_SUBSCRIPTION ((ULONG)4) /*------------------------------------------------------------------------ * * MDB object properties * *-----------------------------------------------------------------------*/ /* PR_MDB_PROVIDER GUID in stores table */ #define pbExchangeProviderPrimaryUserGuid "\x54\x94\xA1\xC0\x29\x7F\x10\x1B\xA5\x87\x08\x00\x2B\x2A\x25\x17" #define pbExchangeProviderDelegateGuid "\x9e\xb4\x77\x00\x74\xe4\x11\xce\x8c\x5e\x00\xaa\x00\x42\x54\xe2" #define pbExchangeProviderPublicGuid "\x78\xb2\xfa\x70\xaf\xf7\x11\xcd\x9b\xc8\x00\xaa\x00\x2f\xc4\x5a" #define pbExchangeProviderXportGuid "\xa9\x06\x40\xe0\xd6\x93\x11\xcd\xaf\x95\x00\xaa\x00\x4a\x35\xc3" // All properties in this section are readonly // Identity of store // All stores #define PR_USER_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x01) #define PR_USER_NAME PROP_TAG( PT_STRING8, pidStoreMin+0x02) // All mailbox stores #define PR_MAILBOX_OWNER_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x03) #define PR_MAILBOX_OWNER_NAME PROP_TAG( PT_STRING8, pidStoreMin+0x04) #define PR_OOF_STATE PROP_TAG( PT_BOOLEAN, pidStoreMin+0x05) // Public stores -- name of hierarchy server #define PR_HIERARCHY_SERVER PROP_TAG( PT_TSTRING, pidStoreMin+0x1B) // Entryids of special folders // All mailbox stores #define PR_SCHEDULE_FOLDER_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x06) // All mailbox and gateway stores #define PR_IPM_DAF_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x07) // Public store #define PR_NON_IPM_SUBTREE_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x08) #define PR_EFORMS_REGISTRY_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x09) #define PR_SPLUS_FREE_BUSY_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x0A) #define PR_OFFLINE_ADDRBOOK_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x0B) #define PR_EFORMS_FOR_LOCALE_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x0C) #define PR_FREE_BUSY_FOR_LOCAL_SITE_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x0D) #define PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x0E) #define PR_OFFLINE_MESSAGE_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x0F) #define PR_IPM_FAVORITES_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x18) #define PR_IPM_PUBLIC_FOLDERS_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x19) // Gateway stores #define PR_GW_MTSIN_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x10) #define PR_GW_MTSOUT_ENTRYID PROP_TAG( PT_BINARY, pidStoreMin+0x11) #define PR_TRANSFER_ENABLED PROP_TAG( PT_BOOLEAN, pidStoreMin+0x12) // This property is preinitialized to 256 bytes of zeros // GetProp on this property is guaranteed to RPC. May be used // to determine line speed of connection to server. #define PR_TEST_LINE_SPEED PROP_TAG( PT_BINARY, pidStoreMin+0x13) // Used with OpenProperty to get interface, also on folders #define PR_HIERARCHY_SYNCHRONIZER PROP_TAG( PT_OBJECT, pidStoreMin+0x14) #define PR_CONTENTS_SYNCHRONIZER PROP_TAG( PT_OBJECT, pidStoreMin+0x15) #define PR_COLLECTOR PROP_TAG( PT_OBJECT, pidStoreMin+0x16) // Used with OpenProperty to get interface for folders, messages, attachmentson #define PR_FAST_TRANSFER PROP_TAG( PT_OBJECT, pidStoreMin+0x17) // This property is available on mailbox and public stores. If it exists // and its value is TRUE, the store is connected to the offline store provider. #define PR_STORE_OFFLINE PROP_TAG( PT_BOOLEAN, pidStoreMin+0x1A) // In transit state for store object. This state is // set when mail is being moved and it pauses mail delivery // to the mail box #define PR_IN_TRANSIT PROP_TAG( PT_BOOLEAN, pidStoreMin) // Writable only with Admin rights, available on public stores and folders #define PR_REPLICATION_STYLE PROP_TAG( PT_LONG, pidAdminMin) #define PR_REPLICATION_SCHEDULE PROP_TAG( PT_BINARY, pidAdminMin+0x01) #define PR_REPLICATION_MESSAGE_PRIORITY PROP_TAG( PT_LONG, pidAdminMin+0x02) // Writable only with Admin rights, available on public stores #define PR_OVERALL_MSG_AGE_LIMIT PROP_TAG( PT_LONG, pidAdminMin+0x03 ) #define PR_REPLICATION_ALWAYS_INTERVAL PROP_TAG( PT_LONG, pidAdminMin+0x04 ) #define PR_REPLICATION_MSG_SIZE PROP_TAG( PT_LONG, pidAdminMin+0x05 ) // default replication style=always interval (minutes) #define STYLE_ALWAYS_INTERVAL_DEFAULT (ULONG) 15 // default replication message size limit (KB) #define REPLICATION_MESSAGE_SIZE_LIMIT_DEFAULT (ULONG) 100 // Values for PR_REPLICATION_STYLE #define STYLE_NEVER (ULONG) 0 // never replicate #define STYLE_NORMAL (ULONG) 1 // use 84 byte schedule TIB #define STYLE_ALWAYS (ULONG) 2 // replicate at fastest rate #define STYLE_DEFAULT (ULONG) -1 // default value /*------------------------------------------------------------------------ * * INCREMENTAL CHANGE SYNCHRONIZATION * folder and message properties * *-----------------------------------------------------------------------*/ #define PR_SOURCE_KEY PROP_TAG( PT_BINARY, pidExchangeNonXmitReservedMin+0x0) #define PR_PARENT_SOURCE_KEY PROP_TAG( PT_BINARY, pidExchangeNonXmitReservedMin+0x1) #define PR_CHANGE_KEY PROP_TAG( PT_BINARY, pidExchangeNonXmitReservedMin+0x2) #define PR_PREDECESSOR_CHANGE_LIST PROP_TAG( PT_BINARY, pidExchangeNonXmitReservedMin+0x3) /*------------------------------------------------------------------------ * * FOLDER object properties * *-----------------------------------------------------------------------*/ // Read only, available on all folders #define PR_FOLDER_CHILD_COUNT PROP_TAG( PT_LONG, pidFolderMin) #define PR_RIGHTS PROP_TAG( PT_LONG, pidFolderMin+0x01) #define PR_ACL_TABLE PROP_TAG( PT_OBJECT, pidExchangeXmitReservedMin) #define PR_RULES_TABLE PROP_TAG( PT_OBJECT, pidExchangeXmitReservedMin+0x1) #define PR_HAS_RULES PROP_TAG( PT_BOOLEAN, pidFolderMin+0x02) //Read only, available only for public folders #define PR_ADDRESS_BOOK_ENTRYID PROP_TAG( PT_BINARY, pidFolderMin+0x03) //Writable, available on folders in all stores #define PR_ACL_DATA PROP_TAG( PT_BINARY, pidExchangeXmitReservedMin) #define PR_RULES_DATA PROP_TAG( PT_BINARY, pidExchangeXmitReservedMin+0x1) #define PR_FOLDER_DESIGN_FLAGS PROP_TAG( PT_LONG, pidExchangeXmitReservedMin+0x2) #define PR_DESIGN_IN_PROGRESS PROP_TAG( PT_BOOLEAN, pidExchangeXmitReservedMin+0x4) #define PR_SECURE_ORIGINATION PROP_TAG( PT_BOOLEAN, pidExchangeXmitReservedMin+0x5) //Writable, available only for public folders #define PR_PUBLISH_IN_ADDRESS_BOOK PROP_TAG( PT_BOOLEAN, pidExchangeXmitReservedMin+0x6) #define PR_RESOLVE_METHOD PROP_TAG( PT_LONG, pidExchangeXmitReservedMin+0x7) #define PR_ADDRESS_BOOK_DISPLAY_NAME PROP_TAG( PT_TSTRING, pidExchangeXmitReservedMin+0x8) //Writable, used to indicate locale id for eforms registry subfolders #define PR_EFORMS_LOCALE_ID PROP_TAG( PT_LONG, pidExchangeXmitReservedMin+0x9) // Writable only with Admin rights, available only for public folders #define PR_REPLICA_LIST PROP_TAG( PT_BINARY, pidAdminMin+0x8) #define PR_OVERALL_AGE_LIMIT PROP_TAG( PT_LONG, pidAdminMin+0x9) //PR_RESOLVE_METHOD values #define RESOLVE_METHOD_DEFAULT ((LONG)0) // default handling attach conflicts #define RESOLVE_METHOD_LAST_WRITER_WINS ((LONG)1) // the last writer will win conflict #define RESOLVE_METHOD_NO_CONFLICT_NOTIFICATION ((LONG)2) // no conflict notif //Read only, available only for public folder favorites #define PR_PUBLIC_FOLDER_ENTRYID PROP_TAG( PT_BINARY, pidFolderMin+0x04) /*------------------------------------------------------------------------ * * MESSAGE object properties * *-----------------------------------------------------------------------*/ // Read only, automatically set on all messages in all stores #define PR_HAS_NAMED_PROPERTIES PROP_TAG(PT_BOOLEAN, pidMessageReadOnlyMin+0x0A) // Read only but outside the provider specific range for replication thru GDK-GWs #define PR_CREATOR_NAME PROP_TAG(PT_TSTRING, pidExchangeXmitReservedMin+0x18) #define PR_CREATOR_ENTRYID PROP_TAG(PT_BINARY, pidExchangeXmitReservedMin+0x19) #define PR_LAST_MODIFIER_NAME PROP_TAG(PT_TSTRING, pidExchangeXmitReservedMin+0x1A) #define PR_LAST_MODIFIER_ENTRYID PROP_TAG(PT_BINARY, pidExchangeXmitReservedMin+0x1B) // Read only, appears on messages which have DAM's pointing to them #define PR_HAS_DAMS PROP_TAG( PT_BOOLEAN, pidExchangeXmitReservedMin+0xA) #define PR_RULE_TRIGGER_HISTORY PROP_TAG( PT_BINARY, pidExchangeXmitReservedMin+0x12) #define PR_MOVE_TO_STORE_ENTRYID PROP_TAG( PT_BINARY, pidExchangeXmitReservedMin+0x13) #define PR_MOVE_TO_FOLDER_ENTRYID PROP_TAG( PT_BINARY, pidExchangeXmitReservedMin+0x14) // Read only, available only on messages in the public store #define PR_REPLICA_SERVER PROP_TAG(PT_TSTRING, pidMessageReadOnlyMin+0x4) // Writeable, used for recording send option dialog settings #define PR_DEFERRED_SEND_NUMBER PROP_TAG( PT_LONG, pidExchangeXmitReservedMin+0xB) #define PR_DEFERRED_SEND_UNITS PROP_TAG( PT_LONG, pidExchangeXmitReservedMin+0xC) #define PR_EXPIRY_NUMBER PROP_TAG( PT_LONG, pidExchangeXmitReservedMin+0xD) #define PR_EXPIRY_UNITS PROP_TAG( PT_LONG, pidExchangeXmitReservedMin+0xE) // Writeable, deferred send time #define PR_DEFERRED_SEND_TIME PROP_TAG( PT_SYSTIME, pidExchangeXmitReservedMin+0xF) //Writeable, intended for both folders and messages in gateway mailbox #define PR_GW_ADMIN_OPERATIONS PROP_TAG( PT_LONG, pidMessageWriteableMin) //Writeable, used for DMS messages #define PR_P1_CONTENT PROP_TAG( PT_BINARY, 0x1100) #define PR_P1_CONTENT_TYPE PROP_TAG( PT_BINARY, 0x1101) // Properties on deferred action messages #define PR_CLIENT_ACTIONS PROP_TAG(PT_BINARY, pidMessageReadOnlyMin+0x5) #define PR_DAM_ORIGINAL_ENTRYID PROP_TAG(PT_BINARY, pidMessageReadOnlyMin+0x6) #define PR_DAM_BACK_PATCHED PROP_TAG( PT_BOOLEAN, pidMessageReadOnlyMin+0x7) // Properties on deferred action error messages #define PR_RULE_ERROR PROP_TAG(PT_LONG, pidMessageReadOnlyMin+0x8) #define PR_RULE_ACTION_TYPE PROP_TAG(PT_LONG, pidMessageReadOnlyMin+0x9) #define PR_RULE_ACTION_NUMBER PROP_TAG(PT_LONG, pidMessageReadOnlyMin+0x10) #define PR_RULE_FOLDER_ENTRYID PROP_TAG(PT_BINARY, pidMessageReadOnlyMin+0x11) // Property on conflict notification indicating entryid of conflicting object #define PR_CONFLICT_ENTRYID PROP_TAG(PT_BINARY, pidExchangeXmitReservedMin+0x10) // Property on messages to indicate the language client used to create this message #define PR_MESSAGE_LOCALE_ID PROP_TAG(PT_LONG, pidExchangeXmitReservedMin+0x11) // Properties on Quota warning messages to indicate Storage quota and Excess used #define PR_STORAGE_QUOTA_LIMIT PROP_TAG(PT_LONG, pidExchangeXmitReservedMin+0x15) #define PR_EXCESS_STORAGE_USED PROP_TAG(PT_LONG, pidExchangeXmitReservedMin+0x16) #define PR_SVR_GENERATING_QUOTA_MSG PROP_TAG(PT_TSTRING, pidExchangeXmitReservedMin+0x17) // Property affixed by delegation rule and deleted on forwards #define PR_DELEGATED_BY_RULE PROP_TAG( PT_BOOLEAN, pidExchangeXmitReservedMin+0x3) // Message status bit used to indicate message is in conflict #define MSGSTATUS_IN_CONFLICT ((ULONG) 0x800) /*------------------------------------------------------------------------ * * ATTACHMENT object properties * *-----------------------------------------------------------------------*/ // Appears on attachments to a message marked to be in conflict. Identifies // those attachments which are conflicting versions of the top level message #define PR_IN_CONFLICT PROP_TAG(PT_BOOLEAN, pidAttachReadOnlyMin) /*------------------------------------------------------------------------ * * TABLE object properties * * Id Range: 0x662F-0x662F * *-----------------------------------------------------------------------*/ //This property can be used in a contents table to get PR_ENTRYID returned //as a long term entryid instead of a short term entryid. #define PR_LONGTERM_ENTRYID_FROM_TABLE PROP_TAG(PT_BINARY, pidSpecialMin) /*------------------------------------------------------------------------ * * Gateway "MTE" ENVELOPE properties * * Id Range: 0x66E0-0x66FF * *-----------------------------------------------------------------------*/ #define PR_ORIGINATOR_NAME PROP_TAG( PT_TSTRING, pidMessageWriteableMin+0x3) #define PR_ORIGINATOR_ADDR PROP_TAG( PT_TSTRING, pidMessageWriteableMin+0x4) #define PR_ORIGINATOR_ADDRTYPE PROP_TAG( PT_TSTRING, pidMessageWriteableMin+0x5) #define PR_ORIGINATOR_ENTRYID PROP_TAG( PT_BINARY, pidMessageWriteableMin+0x6) #define PR_ARRIVAL_TIME PROP_TAG( PT_SYSTIME, pidMessageWriteableMin+0x7) #define PR_TRACE_INFO PROP_TAG( PT_BINARY, pidMessageWriteableMin+0x8) #define PR_INTERNAL_TRACE_INFO PROP_TAG( PT_BINARY, pidMessageWriteableMin+0x12) #define PR_SUBJECT_TRACE_INFO PROP_TAG( PT_BINARY, pidMessageWriteableMin+0x9) #define PR_RECIPIENT_NUMBER PROP_TAG( PT_LONG, pidMessageWriteableMin+0xA) #define PR_MTS_SUBJECT_ID PROP_TAG(PT_BINARY, pidMessageWriteableMin+0xB) #define PR_REPORT_DESTINATION_NAME PROP_TAG(PT_TSTRING, pidMessageWriteableMin+0xC) #define PR_REPORT_DESTINATION_ENTRYID PROP_TAG(PT_BINARY, pidMessageWriteableMin+0xD) #define PR_CONTENT_SEARCH_KEY PROP_TAG(PT_BINARY, pidMessageWriteableMin+0xE) #define PR_FOREIGN_ID PROP_TAG(PT_BINARY, pidMessageWriteableMin+0xF) #define PR_FOREIGN_REPORT_ID PROP_TAG(PT_BINARY, pidMessageWriteableMin+0x10) #define PR_FOREIGN_SUBJECT_ID PROP_TAG(PT_BINARY, pidMessageWriteableMin+0x11) #define PR_MTS_ID PR_MESSAGE_SUBMISSION_ID #define PR_MTS_REPORT_ID PR_MESSAGE_SUBMISSION_ID /*------------------------------------------------------------------------ * * Trace properties format * PR_TRACE_INFO * PR_INTERNAL_TRACE_INFO * *-----------------------------------------------------------------------*/ #define MAX_ADMD_NAME_SIZ 17 #define MAX_PRMD_NAME_SIZ 17 #define MAX_COUNTRY_NAME_SIZ 4 #define MAX_MTA_NAME_SIZ 33 #define ADMN_PAD 3 #define PRMD_PAD 3 #define COUNTRY_PAD 0 #define MTA_PAD 3 typedef struct { LONG lAction; // The routing action the tracing site // took. FILETIME ftArrivalTime; // The time at which the communique // entered the tracing site. FILETIME ftDeferredTime; // The time are which the tracing site // released the message. char rgchADMDName[MAX_ADMD_NAME_SIZ+ADMN_PAD]; // ADMD char rgchCountryName[MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD]; // Country char rgchPRMDId[MAX_PRMD_NAME_SIZ+PRMD_PAD]; // PRMD char rgchAttADMDName[MAX_ADMD_NAME_SIZ+ADMN_PAD]; // Attempted ADMD char rgchAttCountryName[MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD]; // Attempted Country char rgchAttPRMDId[MAX_PRMD_NAME_SIZ+PRMD_PAD]; // Attempted PRMD } TRACEENTRY, FAR * LPTRACEENTRY; typedef struct { ULONG cEntries; // Number of trace entries TRACEENTRY rgtraceentry[MAPI_DIM]; // array of trace entries } TRACEINFO, FAR * LPTRACEINFO; typedef struct { LONG lAction; // The routing action the tracing domain took. FILETIME ftArrivalTime; // The time at which the communique entered the tracing domain. FILETIME ftDeferredTime; // The time are which the tracing domain released the message. char rgchADMDName[MAX_ADMD_NAME_SIZ+ADMN_PAD]; // ADMD char rgchCountryName[MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD]; // Country char rgchPRMDId[MAX_PRMD_NAME_SIZ+PRMD_PAD]; // PRMD char rgchAttADMDName[MAX_ADMD_NAME_SIZ+ADMN_PAD]; // Attempted ADMD char rgchAttCountryName[MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD]; // Attempted Country char rgchAttPRMDId[MAX_PRMD_NAME_SIZ+PRMD_PAD]; // Attempted PRMD char rgchMTAName[MAX_MTA_NAME_SIZ+MTA_PAD]; // MTA Name char rgchAttMTAName[MAX_MTA_NAME_SIZ+MTA_PAD]; // Attempted MTA Name }INTTRACEENTRY, *PINTTRACEENTRY; typedef struct { ULONG cEntries; // Number of trace entries INTTRACEENTRY rgIntTraceEntry[MAPI_DIM]; // array of internal trace entries }INTTRACEINFO, *PINTTRACEINFO; /*------------------------------------------------------------------------ * * "IExchangeModifyTable" Interface Declaration * * Used for get/set rules and access control on folders. * *-----------------------------------------------------------------------*/ /* ulRowFlags */ #define ROWLIST_REPLACE ((ULONG)1) #define ROW_ADD ((ULONG)1) #define ROW_MODIFY ((ULONG)2) #define ROW_REMOVE ((ULONG)4) #define ROW_EMPTY (ROW_ADD|ROW_REMOVE) typedef struct _ROWENTRY { ULONG ulRowFlags; ULONG cValues; LPSPropValue rgPropVals; } ROWENTRY, FAR * LPROWENTRY; typedef struct _ROWLIST { ULONG cEntries; ROWENTRY aEntries[MAPI_DIM]; } ROWLIST, FAR * LPROWLIST; #define EXCHANGE_IEXCHANGEMODIFYTABLE_METHODS(IPURE) \ MAPIMETHOD(GetLastError) \ (THIS_ HRESULT hResult, \ ULONG ulFlags, \ LPMAPIERROR FAR * lppMAPIError) IPURE; \ MAPIMETHOD(GetTable) \ (THIS_ ULONG ulFlags, \ LPMAPITABLE FAR * lppTable) IPURE; \ MAPIMETHOD(ModifyTable) \ (THIS_ ULONG ulFlags, \ LPROWLIST lpMods) IPURE; #undef INTERFACE #define INTERFACE IExchangeModifyTable DECLARE_MAPI_INTERFACE_(IExchangeModifyTable, IUnknown) { MAPI_IUNKNOWN_METHODS(PURE) EXCHANGE_IEXCHANGEMODIFYTABLE_METHODS(PURE) }; #undef IMPL #define IMPL DECLARE_MAPI_INTERFACE_PTR(IExchangeModifyTable, LPEXCHANGEMODIFYTABLE); /* Access Control Specifics */ //Properties #define PR_MEMBER_ID PROP_TAG( PT_I8, pidSpecialMin+0x01) #define PR_MEMBER_NAME PROP_TAG( PT_TSTRING, pidSpecialMin+0x02) #define PR_MEMBER_ENTRYID PR_ENTRYID #define PR_MEMBER_RIGHTS PROP_TAG( PT_LONG, pidSpecialMin+0x03) //Security bits typedef DWORD RIGHTS; #define frightsReadAny 0x0000001L #define frightsCreate 0x0000002L #define frightsEditOwned 0x0000008L #define frightsDeleteOwned 0x0000010L #define frightsEditAny 0x0000020L #define frightsDeleteAny 0x0000040L #define frightsCreateSubfolder 0x0000080L #define frightsOwner 0x0000100L #define frightsContact 0x0000200L // NOTE: not part of rightsAll #define rightsNone 0x00000000 #define rightsReadOnly frightsReadAny #define rightsReadWrite (frightsReadAny|frightsEditAny) #define rightsAll 0x00001FBL /* Rules specifics */ //Property types #define PT_SRESTRICTION ((ULONG) 0x00FD) #define PT_ACTIONS ((ULONG) 0x00FE) //Properties in rule table #define PR_RULE_ID PROP_TAG( PT_I8, pidSpecialMin+0x04) #define PR_RULE_IDS PROP_TAG( PT_BINARY, pidSpecialMin+0x05) #define PR_RULE_SEQUENCE PROP_TAG( PT_LONG, pidSpecialMin+0x06) #define PR_RULE_STATE PROP_TAG( PT_LONG, pidSpecialMin+0x07) #define PR_RULE_USER_FLAGS PROP_TAG( PT_LONG, pidSpecialMin+0x08) #define PR_RULE_CONDITION PROP_TAG( PT_SRESTRICTION, pidSpecialMin+0x09) #define PR_RULE_ACTIONS PROP_TAG( PT_ACTIONS, pidSpecialMin+0x10) #define PR_RULE_PROVIDER PROP_TAG( PT_STRING8, pidSpecialMin+0x11) #define PR_RULE_NAME PROP_TAG( PT_TSTRING, pidSpecialMin+0x12) #define PR_RULE_LEVEL PROP_TAG( PT_LONG, pidSpecialMin+0x13) #define PR_RULE_PROVIDER_DATA PROP_TAG( PT_BINARY, pidSpecialMin+0x14) //PR_STATE property values #define ST_DISABLED 0x0000 #define ST_ENABLED 0x0001 #define ST_ERROR 0x0002 #define ST_ONLY_WHEN_OOF 0x0004 #define ST_KEEP_OOF_HIST 0x0008 #define ST_EXIT_LEVEL 0x0010 #define ST_CLEAR_OOF_HIST 0x80000000 //Empty restriction #define NULL_RESTRICTION 0xff // special RELOP for Member of DL #define RELOP_MEMBER_OF_DL 100 //Action types typedef enum { OP_MOVE = 1, OP_COPY, OP_REPLY, OP_OOF_REPLY, OP_DEFER_ACTION, OP_BOUNCE, OP_FORWARD, OP_DELEGATE, OP_TAG, OP_DELETE, OP_MARK_AS_READ } ACTTYPE; // action flavors // for OP_REPLY #define DO_NOT_SEND_TO_ORIGINATOR 1 //scBounceCode values #define BOUNCE_MESSAGE_SIZE_TOO_LARGE (SCODE) MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD #define BOUNCE_FORMS_MISMATCH (SCODE) MAPI_DIAG_RENDITION_UNSUPPORTED #define BOUNCE_ACCESS_DENIED (SCODE) MAPI_DIAG_MAIL_REFUSED //Message class prefix for Reply and OOF Reply templates #define szReplyTemplateMsgClassPrefix "IPM.Note.Rules.ReplyTemplate." #define szOofTemplateMsgClassPrefix "IPM.Note.Rules.OofTemplate." //Action structure typedef struct _action { ACTTYPE acttype; // to indicate which flavour of the action. ULONG ulActionFlavor; // Action restriction // currently unsed and must be set to NULL LPSRestriction lpRes; // currently unused, must be set to 0. LPSPropTagArray lpPropTagArray; // User defined flags ULONG ulFlags; // padding to align the union on 8 byte boundary ULONG dwAlignPad; union { // used for OP_MOVE and OP_COPY actions struct { ULONG cbStoreEntryId; LPENTRYID lpStoreEntryId; ULONG cbFldEntryId; LPENTRYID lpFldEntryId; } actMoveCopy; // used for OP_REPLY and OP_OOF_REPLY actions struct { ULONG cbEntryId; LPENTRYID lpEntryId; GUID guidReplyTemplate; } actReply; // used for OP_DEFER_ACTION action struct { ULONG cbData; BYTE *pbData; } actDeferAction; // Error code to set for OP_BOUNCE action SCODE scBounceCode; // list of address for OP_FORWARD and OP_DELEGATE action LPADRLIST lpadrlist; // prop value for OP_TAG action SPropValue propTag; }; } ACTION, FAR * LPACTION; // Rules version #define EDK_RULES_VERSION 1 //Array of actions typedef struct _actions { ULONG ulVersion; // use the #define above UINT cActions; LPACTION lpAction; } ACTIONS; // message class definitions for Deferred Action and Deffered Error messages #define szDamMsgClass "IPC.Microsoft Exchange 4.0.Deferred Action" #define szDemMsgClass "IPC.Microsoft Exchange 4.0.Deferred Error" /* * Rule error codes * Values for PR_RULE_ERROR */ #define RULE_ERR_UNKNOWN 1 //general catchall error #define RULE_ERR_LOAD 2 //unable to load folder rules #define RULE_ERR_DELIVERY 3 //unable to deliver message temporarily #define RULE_ERR_PARSING 4 //error while parsing #define RULE_ERR_CREATE_DAE 5 //error creating DAE message #define RULE_ERR_NO_FOLDER 6 //folder to move/copy doesn't exist #define RULE_ERR_NO_RIGHTS 7 //no rights to move/copy into folder #define RULE_ERR_CREATE_DAM 8 //error creating DAM #define RULE_ERR_NO_SENDAS 9 //can not send as another user #define RULE_ERR_NO_TEMPLATE 10 //reply template is missing #define RULE_ERR_EXECUTION 11 //error in rule execution #define RULE_ERR_QUOTA_EXCEEDED 12 #define RULE_ERR_FIRST RULE_ERR_UNKNOWN #define RULE_ERR_LAST RULE_ERR_QUOTA_EXCEEDED /*------------------------------------------------------------------------ * * "IExchangeRuleAction" Interface Declaration * * Used for get actions from a Deferred Action Message. * *-----------------------------------------------------------------------*/ #define EXCHANGE_IEXCHANGERULEACTION_METHODS(IPURE) \ MAPIMETHOD(ActionCount) \ (THIS_ ULONG FAR * lpcActions) IPURE; \ MAPIMETHOD(GetAction) \ (THIS_ ULONG ulActionNumber, \ LARGE_INTEGER * lpruleid, \ LPACTION FAR * lppAction) IPURE; #undef INTERFACE #define INTERFACE IExchangeRuleAction DECLARE_MAPI_INTERFACE_(IExchangeRuleAction, IUnknown) { MAPI_IUNKNOWN_METHODS(PURE) EXCHANGE_IEXCHANGERULEACTION_METHODS(PURE) }; #undef IMPL #define IMPL DECLARE_MAPI_INTERFACE_PTR(IExchangeRuleAction, LPEXCHANGERULEACTION); /*------------------------------------------------------------------------ * * "IExchangeManageStore" Interface Declaration * * Used for store management functions. * *-----------------------------------------------------------------------*/ #define EXCHANGE_IEXCHANGEMANAGESTORE_METHODS(IPURE) \ MAPIMETHOD(CreateStoreEntryID) \ (THIS_ LPSTR lpszMsgStoreDN, \ LPSTR lpszMailboxDN, \ ULONG ulFlags, \ ULONG FAR * lpcbEntryID, \ LPENTRYID FAR * lppEntryID) IPURE; \ MAPIMETHOD(EntryIDFromSourceKey) \ (THIS_ ULONG cFolderKeySize, \ BYTE FAR * lpFolderSourceKey, \ ULONG cMessageKeySize, \ BYTE FAR * lpMessageSourceKey, \ ULONG FAR * lpcbEntryID, \ LPENTRYID FAR * lppEntryID) IPURE; \ MAPIMETHOD(GetRights) \ (THIS_ ULONG cbUserEntryID, \ LPENTRYID lpUserEntryID, \ ULONG cbEntryID, \ LPENTRYID lpEntryID, \ ULONG FAR * lpulRights) IPURE; \ MAPIMETHOD(GetMailboxTable) \ (THIS_ LPSTR lpszServerName, \ LPMAPITABLE FAR * lppTable, \ ULONG ulFlags) IPURE; \ MAPIMETHOD(GetPublicFolderTable) \ (THIS_ LPSTR lpszServerName, \ LPMAPITABLE FAR * lppTable, \ ULONG ulFlags) IPURE; #undef INTERFACE #define INTERFACE IExchangeManageStore DECLARE_MAPI_INTERFACE_(IExchangeManageStore, IUnknown) { MAPI_IUNKNOWN_METHODS(PURE) EXCHANGE_IEXCHANGEMANAGESTORE_METHODS(PURE) }; #undef IMPL #define IMPL DECLARE_MAPI_INTERFACE_PTR(IExchangeManageStore, LPEXCHANGEMANAGESTORE); // Properties for GetMailboxTable #define PR_NT_USER_NAME PROP_TAG( PT_TSTRING, pidAdminMin+0x10) #define PR_LOCALE_ID PROP_TAG( PT_LONG, pidAdminMin+0x11 ) #define PR_LAST_LOGON_TIME PROP_TAG( PT_SYSTIME, pidAdminMin+0x12 ) #define PR_LAST_LOGOFF_TIME PROP_TAG( PT_SYSTIME, pidAdminMin+0x13 ) #define PR_STORAGE_LIMIT_INFORMATION PROP_TAG( PT_LONG, pidAdminMin+0x14 ) // Properties for GetPublicFolderTable #define PR_FOLDER_FLAGS PROP_TAG( PT_LONG, pidAdminMin+0x18 ) #define PR_LAST_ACCESS_TIME PROP_TAG( PT_SYSTIME, pidAdminMin+0x19 ) #define PR_RESTRICTION_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x1A ) #define PR_CATEG_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x1B ) #define PR_CACHED_COLUMN_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x1C ) #define PR_NORMAL_MSG_W_ATTACH_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x1D ) #define PR_ASSOC_MSG_W_ATTACH_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x1E ) #define PR_RECIPIENT_ON_NORMAL_MSG_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x1F ) #define PR_RECIPIENT_ON_ASSOC_MSG_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x20 ) #define PR_ATTACH_ON_NORMAL_MSG_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x21 ) #define PR_ATTACH_ON_ASSOC_MSG_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x22 ) #define PR_NORMAL_MESSAGE_SIZE PROP_TAG( PT_LONG, pidAdminMin+0x23 ) #define PR_NORMAL_MESSAGE_SIZE_EXTENDED PROP_TAG( PT_I8, pidAdminMin+0x23 ) #define PR_ASSOC_MESSAGE_SIZE PROP_TAG( PT_LONG, pidAdminMin+0x24 ) #define PR_ASSOC_MESSAGE_SIZE_EXTENDED PROP_TAG( PT_I8, pidAdminMin+0x24 ) #define PR_FOLDER_PATHNAME PROP_TAG(PT_TSTRING, pidAdminMin+0x25 ) #define PR_OWNER_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x26 ) #define PR_CONTACT_COUNT PROP_TAG( PT_LONG, pidAdminMin+0x27 ) // PT_I8 version of PR_MESSAGE_SIZE defined in mapitags.h #define PR_MESSAGE_SIZE_EXTENDED PROP_TAG(PT_I8, PROP_ID(PR_MESSAGE_SIZE)) /* Bits in PR_FOLDER_FLAGS */ #define MDB_FOLDER_IPM 0x1 #define MDB_FOLDER_SEARCH 0x2 #define MDB_FOLDER_NORMAL 0x4 #define MDB_FOLDER_RULES 0x8 /* Bits used in ulFlags in GetPublicFolderTable() */ #define MDB_NON_IPM 0x10 #define MDB_IPM 0x20 /* Bits in PR_STORAGE_LIMIT_INFORMATION */ #define MDB_LIMIT_BELOW 0x1 #define MDB_LIMIT_ISSUE_WARNING 0x2 #define MDB_LIMIT_PROHIBIT_SEND 0x4 #define MDB_LIMIT_NO_CHECK 0x8 /*------------------------------------------------------------------------ * * "IExchangeFastTransfer" Interface Declaration * * Used for fast transfer interface used to * implement CopyTo, CopyProps, CopyFolder, and * CopyMessages. * *-----------------------------------------------------------------------*/ // Transfer flags // Use MAPI_MOVE for move option // Transfer methods #define TRANSFER_COPYTO 1 #define TRANSFER_COPYPROPS 2 #define TRANSFER_COPYMESSAGES 3 #define TRANSFER_COPYFOLDER 4 #define EXCHANGE_IEXCHANGEFASTTRANSFER_METHODS(IPURE) \ MAPIMETHOD(Config) \ (THIS_ ULONG ulFlags, \ ULONG ulTransferMethod) IPURE; \ MAPIMETHOD(TransferBuffer) \ (THIS_ ULONG cb, \ LPBYTE lpb, \ ULONG *lpcbProcessed) IPURE; \ STDMETHOD_(BOOL, IsInterfaceOk) \ (THIS_ ULONG ulTransferMethod, \ REFIID refiid, \ LPSPropTagArray lpptagList, \ ULONG ulFlags) IPURE; #undef INTERFACE #define INTERFACE IExchangeFastTransfer DECLARE_MAPI_INTERFACE_(IExchangeFastTransfer, IUnknown) { MAPI_IUNKNOWN_METHODS(PURE) EXCHANGE_IEXCHANGEFASTTRANSFER_METHODS(PURE) }; #undef IMPL #define IMPL DECLARE_MAPI_INTERFACE_PTR(IExchangeFastTransfer, LPEXCHANGEFASTTRANSFER); /*------------------------------------------------------------------------ * * "IExchangeExportChanges" Interface Declaration * * Used for Incremental Synchronization * *-----------------------------------------------------------------------*/ #define EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS(IPURE) \ MAPIMETHOD(GetLastError) \ (THIS_ HRESULT hResult, \ ULONG ulFlags, \ LPMAPIERROR FAR * lppMAPIError) IPURE; \ MAPIMETHOD(Config) \ (THIS_ LPSTREAM lpStream, \ ULONG ulFlags, \ LPUNKNOWN lpUnk, \ LPSRestriction lpRestriction, \ LPSPropTagArray lpIncludeProps, \ LPSPropTagArray lpExcludeProps, \ ULONG ulBufferSize) IPURE; \ MAPIMETHOD(Synchronize) \ (THIS_ ULONG FAR * lpulSteps, \ ULONG FAR * lpulProgress) IPURE; \ MAPIMETHOD(UpdateState) \ (THIS_ LPSTREAM lpStream) IPURE; #undef INTERFACE #define INTERFACE IExchangeExportChanges DECLARE_MAPI_INTERFACE_(IExchangeExportChanges, IUnknown) { MAPI_IUNKNOWN_METHODS(PURE) EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS(PURE) }; #undef IMPL #define IMPL DECLARE_MAPI_INTERFACE_PTR(IExchangeExportChanges, LPEXCHANGEEXPORTCHANGES); typedef struct _ReadState { ULONG cbSourceKey; BYTE * pbSourceKey; ULONG ulFlags; } READSTATE, *LPREADSTATE; /*------------------------------------------------------------------------ * * "IExchangeImportContentsChanges" Interface Declaration * * Used for Incremental Synchronization of folder contents (i.e. messages) * *-----------------------------------------------------------------------*/ #define EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES_METHODS(IPURE) \ MAPIMETHOD(GetLastError) \ (THIS_ HRESULT hResult, \ ULONG ulFlags, \ LPMAPIERROR FAR * lppMAPIError) IPURE; \ MAPIMETHOD(Config) \ (THIS_ LPSTREAM lpStream, \ ULONG ulFlags) IPURE; \ MAPIMETHOD(UpdateState) \ (THIS_ LPSTREAM lpStream) IPURE; \ MAPIMETHOD(ImportMessageChange) \ (THIS_ ULONG cpvalChanges, \ LPSPropValue ppvalChanges, \ ULONG ulFlags, \ LPMESSAGE *lppmessage) IPURE; \ MAPIMETHOD(ImportMessageDeletion) \ (THIS_ ULONG ulFlags, \ LPENTRYLIST lpSrcEntryList) IPURE; \ MAPIMETHOD(ImportPerUserReadStateChange) \ (THIS_ ULONG cElements, \ LPREADSTATE lpReadState) IPURE; \ MAPIMETHOD(ImportMessageMove) \ (THIS_ ULONG cbSourceKeySrcFolder, \ BYTE FAR * pbSourceKeySrcFolder, \ ULONG cbSourceKeySrcMessage, \ BYTE FAR * pbSourceKeySrcMessage, \ ULONG cbPCLMessage, \ BYTE FAR * pbPCLMessage, \ ULONG cbSourceKeyDestMessage, \ BYTE FAR * pbSourceKeyDestMessage, \ ULONG cbChangeNumDestMessage, \ BYTE FAR * pbChangeNumDestMessage) IPURE; #undef INTERFACE #define INTERFACE IExchangeImportContentsChanges DECLARE_MAPI_INTERFACE_(IExchangeImportContentsChanges, IUnknown) { MAPI_IUNKNOWN_METHODS(PURE) EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES_METHODS(PURE) }; #undef IMPL #define IMPL DECLARE_MAPI_INTERFACE_PTR(IExchangeImportContentsChanges, LPEXCHANGEIMPORTCONTENTSCHANGES); /*------------------------------------------------------------------------ * * "IExchangeImportHierarchyChanges" Interface Declaration * * Used for Incremental Synchronization of folder hierarchy * *-----------------------------------------------------------------------*/ #define EXCHANGE_IEXCHANGEIMPORTHIERARCHYCHANGES_METHODS(IPURE) \ MAPIMETHOD(GetLastError) \ (THIS_ HRESULT hResult, \ ULONG ulFlags, \ LPMAPIERROR FAR * lppMAPIError) IPURE; \ MAPIMETHOD(Config) \ (THIS_ LPSTREAM lpStream, \ ULONG ulFlags) IPURE; \ MAPIMETHOD(UpdateState) \ (THIS_ LPSTREAM lpStream) IPURE; \ MAPIMETHOD(ImportFolderChange) \ (THIS_ ULONG cpvalChanges, \ LPSPropValue ppvalChanges) IPURE; \ MAPIMETHOD(ImportFolderDeletion) \ (THIS_ ULONG ulFlags, \ LPENTRYLIST lpSrcEntryList) IPURE; #undef INTERFACE #define INTERFACE IExchangeImportHierarchyChanges DECLARE_MAPI_INTERFACE_(IExchangeImportHierarchyChanges, IUnknown) { MAPI_IUNKNOWN_METHODS(PURE) EXCHANGE_IEXCHANGEIMPORTHIERARCHYCHANGES_METHODS(PURE) }; #undef IMPL #define IMPL DECLARE_MAPI_INTERFACE_PTR(IExchangeImportHierarchyChanges, LPEXCHANGEIMPORTHIERARCHYCHANGES); /*------------------------------------------------------------------------ * * Errors returned by Exchange Incremental Change Synchronization Interface * *-----------------------------------------------------------------------*/ #define MAKE_SYNC_E(err) (MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, err)) #define MAKE_SYNC_W(warn) (MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, warn)) #define SYNC_E_UNKNOWN_FLAGS MAPI_E_UNKNOWN_FLAGS #define SYNC_E_INVALID_PARAMETER E_INVALIDARG #define SYNC_E_ERROR E_FAIL #define SYNC_E_OBJECT_DELETED MAKE_SYNC_E(0x800) #define SYNC_E_IGNORE MAKE_SYNC_E(0x801) #define SYNC_E_CONFLICT MAKE_SYNC_E(0x802) #define SYNC_E_NO_PARENT MAKE_SYNC_E(0x803) #define SYNC_E_UNSYNCHRONIZED MAKE_SYNC_E(0x805) #define SYNC_W_PROGRESS MAKE_SYNC_W(0x820) #define SYNC_W_CLIENT_CHANGE_NEWER MAKE_SYNC_W(0x821) /*------------------------------------------------------------------------ * * Flags used by Exchange Incremental Change Synchronization Interface * *-----------------------------------------------------------------------*/ #define SYNC_UNICODE 0x01 #define SYNC_NO_DELETIONS 0x02 #define SYNC_NO_SOFT_DELETIONS 0x04 #define SYNC_READ_STATE 0x08 #define SYNC_ASSOCIATED 0x10 #define SYNC_NORMAL 0x20 #define SYNC_NO_CONFLICTS 0x40 #define SYNC_ONLY_SPECIFIED_PROPS 0x80 #define SYNC_NO_FOREIGN_KEYS 0x100 #define SYNC_LIMITED_IMESSAGE 0x200 /*------------------------------------------------------------------------ * * Flags used by ImportMessageDeletion and ImportFolderDeletion methods * *-----------------------------------------------------------------------*/ #define SYNC_SOFT_DELETE 0x01 #define SYNC_EXPIRY 0x02 /*------------------------------------------------------------------------ * * Flags used by ImportPerUserReadStateChange method * *-----------------------------------------------------------------------*/ #define SYNC_READ 0x01 /*------------------------------------------------------------------------ * * "IExchangeFavorites" Interface Declaration * * Used for adding or removing favorite folders from the public store. * This interface is obtained by calling QueryInterface on the folder * whose EntryID is specified by PR_IPM_FAVORITES_ENTRYID on the public * store. * *-----------------------------------------------------------------------*/ #define EXCHANGE_IEXCHANGEFAVORITES_METHODS(IPURE) \ MAPIMETHOD(GetLastError) \ (THIS_ HRESULT hResult, \ ULONG ulFlags, \ LPMAPIERROR FAR * lppMAPIError) IPURE; \ MAPIMETHOD(AddFavorites) \ (THIS_ LPENTRYLIST lpEntryList) IPURE; \ MAPIMETHOD(DelFavorites) \ (THIS_ LPENTRYLIST lpEntryList) IPURE; \ #undef INTERFACE #define INTERFACE IExchangeFavorites DECLARE_MAPI_INTERFACE_(IExchangeFavorites, IUnknown) { MAPI_IUNKNOWN_METHODS(PURE) EXCHANGE_IEXCHANGEFAVORITES_METHODS(PURE) }; DECLARE_MAPI_INTERFACE_PTR(IExchangeFavorites, LPEXCHANGEFAVORITES); /*------------------------------------------------------------------------ * * Properties used by the Offline Folders API * *-----------------------------------------------------------------------*/ #define PR_OFFLINE_FLAGS PROP_TAG( PT_LONG, pidFolderMin + 0x10) #define PR_SYNCHRONIZE_FLAGS PROP_TAG( PT_LONG, pidExchangeNonXmitReservedMin + 0x4) /*------------------------------------------------------------------------ * * Flags used by the Offline Folders API * *-----------------------------------------------------------------------*/ #define OF_AVAILABLE_OFFLINE ((ULONG) 0x00000001) #define OF_FORCE ((ULONG) 0x80000000) #define SF_DISABLE_STARTUP_SYNC ((ULONG) 0x00000001) #endif //EDKMDB_INCLUDED