xpmgr/BuildTools/Include/oestore6.h

561 lines
27 KiB
C

//--------------------------------------------------------------------------
// 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;