//-------------------------------------------------------------------------- // OEStore6.h // Copyright (c) Microsoft Corporation. All rights reserved. //-------------------------------------------------------------------------- #pragma once typedef DWORD FLDRFLAGS; typedef BYTE FOLDERTYPE; typedef DWORD RULEID; typedef DWORD MESSAGEFLAGS; typedef DWORDLONG FOLDERID; #include "syncop.h" //------------------------------------------------------------------ // Folder Database Version //------------------------------------------------------------------ const DWORD FOLDER_DATABASE_VERSION_OE6 = 5; DEFINE_GUID(CLSID_MessageDatabase_OE6, 0x6f74fdc5, 0xe366, 0x11d1, 0x9a, 0x4e, 0x0, 0xc0, 0x4f, 0xa3, 0x9, 0xd4); DEFINE_GUID(CLSID_FolderDatabase_OE6, 0x6f74fdc6, 0xe366, 0x11d1, 0x9a, 0x4e, 0x0, 0xc0, 0x4f, 0xa3, 0x9, 0xd4); DEFINE_GUID(CLSID_SyncOpDatabase_OE6, 0x26fe9d30, 0x1a8f, 0x11d2, 0xaa, 0xbf, 0x0, 0x60, 0x97, 0xd4, 0x74, 0xc4); //------------------------------------------------------------------ // STOREUSERDATA_OE6 //------------------------------------------------------------------ typedef struct tagSTOREUSERDATA_OE6 { FILETIME ftCreated; BYTE fConvertedToDBX; BYTE rgbReserved[255]; } STOREUSERDATA_OE6, *LPSTOREUSERDATA_OE6; //------------------------------------------------------------------ // FLDCOLID_OE6 //------------------------------------------------------------------ typedef enum tagFLDCOLID_OE6 { FLDCOL_OE6_ID=0, FLDCOL_OE6_PARENT, FLDCOL_OE6_NAME, FLDCOL_OE6_FILE, FLDCOL_OE6_DESCRIPTION, FLDCOL_OE6_ACCOUNTID, FLDCOL_OE6_FLAGS, FLDCOL_OE6_MESSAGES, FLDCOL_OE6_UNREAD, FLDCOL_OE6_SPECIAL, FLDCOL_OE6_TYPE, FLDCOL_OE6_HIERARCHY, FLDCOL_OE6_LISTSTAMP, FLDCOL_OE6_SERVERHIGH, FLDCOL_OE6_SERVERLOW, FLDCOL_OE6_SERVERCOUNT, FLDCOL_OE6_CLIENTHIGH, FLDCOL_OE6_CLIENTLOW, FLDCOL_OE6_NOTDOWNLOADED, FLDCOL_OE6_REQUESTED, FLDCOL_OE6_URLCOMPONENT, FLDCOL_OE6_READ, FLDCOL_OE6_THREADUNREAD, FLDCOL_OE6_VIEWUNREAD, FLDCOL_OE6_STATUSMSGDELTA, FLDCOL_OE6_STATUSUNREADDELTA, FLDCOL_OE6_WATCHEDHIGH, FLDCOL_OE6_WATCHEDUNREAD, FLDCOL_OE6_WATCHED, FLDCOL_OE6_LAST, } FLDCOLID_OE6; //------------------------------------------------------------------ // FOLDERINFO //------------------------------------------------------------------ typedef struct tagFOLDERINFO_OE6 { BYTE *pAllocated; BYTE bVersion; FOLDERID idFolder; FOLDERID idParent; LPSTR pszName; LPSTR pszFile; LPSTR pszDescription; LPSTR pszAccountId; // Server Nodes Only LPSTR pszUrlComponent; FLDRFLAGS dwFlags; DWORD cMessages; DWORD cUnread; DWORD cWatched; DWORD cThreadUnreadOld; DWORD cViewUnreadOld; DWORD cWatchedUnread; SPECIALFOLDER tySpecial; FOLDERTYPE tyFolder; BYTE bHierarchy; DWORD dwListStamp; DWORD dwServerHigh; // highest numbered article on server (news) DWORD dwServerLow; // lowest numbered article on server (news) DWORD dwServerCount; // count of articles on server (news) DWORD dwClientHigh; // highest numbered article known to client (news) DWORD dwClientLow; // lowest numbered article known to client (news) DWORD dwStatusMsgDelta; // total number of msgs added via STATUS resp. (IMAP) DWORD dwStatusUnreadDelta; // number of unread added via STATUS resp. (IMAP) DWORD dwNotDownloaded; BLOB Requested; BLOB Read; DWORD dwClientWatchedHigh; // Highest numbered article we've checked for watch info (news) } FOLDERINFO_OE6, *LPFOLDERINFO_OE6; //------------------------------------------------------------------ // Folder Record Members //------------------------------------------------------------------ BEGIN_COLUMN_ARRAY(g_rgOE6FldTblColumns, FLDCOL_OE6_LAST) DEFINE_COLUMN(FLDCOL_OE6_ID, CDT_UNIQUE, FOLDERINFO_OE6, idFolder) DEFINE_COLUMN(FLDCOL_OE6_PARENT, CDT_DWORD, FOLDERINFO_OE6, idParent) DEFINE_COLUMN(FLDCOL_OE6_NAME, CDT_VARSTRA, FOLDERINFO_OE6, pszName) DEFINE_COLUMN(FLDCOL_OE6_FILE, CDT_VARSTRA, FOLDERINFO_OE6, pszFile) DEFINE_COLUMN(FLDCOL_OE6_DESCRIPTION, CDT_VARSTRA, FOLDERINFO_OE6, pszDescription) DEFINE_COLUMN(FLDCOL_OE6_ACCOUNTID, CDT_VARSTRA, FOLDERINFO_OE6, pszAccountId) DEFINE_COLUMN(FLDCOL_OE6_FLAGS, CDT_FLAGS, FOLDERINFO_OE6, dwFlags) DEFINE_COLUMN(FLDCOL_OE6_MESSAGES, CDT_DWORD, FOLDERINFO_OE6, cMessages) DEFINE_COLUMN(FLDCOL_OE6_UNREAD, CDT_DWORD, FOLDERINFO_OE6, cUnread) DEFINE_COLUMN(FLDCOL_OE6_SPECIAL, CDT_BYTE, FOLDERINFO_OE6, tySpecial) DEFINE_COLUMN(FLDCOL_OE6_TYPE, CDT_BYTE, FOLDERINFO_OE6, tyFolder) DEFINE_COLUMN(FLDCOL_OE6_HIERARCHY, CDT_BYTE, FOLDERINFO_OE6, bHierarchy) DEFINE_COLUMN(FLDCOL_OE6_LISTSTAMP, CDT_DWORD, FOLDERINFO_OE6, dwListStamp) DEFINE_COLUMN(FLDCOL_OE6_SERVERHIGH, CDT_DWORD, FOLDERINFO_OE6, dwServerHigh) DEFINE_COLUMN(FLDCOL_OE6_SERVERLOW, CDT_DWORD, FOLDERINFO_OE6, dwServerLow) DEFINE_COLUMN(FLDCOL_OE6_SERVERCOUNT, CDT_DWORD, FOLDERINFO_OE6, dwServerCount) DEFINE_COLUMN(FLDCOL_OE6_CLIENTHIGH, CDT_DWORD, FOLDERINFO_OE6, dwClientHigh) DEFINE_COLUMN(FLDCOL_OE6_CLIENTLOW, CDT_DWORD, FOLDERINFO_OE6, dwClientLow) DEFINE_COLUMN(FLDCOL_OE6_NOTDOWNLOADED, CDT_DWORD, FOLDERINFO_OE6, dwNotDownloaded) DEFINE_COLUMN(FLDCOL_OE6_REQUESTED, CDT_VARBLOB, FOLDERINFO_OE6, Requested) DEFINE_COLUMN(FLDCOL_OE6_URLCOMPONENT, CDT_VARSTRA, FOLDERINFO_OE6, pszUrlComponent) DEFINE_COLUMN(FLDCOL_OE6_READ, CDT_VARBLOB, FOLDERINFO_OE6, Read) DEFINE_COLUMN(FLDCOL_OE6_THREADUNREAD, CDT_DWORD, FOLDERINFO_OE6, cThreadUnreadOld) DEFINE_COLUMN(FLDCOL_OE6_VIEWUNREAD, CDT_DWORD, FOLDERINFO_OE6, cViewUnreadOld) DEFINE_COLUMN(FLDCOL_OE6_STATUSMSGDELTA, CDT_DWORD, FOLDERINFO_OE6, dwStatusMsgDelta) DEFINE_COLUMN(FLDCOL_OE6_STATUSUNREADDELTA, CDT_DWORD, FOLDERINFO_OE6, dwStatusUnreadDelta) DEFINE_COLUMN(FLDCOL_OE6_WATCHEDHIGH, CDT_DWORD, FOLDERINFO_OE6, dwClientWatchedHigh) DEFINE_COLUMN(FLDCOL_OE6_WATCHEDUNREAD, CDT_DWORD, FOLDERINFO_OE6, cWatchedUnread) DEFINE_COLUMN(FLDCOL_OE6_WATCHED, CDT_DWORD, FOLDERINFO_OE6, cWatched) END_COLUMN_ARRAY //------------------------------------------------------------------ // Folder Database Symbol Table for Regular Expression Support //------------------------------------------------------------------ BEGIN_SYMBOL_TABLE(g_OE6FldSymbolTable, 2) DEFINE_SYMBOL(SYMBOL_DWORD, "FOLDER_SUBSCRIBED", FOLDER_SUBSCRIBED) DEFINE_SYMBOL(SYMBOL_COLUMN, "FLDCOL_FLAGS", FLDCOL_OE6_FLAGS) END_SYMBOL_TABLE //------------------------------------------------------------------ // Folder Table Primary Index Definition //------------------------------------------------------------------ BEGIN_TABLE_INDEX(g_OE6FldTblPrimaryIndex, 1) DEFINE_KEY(FLDCOL_OE6_ID, 0, 0) END_TABLE_INDEX //------------------------------------------------------------------ // Folder Record Format //------------------------------------------------------------------ BEGIN_TABLE_SCHEMA(g_OE6FolderTableSchema, CLSID_FolderDatabase_OE6, FOLDERINFO_OE6) SCHEMA_PROPERTY(FOLDER_DATABASE_VERSION_OE6) SCHEMA_PROPERTY(TSF_RESETIFBADVERSION | TSF_HASEXTENSION) SCHEMA_PROPERTY(sizeof(STOREUSERDATA_OE6)) SCHEMA_PROPERTY(offsetof(FOLDERINFO_OE6, idFolder)) SCHEMA_PROPERTY(FLDCOL_OE6_LAST) SCHEMA_PROPERTY(g_rgOE6FldTblColumns) SCHEMA_PROPERTY(&g_OE6FldTblPrimaryIndex) SCHEMA_PROPERTY(&g_OE6FldSymbolTable) END_TABLE_SCHEMA extern const TABLESCHEMA g_OE6FolderTableSchema; //------------------------------------------------------------------ // Message Database Version //------------------------------------------------------------------ const DWORD MESSAGE_DATABASE_VERSION_OE6 = 5; const DWORD CB_COLUMNS_OE6 = 256; //------------------------------------------------------------------ // MSGTABLECOLID_OE6 //------------------------------------------------------------------ typedef enum tagMSGTABLECOLID_OE6 { MSGCOL_OE6_ID=0, MSGCOL_OE6_FLAGS, MSGCOL_OE6_DATE, MSGCOL_OE6_LINECOUNT, MSGCOL_OE6_STREAM, MSGCOL_OE6_NORMALSUBJ, MSGCOL_OE6_DOWNLOADTIME, MSGCOL_OE6_MESSAGEID, MSGCOL_OE6_SUBJECT, MSGCOL_OE6_FROMHEADER, MSGCOL_OE6_REFERENCES, MSGCOL_OE6_XREF, MSGCOL_OE6_SERVER, MSGCOL_OE6_DISPLAYFROM, MSGCOL_OE6_EMAILFROM, MSGCOL_OE6_LANGUAGE, MSGCOL_OE6_PRIORITY, MSGCOL_OE6_SIZE, MSGCOL_OE6_RECEIVEDDATE, MSGCOL_OE6_DISPLAYTO, MSGCOL_OE6_EMAILTO, MSGCOL_OE6_PARTIALINFO, MSGCOL_OE6_POP3UIDL, MSGCOL_OE6_USERNAMEOLD, MSGCOL_OE6_PARTIALID, MSGCOL_OE6_FORWARDTO, MSGCOL_OE6_ACCOUNTNAME, MSGCOL_OE6_ACCOUNTID, MSGCOL_OE6_OFFSETTABLE, MSGCOL_OE6_HIGHLIGHT, MSGCOL_OE6_FOLDER, MSGCOL_OE6_FINDFOLDER, MSGCOL_OE6_FINDSOURCE, MSGCOL_OE6_PARENTOLD, MSGCOL_OE6_THREADIDOLD, MSGCOL_OE6_URLCOMPONENT, MSGCOL_OE6_STREAMIDOLD, MSGCOL_OE6_VERSION, MSGCOL_OE6_MSOESREC, MSGCOL_OE6_LASTID } MSGTABLECOLID_OE6; //------------------------------------------------------------------ // FOLDERUSERDATA_OE6 - 1560 Bytes Long //------------------------------------------------------------------ typedef struct tagFOLDERUSERDATA_OE6 { DWORD fInitialized; // 4 Has this folder been initialized yet FOLDERTYPE tyFolder; // the folder type CHAR szAcctId[CCHMAX_ACCOUNT_NAME]; // 276 Account Id that folder belongs to CHAR szFolder[CCHMAX_FOLDER_NAME]; // 532 Folder Name SPECIALFOLDER tySpecial; // 536 Special Folder Type DWORD fSubscribed; // 540 Is the folder subscribed ? DWORD idSort; // 544 Current View Sort Order DWORD fAscending; // 548 Current view is ascending ? DWORD fThreaded; // 552 Current view is threaded RULEID ridFilter; // 556 Current Filter for this Folder DWORD dwFilterVersion; // 560 Version of the filter FOLDERID idFolder; // 564 Id of this folder DWORD fWelcomeAdded; // 568 I have already added a welcome message... DWORD dwUIDValidity; // 572 IMAP: Tells us if current acache is invalid DWORD idMsgSelected; // The last Selected row BYTE rgbColumns[CB_COLUMNS_OE6]; // Persisted Column Set DWORD dwReserved1; // Used for sorting children DWORD dwReserved2; // Reserved DWORD fExpandAll; // Expand All Threads? DWORD dwReserved3; // Do we have a dead filter? BYTE fViewCounts; // Converted to view counts BYTE fNewThreadModel; // Converted to shared stream table ? BYTE fWatchedCounts; // Converted to watched unread counts? BYTE fTotalWatched; // Total Watched has been migrated. BYTE fShowDeleted; // Current view shows deleted messages BYTE fShowReplies; // Current view shows message replies BYTE fNoIndexes; // No more indexes BYTE rgReserved[717]; // Reserved } FOLDERUSERDATA_OE6, *LPFOLDERUSERDATA_OE6; //------------------------------------------------------------------ // MESSAGEINFO_OE6 //------------------------------------------------------------------ typedef struct tagMESSAGEINFO_OE6 { BYTE *pAllocated; BYTE bVersion; DWORD_PTR dwReserved; MESSAGEID idMessage; MESSAGEFLAGS dwFlags; FILETIME ftSent; DWORD cLines; FILEADDRESS faStream; DWORD idStreamOld; LPSTR pszNormalSubj; FILETIME ftDownloaded; LPSTR pszMessageId; LPSTR pszSubject; LPSTR pszFromHeader; LPSTR pszReferences; LPSTR pszXref; LPSTR pszServer; LPSTR pszDisplayFrom; LPSTR pszEmailFrom; WORD wLanguage; WORD wPriority; // IMSGPRIORITY DWORD cbMessage; FILETIME ftReceived; LPSTR pszDisplayTo; LPSTR pszEmailTo; DWORD dwPartial; // Set to MESSAGE_COMBINED to indicate its a combined message LPSTR pszUidl; LPSTR pszUserNameOld; LPSTR pszPartialId; LPSTR pszForwardTo; LPSTR pszAcctName; LPSTR pszAcctId; LPSTR pszUrlComponent; BLOB Offsets; WORD wHighlight; LPSTR pszFolder; // Only used in a find folder DWORD iFindFolder; // Only used in a find folder MESSAGEID idFindSource; // Only used in a find folder MESSAGEID idParentOld; // Used for Message Threading BLOB ThreadIdOld; // Used for custom threaded view BYTE bUnused; // The major version of oe in which this was downloaded by LPSTR pszMSOESRec; } MESSAGEINFO_OE6, *LPMESSAGEINFO_OE6; //------------------------------------------------------------------ // Message Record Members //------------------------------------------------------------------ BEGIN_COLUMN_ARRAY(g_rgOE6MsgTblColumns, MSGCOL_OE6_LASTID) DEFINE_COLUMN(MSGCOL_OE6_ID, CDT_UNIQUE, MESSAGEINFO_OE6, idMessage) DEFINE_COLUMN(MSGCOL_OE6_FLAGS, CDT_FLAGS, MESSAGEINFO_OE6, dwFlags) DEFINE_COLUMN(MSGCOL_OE6_DATE, CDT_FILETIME, MESSAGEINFO_OE6, ftSent) DEFINE_COLUMN(MSGCOL_OE6_LINECOUNT, CDT_DWORD, MESSAGEINFO_OE6, cLines) DEFINE_COLUMN(MSGCOL_OE6_STREAM, CDT_STREAM, MESSAGEINFO_OE6, faStream) DEFINE_COLUMN(MSGCOL_OE6_NORMALSUBJ, CDT_VARSTRA, MESSAGEINFO_OE6, pszNormalSubj) DEFINE_COLUMN(MSGCOL_OE6_DOWNLOADTIME, CDT_FILETIME, MESSAGEINFO_OE6, ftDownloaded) DEFINE_COLUMN(MSGCOL_OE6_MESSAGEID, CDT_VARSTRA, MESSAGEINFO_OE6, pszMessageId) DEFINE_COLUMN(MSGCOL_OE6_SUBJECT, CDT_VARSTRA, MESSAGEINFO_OE6, pszSubject) DEFINE_COLUMN(MSGCOL_OE6_FROMHEADER, CDT_VARSTRA, MESSAGEINFO_OE6, pszFromHeader) DEFINE_COLUMN(MSGCOL_OE6_REFERENCES, CDT_VARSTRA, MESSAGEINFO_OE6, pszReferences) DEFINE_COLUMN(MSGCOL_OE6_XREF, CDT_VARSTRA, MESSAGEINFO_OE6, pszXref) DEFINE_COLUMN(MSGCOL_OE6_SERVER, CDT_VARSTRA, MESSAGEINFO_OE6, pszServer) DEFINE_COLUMN(MSGCOL_OE6_DISPLAYFROM, CDT_VARSTRA, MESSAGEINFO_OE6, pszDisplayFrom) DEFINE_COLUMN(MSGCOL_OE6_EMAILFROM, CDT_VARSTRA, MESSAGEINFO_OE6, pszEmailFrom) DEFINE_COLUMN(MSGCOL_OE6_LANGUAGE, CDT_WORD, MESSAGEINFO_OE6, wLanguage) DEFINE_COLUMN(MSGCOL_OE6_PRIORITY, CDT_WORD, MESSAGEINFO_OE6, wPriority) DEFINE_COLUMN(MSGCOL_OE6_SIZE, CDT_DWORD, MESSAGEINFO_OE6, cbMessage) DEFINE_COLUMN(MSGCOL_OE6_RECEIVEDDATE, CDT_FILETIME, MESSAGEINFO_OE6, ftReceived) DEFINE_COLUMN(MSGCOL_OE6_DISPLAYTO, CDT_VARSTRA, MESSAGEINFO_OE6, pszDisplayTo) DEFINE_COLUMN(MSGCOL_OE6_EMAILTO, CDT_VARSTRA, MESSAGEINFO_OE6, pszEmailTo) DEFINE_COLUMN(MSGCOL_OE6_PARTIALINFO, CDT_DWORD, MESSAGEINFO_OE6, dwPartial) DEFINE_COLUMN(MSGCOL_OE6_POP3UIDL, CDT_VARSTRA, MESSAGEINFO_OE6, pszUidl) DEFINE_COLUMN(MSGCOL_OE6_USERNAMEOLD, CDT_VARSTRA, MESSAGEINFO_OE6, pszUserNameOld) DEFINE_COLUMN(MSGCOL_OE6_PARTIALID, CDT_VARSTRA, MESSAGEINFO_OE6, pszPartialId) DEFINE_COLUMN(MSGCOL_OE6_FORWARDTO, CDT_VARSTRA, MESSAGEINFO_OE6, pszForwardTo) DEFINE_COLUMN(MSGCOL_OE6_ACCOUNTNAME, CDT_VARSTRA, MESSAGEINFO_OE6, pszAcctName) DEFINE_COLUMN(MSGCOL_OE6_ACCOUNTID, CDT_VARSTRA, MESSAGEINFO_OE6, pszAcctId) DEFINE_COLUMN(MSGCOL_OE6_OFFSETTABLE, CDT_VARBLOB, MESSAGEINFO_OE6, Offsets) DEFINE_COLUMN(MSGCOL_OE6_HIGHLIGHT, CDT_WORD, MESSAGEINFO_OE6, wHighlight) DEFINE_COLUMN(MSGCOL_OE6_FOLDER, CDT_VARSTRA, MESSAGEINFO_OE6, pszFolder) DEFINE_COLUMN(MSGCOL_OE6_FINDFOLDER, CDT_DWORD, MESSAGEINFO_OE6, iFindFolder) DEFINE_COLUMN(MSGCOL_OE6_FINDSOURCE, CDT_DWORD, MESSAGEINFO_OE6, idFindSource) DEFINE_COLUMN(MSGCOL_OE6_PARENTOLD, CDT_DWORD, MESSAGEINFO_OE6, idParentOld) DEFINE_COLUMN(MSGCOL_OE6_THREADIDOLD, CDT_VARBLOB, MESSAGEINFO_OE6, ThreadIdOld) DEFINE_COLUMN(MSGCOL_OE6_URLCOMPONENT, CDT_VARSTRA, MESSAGEINFO_OE6, pszUrlComponent) DEFINE_COLUMN(MSGCOL_OE6_STREAMIDOLD, CDT_DWORD, MESSAGEINFO_OE6, idStreamOld) DEFINE_COLUMN(MSGCOL_OE6_VERSION, CDT_BYTE, MESSAGEINFO_OE6, bUnused) DEFINE_COLUMN(MSGCOL_OE6_MSOESREC, CDT_VARSTRA, MESSAGEINFO_OE6, pszMSOESRec) END_COLUMN_ARRAY //------------------------------------------------------------------ // g_MsgTblPrimaryIndex //------------------------------------------------------------------ BEGIN_TABLE_INDEX(g_OE6MsgTblPrimaryIndex, 1) DEFINE_KEY(MSGCOL_OE6_ID, 0, 0) END_TABLE_INDEX //------------------------------------------------------------------ // Message Database Symbol Table for Regular Expression Support //------------------------------------------------------------------ BEGIN_SYMBOL_TABLE(g_OE6MsgSymbolTable, 21) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_READ", ARF_READ) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_HASBODY", ARF_HASBODY) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_ENDANGERED", ARF_ENDANGERED) DEFINE_SYMBOL(SYMBOL_COLUMN, "MSGCOL_FLAGS", MSGCOL_OE6_FLAGS) DEFINE_SYMBOL(SYMBOL_COLUMN, "MSGCOL_EMAILFROM", MSGCOL_OE6_EMAILFROM) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_WATCH", ARF_WATCH) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_IGNORE", ARF_IGNORE) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_HASATTACH", ARF_HASATTACH) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_SIGNED", ARF_SIGNED) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_ENCRYPTED", ARF_ENCRYPTED) DEFINE_SYMBOL(SYMBOL_COLUMN, "MSGCOL_PRIORITY", MSGCOL_OE6_PRIORITY) DEFINE_SYMBOL(SYMBOL_COLUMN, "MSGCOL_SUBJECT", MSGCOL_OE6_SUBJECT) DEFINE_SYMBOL(SYMBOL_COLUMN, "MSGCOL_FROMHEADER", MSGCOL_OE6_FROMHEADER) DEFINE_SYMBOL(SYMBOL_COLUMN, "MSGCOL_ACCOUNTID", MSGCOL_OE6_ACCOUNTID) DEFINE_SYMBOL(SYMBOL_COLUMN, "MSGCOL_LINECOUNT", MSGCOL_OE6_LINECOUNT) DEFINE_SYMBOL(SYMBOL_DWORD, "IMSG_PRI_HIGH", IMSG_PRI_HIGH) DEFINE_SYMBOL(SYMBOL_DWORD, "IMSG_PRI_LOW", IMSG_PRI_LOW) DEFINE_SYMBOL(SYMBOL_COLUMN, "MSGCOL_DISPLAYFROM", MSGCOL_OE6_DISPLAYFROM) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_FLAGGED", ARF_FLAGGED) DEFINE_SYMBOL(SYMBOL_METHOD, "MessageAgeInDays", METHODID_MESSAGEAGEINDAYS) DEFINE_SYMBOL(SYMBOL_DWORD, "ARF_DELETED_OFFLINE", ARF_DELETED_OFFLINE) END_SYMBOL_TABLE //------------------------------------------------------------------ // Message Record Format //------------------------------------------------------------------ BEGIN_TABLE_SCHEMA(g_OE6MessageTableSchema, CLSID_MessageDatabase_OE6, MESSAGEINFO_OE6) SCHEMA_PROPERTY(MESSAGE_DATABASE_VERSION_OE6) SCHEMA_PROPERTY(TSF_HASSTREAMS | TSF_RESETIFBADVERSION) SCHEMA_PROPERTY(sizeof(FOLDERUSERDATA_OE6)) SCHEMA_PROPERTY(offsetof(MESSAGEINFO_OE6, idMessage)) SCHEMA_PROPERTY(MSGCOL_OE6_LASTID) SCHEMA_PROPERTY(g_rgOE6MsgTblColumns) SCHEMA_PROPERTY(&g_OE6MsgTblPrimaryIndex) SCHEMA_PROPERTY(&g_OE6MsgSymbolTable) END_TABLE_SCHEMA extern const TABLESCHEMA g_OE6MessageTableSchema; //------------------------------------------------------------------ // POP3UIDL Database Version //------------------------------------------------------------------ const DWORD POP3UIDL_DATABASE_VERSION_OE6 = 5; //------------------------------------------------------------------ // UIDL Store Record Ordinals //------------------------------------------------------------------ typedef enum tagUIDLCOLID_OE6 { UIDLCOL_OE6_DLTIME, UIDLCOL_OE6_DELETED, UIDLCOL_OE6_DOWNLOADED, UIDLCOL_OE6_UIDL, UIDLCOL_OE6_SERVER, UIDLCOL_OE6_ACCOUNTID, UIDLCOL_OE6_LAST } UIDLCOLID_OE6; //------------------------------------------------------------------ // UIDLRECORD //------------------------------------------------------------------ typedef struct tagUIDLRECORD_OE6 { BYTE *pAllocated; BYTE bVersion; BYTE fDownloaded; BYTE fDeleted; FILETIME ftDownload; LPSTR pszUidl; LPSTR pszServer; LPSTR pszAccountId; } UIDLRECORD_OE6, *LPUIDLRECORD_OE6; //------------------------------------------------------------------ // UIDL Record Members //------------------------------------------------------------------ BEGIN_COLUMN_ARRAY(g_rgOE6UidlTblColumns, UIDLCOL_OE6_LAST) DEFINE_COLUMN(UIDLCOL_OE6_DLTIME, CDT_FILETIME, UIDLRECORD_OE6, ftDownload) DEFINE_COLUMN(UIDLCOL_OE6_DELETED, CDT_BYTE, UIDLRECORD_OE6, fDeleted) DEFINE_COLUMN(UIDLCOL_OE6_DOWNLOADED, CDT_BYTE, UIDLRECORD_OE6, fDownloaded) DEFINE_COLUMN(UIDLCOL_OE6_UIDL, CDT_VARSTRA, UIDLRECORD_OE6, pszUidl) DEFINE_COLUMN(UIDLCOL_OE6_SERVER, CDT_VARSTRA, UIDLRECORD_OE6, pszServer) DEFINE_COLUMN(UIDLCOL_OE6_ACCOUNTID, CDT_VARSTRA, UIDLRECORD_OE6, pszAccountId) END_COLUMN_ARRAY //------------------------------------------------------------------ // UIDL Table Primary Index Definition //------------------------------------------------------------------ BEGIN_TABLE_INDEX(g_OE6UidlTblPrimaryIndex, 3) DEFINE_KEY(UIDLCOL_OE6_UIDL, COMPARE_ASANSI, 0) DEFINE_KEY(UIDLCOL_OE6_SERVER, COMPARE_ASANSI | COMPARE_IGNORECASE, 0) DEFINE_KEY(UIDLCOL_OE6_ACCOUNTID,COMPARE_ASANSI | COMPARE_IGNORECASE, 0) END_TABLE_INDEX //------------------------------------------------------------------ // UIDL Record Format //------------------------------------------------------------------ BEGIN_TABLE_SCHEMA(g_OE6UidlTableSchema, CLSID_Pop3UidlDatabase, UIDLRECORD_OE6) SCHEMA_PROPERTY(POP3UIDL_DATABASE_VERSION_OE6) SCHEMA_PROPERTY(TSF_RESETIFBADVERSION) SCHEMA_PROPERTY(0) SCHEMA_PROPERTY(0xffffffff) SCHEMA_PROPERTY(UIDLCOL_OE6_LAST) SCHEMA_PROPERTY(g_rgOE6UidlTblColumns) SCHEMA_PROPERTY(&g_OE6UidlTblPrimaryIndex) SCHEMA_PROPERTY(NULL) END_TABLE_SCHEMA //------------------------------------------------------------------ // Extern'ed Record Formats //------------------------------------------------------------------ extern const TABLESCHEMA g_OE6UidlTableSchema; //------------------------------------------------------------------ // SyncOp Database Version //------------------------------------------------------------------ const DWORD SYNCOP_DATABASE_VERSION_OE6 = 2; //------------------------------------------------------------------ // SYNCOPTABLECOLID //------------------------------------------------------------------ typedef enum tagSYNCOPTABLECOLID_OE6 { OPCOL_OE6_ID = 0, OPCOL_OE6_SERVER, OPCOL_OE6_FOLDER, OPCOL_OE6_MESSAGE, OPCOL_OE6_OPTYPE, OPCOL_OE6_FLAGS, OPCOL_OE6_ADD_FLAGS, OPCOL_OE6_REMOVE_FLAGS, OPCOL_OE6_FOLDER_DEST, OPCOL_OE6_MESSAGE_DEST, OPCOL_OE6_LASTID } SYNCOPTABLECOLID_OE6; //------------------------------------------------------------------ // SYNCUSERDATA //------------------------------------------------------------------ typedef struct tagSYNCOPUSERDATA_OE6 { DWORD fInitialized; // 4 Has this folder been initialized yet BYTE rgReserved[248]; // Reserved } SYNCOPUSERDATA_OE6, *LPSYNCOPUSERDATA_OE6; //------------------------------------------------------------------ // SYNCOPINFO //------------------------------------------------------------------ typedef struct tagSYNCOPINFO_OE6 { BYTE *pAllocated; BYTE bVersion; SYNCOPID idOperation; FOLDERID idServer; FOLDERID idFolder; MESSAGEID idMessage; SYNCOPTYPE tyOperation; SYNCOPFLAGS dwFlags; MESSAGEFLAGS dwAdd; MESSAGEFLAGS dwRemove; FOLDERID idFolderDest; MESSAGEID idMessageDest; } SYNCOPINFO_OE6, *LPSYNCOPINFO_OE6; //------------------------------------------------------------------ // Operation Record Members //------------------------------------------------------------------ BEGIN_COLUMN_ARRAY(g_rgOE6OpTblColumns, OPCOL_OE6_LASTID) DEFINE_COLUMN(OPCOL_OE6_ID, CDT_DWORD, SYNCOPINFO, idOperation) DEFINE_COLUMN(OPCOL_OE6_SERVER, CDT_DWORD, SYNCOPINFO, idServer) DEFINE_COLUMN(OPCOL_OE6_FOLDER, CDT_DWORD, SYNCOPINFO, idFolder) DEFINE_COLUMN(OPCOL_OE6_MESSAGE, CDT_DWORD, SYNCOPINFO, idMessage) DEFINE_COLUMN(OPCOL_OE6_OPTYPE, CDT_WORD, SYNCOPINFO, tyOperation) DEFINE_COLUMN(OPCOL_OE6_FLAGS, CDT_DWORD, SYNCOPINFO, dwFlags) DEFINE_COLUMN(OPCOL_OE6_ADD_FLAGS, CDT_DWORD, SYNCOPINFO, dwAdd) DEFINE_COLUMN(OPCOL_OE6_REMOVE_FLAGS, CDT_DWORD, SYNCOPINFO, dwRemove) DEFINE_COLUMN(OPCOL_OE6_FOLDER_DEST, CDT_DWORD, SYNCOPINFO, idFolderDest) DEFINE_COLUMN(OPCOL_OE6_MESSAGE_DEST, CDT_DWORD, SYNCOPINFO, idMessageDest) END_COLUMN_ARRAY //------------------------------------------------------------------ // g_OE6OpTblPrimaryIndex //------------------------------------------------------------------ BEGIN_TABLE_INDEX(g_OE6OpTblPrimaryIndex, 1) DEFINE_KEY(OPCOL_OE6_ID, 0, 0) END_TABLE_INDEX //------------------------------------------------------------------ // Operation Record Format //------------------------------------------------------------------ BEGIN_TABLE_SCHEMA(g_OE6SyncOpTableSchema, CLSID_SyncOpDatabase_OE6, SYNCOPINFO_OE6) SCHEMA_PROPERTY(SYNCOP_DATABASE_VERSION_OE6) SCHEMA_PROPERTY(TSF_RESETIFBADVERSION) SCHEMA_PROPERTY(sizeof(SYNCOPUSERDATA_OE6)) SCHEMA_PROPERTY(offsetof(SYNCOPINFO_OE6, idOperation)) SCHEMA_PROPERTY(OPCOL_OE6_LASTID) SCHEMA_PROPERTY(g_rgOE6OpTblColumns) SCHEMA_PROPERTY(&g_OE6OpTblPrimaryIndex) SCHEMA_PROPERTY(NULL) END_TABLE_SCHEMA extern const TABLESCHEMA g_OE6SyncOpTableSchema;