include: Define IRangeList, IIMAPCallback and IIMAPTransport.
This commit is contained in:
parent
c1d5dfe84b
commit
181d2fb65e
|
@ -21,6 +21,7 @@ import "imnact.idl";
|
||||||
interface IInternetTransport;
|
interface IInternetTransport;
|
||||||
interface ISMTPTransport;
|
interface ISMTPTransport;
|
||||||
interface IPOP3Transport;
|
interface IPOP3Transport;
|
||||||
|
interface IIMAPTransport;
|
||||||
|
|
||||||
/* CLSIDs */
|
/* CLSIDs */
|
||||||
|
|
||||||
|
@ -684,16 +685,429 @@ interface IPOP3Transport : IInternetTransport
|
||||||
|
|
||||||
/* FIXME: INNTPCallback, INNTPTransport */
|
/* FIXME: INNTPCallback, INNTPTransport */
|
||||||
|
|
||||||
/* FIXME: IRangeList */
|
[
|
||||||
|
object,
|
||||||
|
uuid(8C438160-4EF6-11d0-874F-00AA00530EE9),
|
||||||
|
local,
|
||||||
|
]
|
||||||
|
interface IRangeList : IUnknown
|
||||||
|
{
|
||||||
|
const ULONG RL_RANGE_ERROR = ((ULONG)-1);
|
||||||
|
const ULONG RL_LAST_MESSAGE = ((ULONG)-1);
|
||||||
|
|
||||||
/* FIXME: IIMAPCallback, IIMAPTransport */
|
HRESULT Clear();
|
||||||
|
|
||||||
|
HRESULT IsInRange(
|
||||||
|
[in] const ULONG value);
|
||||||
|
|
||||||
|
HRESULT Min(
|
||||||
|
[out] ULONG *pulMin);
|
||||||
|
|
||||||
|
HRESULT Max(
|
||||||
|
[out] ULONG *pulMax);
|
||||||
|
|
||||||
|
HRESULT Save(
|
||||||
|
[out] byte **ppbDestination,
|
||||||
|
[out] ULONG *pulSizeOfDestination);
|
||||||
|
|
||||||
|
HRESULT Load(
|
||||||
|
[in, size_is(ulSizeOfSource)] byte *pbSource,
|
||||||
|
[in] const ULONG ulSizeOfSource);
|
||||||
|
|
||||||
|
HRESULT AddRange(
|
||||||
|
[in] const ULONG low,
|
||||||
|
[in] const ULONG high);
|
||||||
|
|
||||||
|
HRESULT AddSingleValue(
|
||||||
|
[in] const ULONG value);
|
||||||
|
|
||||||
|
HRESULT AddRangeList(
|
||||||
|
[in] const IRangeList *prl);
|
||||||
|
|
||||||
|
HRESULT DeleteRange(
|
||||||
|
[in] const ULONG low,
|
||||||
|
[in] const ULONG high);
|
||||||
|
|
||||||
|
HRESULT DeleteSingleValue(
|
||||||
|
[in] const ULONG value);
|
||||||
|
|
||||||
|
HRESULT DeleteRangeList(
|
||||||
|
[in] const IRangeList *prl);
|
||||||
|
|
||||||
|
HRESULT MinOfRange(
|
||||||
|
[in] const ULONG value,
|
||||||
|
[out] ULONG *pulMinOfRange);
|
||||||
|
|
||||||
|
HRESULT MaxOfRange(
|
||||||
|
[in] const ULONG value,
|
||||||
|
[out] ULONG *pulMaxOfRange);
|
||||||
|
|
||||||
|
HRESULT RangeToIMAPString(
|
||||||
|
[out] LPSTR *ppszDestination,
|
||||||
|
[out] LPDWORD pdwLengthOfDestination);
|
||||||
|
|
||||||
|
HRESULT Next(
|
||||||
|
[in] const ULONG current,
|
||||||
|
[out] ULONG *pulNext);
|
||||||
|
|
||||||
|
HRESULT Prev(
|
||||||
|
[in] const ULONG current,
|
||||||
|
[out] ULONG *pulPrev);
|
||||||
|
|
||||||
|
HRESULT Cardinality(
|
||||||
|
[out] ULONG *pulCardinality);
|
||||||
|
|
||||||
|
HRESULT CardinalityFrom(
|
||||||
|
[in] const ULONG ulStartPoint,
|
||||||
|
[out] ULONG *pulCardinalityFrom);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(E9E9D8A3-4EDD-11d0-874F-00AA00530EE9),
|
||||||
|
local
|
||||||
|
]
|
||||||
|
interface IIMAPCallback : ITransportCallback
|
||||||
|
{
|
||||||
|
typedef DWORD IMAP_MBOXFLAGS;
|
||||||
|
const IMAP_MBOXFLAGS IMAP_MBOX_NOFLAGS = 0x0;
|
||||||
|
const IMAP_MBOXFLAGS IMAP_MBOX_MARKED = 0x1;
|
||||||
|
const IMAP_MBOXFLAGS IMAP_MBOX_NOINFERIORS = 0x2;
|
||||||
|
const IMAP_MBOXFLAGS IMAP_MBOX_NOSELECT = 0x4;
|
||||||
|
const IMAP_MBOXFLAGS IMAP_MBOX_UNMARKED = 0x8;
|
||||||
|
const IMAP_MBOXFLAGS IMAP_MBOX_ALLFLAGS = 0xf;
|
||||||
|
|
||||||
|
typedef enum tagIMAP_RESPONSE_TYPE
|
||||||
|
{
|
||||||
|
irtERROR_NOTIFICATION,
|
||||||
|
irtCOMMAND_COMPLETION,
|
||||||
|
irtSERVER_ALERT,
|
||||||
|
irtPARSE_ERROR,
|
||||||
|
irtMAILBOX_UPDATE,
|
||||||
|
irtDELETED_MSG,
|
||||||
|
irtFETCH_BODY,
|
||||||
|
irtUPDATE_MSG,
|
||||||
|
irtAPPLICABLE_FLAGS,
|
||||||
|
irtPERMANENT_FLAGS,
|
||||||
|
irtUIDVALIDITY,
|
||||||
|
irtREADWRITE_STATUS,
|
||||||
|
irtTRYCREATE,
|
||||||
|
irtSEARCH,
|
||||||
|
irtMAILBOX_LISTING,
|
||||||
|
irtMAILBOX_STATUS,
|
||||||
|
irtAPPEND_PROGRESS,
|
||||||
|
irtUPDATE_MSG_EX
|
||||||
|
} IMAP_RESPONSE_TYPE;
|
||||||
|
|
||||||
|
typedef struct tagFETCH_BODY_PART
|
||||||
|
{
|
||||||
|
DWORD dwMsgSeqNum;
|
||||||
|
LPSTR pszBodyTag;
|
||||||
|
DWORD dwTotalBytes;
|
||||||
|
DWORD dwSizeOfData;
|
||||||
|
DWORD dwOffset;
|
||||||
|
BOOL fDone;
|
||||||
|
LPSTR pszData;
|
||||||
|
LPARAM lpFetchCookie1;
|
||||||
|
LPARAM lpFetchCookie2;
|
||||||
|
} FETCH_BODY_PART;
|
||||||
|
|
||||||
|
typedef struct tagFETCH_CMD_RESULTS
|
||||||
|
{
|
||||||
|
DWORD dwMsgSeqNum;
|
||||||
|
BOOL bMsgFlags;
|
||||||
|
IMAP_MSGFLAGS mfMsgFlags;
|
||||||
|
BOOL bRFC822Size;
|
||||||
|
DWORD dwRFC822Size;
|
||||||
|
BOOL bUID;
|
||||||
|
DWORD dwUID;
|
||||||
|
BOOL bInternalDate;
|
||||||
|
FILETIME ftInternalDate;
|
||||||
|
LPARAM lpFetchCookie1;
|
||||||
|
LPARAM lpFetchCookie2;
|
||||||
|
} FETCH_CMD_RESULTS;
|
||||||
|
|
||||||
|
typedef struct tagIMAPADDR
|
||||||
|
{
|
||||||
|
LPSTR pszName;
|
||||||
|
LPSTR pszADL;
|
||||||
|
LPSTR pszMailbox;
|
||||||
|
LPSTR pszHost;
|
||||||
|
struct tagIMAPADDR *pNext;
|
||||||
|
} IMAPADDR;
|
||||||
|
|
||||||
|
typedef struct tagFETCH_CMD_RESULTS_EX
|
||||||
|
{
|
||||||
|
DWORD dwMsgSeqNum;
|
||||||
|
BOOL bMsgFlags;
|
||||||
|
IMAP_MSGFLAGS mfMsgFlags;
|
||||||
|
BOOL bRFC822Size;
|
||||||
|
DWORD dwRFC822Size;
|
||||||
|
BOOL bUID;
|
||||||
|
DWORD dwUID;
|
||||||
|
BOOL bInternalDate;
|
||||||
|
FILETIME ftInternalDate;
|
||||||
|
LPARAM lpFetchCookie1;
|
||||||
|
LPARAM lpFetchCookie2;
|
||||||
|
BOOL bEnvelope;
|
||||||
|
FILETIME ftENVDate;
|
||||||
|
LPSTR pszENVSubject;
|
||||||
|
IMAPADDR *piaENVFrom;
|
||||||
|
IMAPADDR *piaENVSender;
|
||||||
|
IMAPADDR *piaENVReplyTo;
|
||||||
|
IMAPADDR *piaENVTo;
|
||||||
|
IMAPADDR *piaENVCc;
|
||||||
|
IMAPADDR *piaENVBcc;
|
||||||
|
LPSTR pszENVInReplyTo;
|
||||||
|
LPSTR pszENVMessageID;
|
||||||
|
DWORD dwReserved1;
|
||||||
|
DWORD dwReserved2;
|
||||||
|
DWORD dwReserved3;
|
||||||
|
} FETCH_CMD_RESULTS_EX;
|
||||||
|
|
||||||
|
typedef struct tagMBOX_MSGCOUNT
|
||||||
|
{
|
||||||
|
BOOL bGotExistsResponse;
|
||||||
|
DWORD dwExists;
|
||||||
|
BOOL bGotRecentResponse;
|
||||||
|
DWORD dwRecent;
|
||||||
|
BOOL bGotUnseenResponse;
|
||||||
|
DWORD dwUnseen;
|
||||||
|
} MBOX_MSGCOUNT;
|
||||||
|
|
||||||
|
typedef struct tagIMAP_LISTLSUB_RESPONSE
|
||||||
|
{
|
||||||
|
LPSTR pszMailboxName;
|
||||||
|
IMAP_MBOXFLAGS imfMboxFlags;
|
||||||
|
char cHierarchyChar;
|
||||||
|
} IMAP_LISTLSUB_RESPONSE;
|
||||||
|
|
||||||
|
typedef struct tagIMAP_STATUS_RESPONSE
|
||||||
|
{
|
||||||
|
LPSTR pszMailboxName;
|
||||||
|
BOOL fMessages;
|
||||||
|
DWORD dwMessages;
|
||||||
|
BOOL fRecent;
|
||||||
|
DWORD dwRecent;
|
||||||
|
BOOL fUIDNext;
|
||||||
|
DWORD dwUIDNext;
|
||||||
|
BOOL fUIDValidity;
|
||||||
|
DWORD dwUIDValidity;
|
||||||
|
BOOL fUnseen;
|
||||||
|
DWORD dwUnseen;
|
||||||
|
} IMAP_STATUS_RESPONSE;
|
||||||
|
|
||||||
|
typedef struct tagAPPEND_PROGRESS
|
||||||
|
{
|
||||||
|
DWORD dwUploaded;
|
||||||
|
DWORD dwTotal;
|
||||||
|
} APPEND_PROGRESS;
|
||||||
|
|
||||||
|
typedef [switch_type(IMAP_RESPONSE_TYPE)] union tagIMAP_RESPONSE_DATA
|
||||||
|
{
|
||||||
|
[case (irtMAILBOX_UPDATE)] MBOX_MSGCOUNT *pmcMsgCount;
|
||||||
|
[case (irtDELETED_MSG)] DWORD dwDeletedMsgSeqNum;
|
||||||
|
[case (irtFETCH_BODY)] FETCH_BODY_PART *pFetchBodyPart;
|
||||||
|
[case (irtUPDATE_MSG)] FETCH_CMD_RESULTS *pFetchResults;
|
||||||
|
[case (irtAPPLICABLE_FLAGS, irtPERMANENT_FLAGS)] IMAP_MSGFLAGS imfImapMessageFlags;
|
||||||
|
[case (irtUIDVALIDITY)] DWORD dwUIDValidity;
|
||||||
|
[case (irtREADWRITE_STATUS)] BOOL bReadWrite;
|
||||||
|
[case (irtSEARCH)] IRangeList *prlSearchResults;
|
||||||
|
[case (irtMAILBOX_LISTING)] IMAP_LISTLSUB_RESPONSE illrdMailboxListing;
|
||||||
|
[case (irtMAILBOX_STATUS)] IMAP_STATUS_RESPONSE *pisrStatusResponse;
|
||||||
|
[case (irtAPPEND_PROGRESS)] APPEND_PROGRESS *papAppendProgress;
|
||||||
|
[case (irtUPDATE_MSG_EX)] FETCH_CMD_RESULTS_EX *pFetchResultsEx;
|
||||||
|
} IMAP_RESPONSE_DATA;
|
||||||
|
|
||||||
|
typedef struct tagIMAP_RESPONSE
|
||||||
|
{
|
||||||
|
WPARAM wParam;
|
||||||
|
LPARAM lParam;
|
||||||
|
HRESULT hrResult;
|
||||||
|
LPSTR lpszResponseText;
|
||||||
|
IMAP_RESPONSE_TYPE irtResponseType;
|
||||||
|
[switch_is(irtResponseType)] IMAP_RESPONSE_DATA irdResponseData;
|
||||||
|
} IMAP_RESPONSE;
|
||||||
|
|
||||||
|
HRESULT OnResponse([in] const IMAP_RESPONSE *pirIMAPResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(E9E9D8A8-4EDD-11d0-874F-00AA00530EE9),
|
||||||
|
local,
|
||||||
|
]
|
||||||
|
interface IIMAPTransport : IInternetTransport
|
||||||
|
{
|
||||||
|
const DWORD IMAP_CAPABILITY_IMAP4 = 0x1;
|
||||||
|
const DWORD IMAP_CAPABILITY_IMAP4rev1 = 0x2;
|
||||||
|
const DWORD IMAP_CAPABILITY_IDLE = 0x4;
|
||||||
|
const DWORD IMAP_CAPABILITY_ALLFLAGS = 0x7;
|
||||||
|
|
||||||
|
HRESULT InitNew(
|
||||||
|
[in] LPSTR pszLogFilePath,
|
||||||
|
[in] IIMAPCallback *pCBHandler);
|
||||||
|
|
||||||
|
HRESULT NewIRangeList(
|
||||||
|
[out] IRangeList **pprlNewRangeList);
|
||||||
|
|
||||||
|
HRESULT Capability(
|
||||||
|
[out] DWORD *pdwCapabilityFlags);
|
||||||
|
|
||||||
|
HRESULT Select(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxName);
|
||||||
|
|
||||||
|
HRESULT Examine(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxName);
|
||||||
|
|
||||||
|
HRESULT Create(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxName);
|
||||||
|
|
||||||
|
HRESULT Delete(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxName);
|
||||||
|
|
||||||
|
HRESULT Rename(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxName,
|
||||||
|
[in] LPSTR lpszNewMailboxName);
|
||||||
|
|
||||||
|
HRESULT Subscribe(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxName);
|
||||||
|
|
||||||
|
HRESULT Unsubscribe(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxName);
|
||||||
|
|
||||||
|
HRESULT List(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxNameReference,
|
||||||
|
[in] LPSTR lpszMailboxNamePattern);
|
||||||
|
|
||||||
|
HRESULT Lsub(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxNameReference,
|
||||||
|
[in] LPSTR lpszMailboxNamePattern);
|
||||||
|
|
||||||
|
HRESULT Append(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszMailboxName,
|
||||||
|
[in] LPSTR lpszMessageFlags,
|
||||||
|
[in] FILETIME ftMessageDateTime,
|
||||||
|
[in] LPSTREAM lpstmMessageToSave);
|
||||||
|
|
||||||
|
HRESULT Close(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler);
|
||||||
|
|
||||||
|
HRESULT Expunge(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler);
|
||||||
|
|
||||||
|
HRESULT Search(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR lpszSearchCriteria,
|
||||||
|
[in] boolean bReturnUIDs,
|
||||||
|
[in] IRangeList *pMsgRange,
|
||||||
|
[in] boolean bUIDRangeList);
|
||||||
|
|
||||||
|
HRESULT Fetch(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] IRangeList *pMsgRange,
|
||||||
|
[in] boolean bUIDMsgRange,
|
||||||
|
[in] LPSTR lpszFetchArgs);
|
||||||
|
|
||||||
|
HRESULT Store(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] IRangeList *pMsgRange,
|
||||||
|
[in] boolean bUIDRangeList,
|
||||||
|
[in] LPSTR lpszStoreArgs);
|
||||||
|
|
||||||
|
HRESULT Copy(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] IRangeList *pMsgRange,
|
||||||
|
[in] boolean bUIDRangeList,
|
||||||
|
[in] LPSTR lpszMailboxName);
|
||||||
|
|
||||||
|
HRESULT Noop(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler);
|
||||||
|
|
||||||
|
HRESULT ResizeMsgSeqNumTable(
|
||||||
|
[in] DWORD dwSizeOfMbox);
|
||||||
|
|
||||||
|
HRESULT UpdateSeqNumToUID(
|
||||||
|
[in] DWORD dwMsgSeqNum,
|
||||||
|
[in] DWORD dwUID);
|
||||||
|
|
||||||
|
HRESULT RemoveSequenceNum(
|
||||||
|
[in] DWORD dwDeletedMsgSeqNum);
|
||||||
|
|
||||||
|
HRESULT MsgSeqNumToUID(
|
||||||
|
[in] DWORD dwMsgSeqNum,
|
||||||
|
[out] DWORD *pdwUID);
|
||||||
|
|
||||||
|
HRESULT GetMsgSeqNumToUIDArray(
|
||||||
|
[out] DWORD **ppdwMsgSeqNumToUIDArray,
|
||||||
|
[out] DWORD *pdwNumberOfElements);
|
||||||
|
|
||||||
|
HRESULT GetHighestMsgSeqNum(
|
||||||
|
[out] DWORD *pdwHighestMSN);
|
||||||
|
|
||||||
|
HRESULT ResetMsgSeqNumToUID();
|
||||||
|
|
||||||
|
HRESULT SetDefaultCBHandler(
|
||||||
|
[in] IIMAPCallback *pCBHandler);
|
||||||
|
|
||||||
|
HRESULT Status(
|
||||||
|
[in] WPARAM wParam,
|
||||||
|
[in] LPARAM lParam,
|
||||||
|
[in] IIMAPCallback *pCBHandler,
|
||||||
|
[in] LPSTR pszMailboxName,
|
||||||
|
[in] LPSTR pszStatusCmdArgs);
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
cpp_quote("HRESULT WINAPI CreateRASTransport(IRASTransport **ppTransport);")
|
cpp_quote("HRESULT WINAPI CreateRASTransport(IRASTransport **ppTransport);")
|
||||||
cpp_quote("HRESULT WINAPI CreateNNTPTransport(INNTPTransport **ppTransport);")
|
cpp_quote("HRESULT WINAPI CreateNNTPTransport(INNTPTransport **ppTransport);")
|
||||||
cpp_quote("HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport);")
|
|
||||||
cpp_quote("HRESULT WINAPI CreateIMAPTransport2(IIMAPTransport2 **ppTransport);")
|
cpp_quote("HRESULT WINAPI CreateIMAPTransport2(IIMAPTransport2 **ppTransport);")
|
||||||
cpp_quote("HRESULT WINAPI CreateRangeList(IRangeList **ppRangeList);")
|
|
||||||
#endif
|
#endif
|
||||||
|
cpp_quote("HRESULT WINAPI CreateRangeList(IRangeList **ppRangeList);")
|
||||||
cpp_quote("HRESULT WINAPI CreateSMTPTransport(ISMTPTransport **ppTransport);")
|
cpp_quote("HRESULT WINAPI CreateSMTPTransport(ISMTPTransport **ppTransport);")
|
||||||
cpp_quote("HRESULT WINAPI CreatePOP3Transport(IPOP3Transport **ppTransport);")
|
cpp_quote("HRESULT WINAPI CreatePOP3Transport(IPOP3Transport **ppTransport);")
|
||||||
|
cpp_quote("HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport);")
|
||||||
|
|
Loading…
Reference in New Issue