home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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
- #pragma option push -b -a8 -pc -A- /*P_O_Push*/
- #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_INCEST MAKE_SYNC_E(0x804)
- #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 + 0x5)
- #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)
-
-
- #pragma option pop /*P_O_Pop*/
- #endif //EDKMDB_INCLUDED
-