346 lines
10 KiB
C
346 lines
10 KiB
C
|
#ifndef _INC_NEWIMP_H
|
||
|
#define _INC_NEWIMP_H
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////
|
||
|
// WARNING: If you make changes to this header, you must also update //
|
||
|
// inetcore\published\inc\newimp.h !!! //
|
||
|
/////////////////////////////////////////////////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
#ifndef NO_IMPORT_ERROR
|
||
|
|
||
|
#define HR_IMP_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, n)
|
||
|
#define HR_IMP_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, n)
|
||
|
#define HR_IMP 0x3000
|
||
|
|
||
|
#define hrFolderOpenFail HR_IMP_E(HR_IMP + 1)
|
||
|
#define hrFolderReadFail HR_IMP_E(HR_IMP + 2)
|
||
|
#define hrMapiInitFail HR_IMP_E(HR_IMP + 3)
|
||
|
#define hrNoProfilesFound HR_IMP_E(HR_IMP + 4)
|
||
|
#define hrDiskFull HR_IMP_E(HR_IMP + 5)
|
||
|
#define hrUserCancel HR_IMP_E(HR_IMP + 6)
|
||
|
|
||
|
#endif // NO_IMPORT_ERROR
|
||
|
|
||
|
typedef enum tagIMPORTFOLDERTYPE
|
||
|
{
|
||
|
FOLDER_TYPE_NORMAL = 0,
|
||
|
FOLDER_TYPE_INBOX,
|
||
|
FOLDER_TYPE_OUTBOX,
|
||
|
FOLDER_TYPE_SENT,
|
||
|
FOLDER_TYPE_DELETED,
|
||
|
FOLDER_TYPE_DRAFT,
|
||
|
CFOLDERTYPE
|
||
|
} IMPORTFOLDERTYPE;
|
||
|
|
||
|
typedef struct IMSG IMSG;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
MSG_TYPE_MAIL = 0,
|
||
|
MSG_TYPE_NEWS
|
||
|
} MSGTYPE;
|
||
|
|
||
|
#define MSG_STATE_UNREAD 0x0001
|
||
|
#define MSG_STATE_UNSENT 0x0002
|
||
|
#define MSG_STATE_SUBMITTED 0x0004
|
||
|
#define MSG_PRI_LOW 0x0010
|
||
|
#define MSG_PRI_NORMAL 0x0020
|
||
|
#define MSG_PRI_HIGH 0x0040
|
||
|
#define MSG_PRI_MASK 0x0070
|
||
|
|
||
|
// {E4499DE7-9F57-11D0-8D5C-00C04FD6202B}
|
||
|
DEFINE_GUID(IID_IFolderImport, 0xE4499DE7L, 0x9F57, 0x11D0, 0x8D, 0x5C, 0x00, 0xC0, 0x4F, 0xD6, 0x20, 0x2B);
|
||
|
|
||
|
// provided by Athena or Outlook
|
||
|
typedef interface IFolderImport IFolderImport;
|
||
|
|
||
|
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||
|
interface IFolderImport : public IUnknown
|
||
|
{
|
||
|
public:
|
||
|
virtual HRESULT STDMETHODCALLTYPE SetMessageCount(ULONG cMsg) = 0;
|
||
|
virtual HRESULT STDMETHODCALLTYPE ImportMessage(MSGTYPE type, DWORD dwState, LPSTREAM pstm, const TCHAR **rgszAttach, DWORD cAttach) = 0;
|
||
|
virtual HRESULT STDMETHODCALLTYPE ImportMessage(IMSG *pimsg) = 0;
|
||
|
};
|
||
|
#else /* C style interface */
|
||
|
typedef struct IFolderImportVtbl
|
||
|
{
|
||
|
BEGIN_INTERFACE
|
||
|
|
||
|
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||
|
IFolderImport * This,
|
||
|
/* [in] */ REFIID riid,
|
||
|
/* [iid_is][out] */ void **ppvObject);
|
||
|
|
||
|
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||
|
IFolderImport * This);
|
||
|
|
||
|
ULONG ( STDMETHODCALLTYPE *Release )(
|
||
|
IFolderImport * This);
|
||
|
|
||
|
HRESULT ( STDMETHODCALLTYPE *SetMessageCount )(
|
||
|
IFolderImport * This,
|
||
|
ULONG cMsg);
|
||
|
HRESULT ( STDMETHODCALLTYPE *ImportMessageEx )(
|
||
|
IFolderImport * This,
|
||
|
MSGTYPE type,
|
||
|
DWORD dwState,
|
||
|
LPSTREAM pstm,
|
||
|
const TCHAR **rgszAttach,
|
||
|
DWORD cAttach);
|
||
|
HRESULT ( STDMETHODCALLTYPE *ImportMessage )(
|
||
|
IFolderImport * This,
|
||
|
IMSG *pimsg);
|
||
|
END_INTERFACE
|
||
|
} IFolderImportVtbl;
|
||
|
|
||
|
interface IFolderImport
|
||
|
{
|
||
|
CONST_VTBL struct IFolderImportVtbl *lpVtbl;
|
||
|
};
|
||
|
|
||
|
#ifdef COBJMACROS
|
||
|
|
||
|
#define IFolderImport_QueryInterface(This,riid,ppvObject) \
|
||
|
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||
|
#define IFolderImport_AddRef(This) \
|
||
|
(This)->lpVtbl -> AddRef(This)
|
||
|
#define IFolderImport_Release(This) \
|
||
|
(This)->lpVtbl -> Release(This)
|
||
|
#define IFolderImport_SetMessageCount(This,cMsg) \
|
||
|
(This)->lpVtbl -> SetMessageCount(This,cMsg)
|
||
|
#define IFolderImport_ImportMessageEx(This,type,dwState,pstm,rgszAttach,cAttach) \
|
||
|
(This)->lpVtbl -> ImportMessageEx(This,type,dwState,pstm,rgszAttach,cAttach)
|
||
|
#define IFolderImport_ImportMessage(This,pimsg) \
|
||
|
(This)->lpVtbl -> ImportMessage(This,pimsg)
|
||
|
#endif /* COBJMACROS */
|
||
|
|
||
|
#endif /* C style interface */
|
||
|
|
||
|
|
||
|
|
||
|
// {E4499DE8-9F57-11D0-8D5C-00C04FD6202B}
|
||
|
DEFINE_GUID(IID_IMailImporter, 0xE4499DE8L, 0x9F57, 0x11D0, 0x8D, 0x5C, 0x00, 0xC0, 0x4F, 0xD6, 0x20, 0x2B);
|
||
|
|
||
|
// provided by Athena or Outlook
|
||
|
typedef interface IMailImporter IMailImporter;
|
||
|
|
||
|
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||
|
interface IMailImporter : public IUnknown
|
||
|
{
|
||
|
public:
|
||
|
virtual HRESULT STDMETHODCALLTYPE OpenFolder(DWORD_PTR dwCookie, const TCHAR *szFolder, IMPORTFOLDERTYPE type, DWORD dwFlags, IFolderImport **ppFldrImp, DWORD_PTR *pdwCookie) = 0;
|
||
|
};
|
||
|
#else /* C style interface */
|
||
|
typedef struct IMailImporterVtbl
|
||
|
{
|
||
|
BEGIN_INTERFACE
|
||
|
|
||
|
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||
|
IMailImporter * This,
|
||
|
/* [in] */ REFIID riid,
|
||
|
/* [iid_is][out] */ void **ppvObject);
|
||
|
|
||
|
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||
|
IMailImporter * This);
|
||
|
|
||
|
ULONG ( STDMETHODCALLTYPE *Release )(
|
||
|
IMailImporter * This);
|
||
|
|
||
|
HRESULT ( STDMETHODCALLTYPE *OpenFolder )(
|
||
|
IMailImporter * This,
|
||
|
DWORD_PTR dwCookie,
|
||
|
const TCHAR *szFolder,
|
||
|
IMPORTFOLDERTYPE type,
|
||
|
DWORD dwFlags,
|
||
|
IFolderImport **ppFldrImp,
|
||
|
DWORD_PTR *pdwCookie);
|
||
|
END_INTERFACE
|
||
|
} IMailImporterVtbl;
|
||
|
|
||
|
interface IMailImporter
|
||
|
{
|
||
|
CONST_VTBL struct IMailImporterVtbl *lpVtbl;
|
||
|
};
|
||
|
|
||
|
#ifdef COBJMACROS
|
||
|
|
||
|
#define IMailImporter_QueryInterface(This,riid,ppvObject) \
|
||
|
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||
|
#define IMailImporter_AddRef(This) \
|
||
|
(This)->lpVtbl -> AddRef(This)
|
||
|
#define IMailImporter_Release(This) \
|
||
|
(This)->lpVtbl -> Release(This)
|
||
|
#define IMailImporter_OpenFolder(This,dwCookie,szFolder,type,dwFlags,ppFldrImp,pdwCookie) \
|
||
|
(This)->lpVtbl -> OpenFolder(This,dwCookie,szFolder,type,dwFlags,ppFldrImp,pdwCookie)
|
||
|
|
||
|
#endif /* COBJMACROS */
|
||
|
|
||
|
#endif /* C style interface */
|
||
|
|
||
|
typedef struct tagIMPORTFOLDER
|
||
|
{
|
||
|
DWORD_PTR dwCookie;
|
||
|
TCHAR szName[MAX_PATH];
|
||
|
IMPORTFOLDERTYPE type;
|
||
|
// DWORD cMsg;
|
||
|
BOOL fSubFolders;
|
||
|
DWORD dwReserved1;
|
||
|
DWORD dwReserved2;
|
||
|
} IMPORTFOLDER;
|
||
|
|
||
|
// {E4499DE9-9F57-11D0-8D5C-00C04FD6202B}
|
||
|
DEFINE_GUID(IID_IEnumFOLDERS, 0xE4499DE9L, 0x9F57, 0x11D0, 0x8D, 0x5C, 0x00, 0xC0, 0x4F, 0xD6, 0x20, 0x2B);
|
||
|
|
||
|
typedef interface IEnumFOLDERS IEnumFOLDERS;
|
||
|
|
||
|
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||
|
interface IEnumFOLDERS : public IUnknown
|
||
|
{
|
||
|
public:
|
||
|
virtual HRESULT STDMETHODCALLTYPE Next(IMPORTFOLDER *pfldr) = 0;
|
||
|
virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;
|
||
|
};
|
||
|
#else /* C style interface */
|
||
|
typedef struct IEnumFOLDERSVtbl
|
||
|
{
|
||
|
BEGIN_INTERFACE
|
||
|
|
||
|
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||
|
IEnumFOLDERS * This,
|
||
|
/* [in] */ REFIID riid,
|
||
|
/* [iid_is][out] */ void **ppvObject);
|
||
|
|
||
|
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||
|
IEnumFOLDERS * This);
|
||
|
|
||
|
ULONG ( STDMETHODCALLTYPE *Release )(
|
||
|
IEnumFOLDERS * This);
|
||
|
|
||
|
HRESULT ( STDMETHODCALLTYPE *Next )(
|
||
|
IEnumFOLDERS * This,
|
||
|
IMPORTFOLDER *pfldr);
|
||
|
HRESULT ( STDMETHODCALLTYPE *Reset )(
|
||
|
IEnumFOLDERS * This);
|
||
|
END_INTERFACE
|
||
|
} IEnumFOLDERSVtbl;
|
||
|
|
||
|
interface IEnumFOLDERS
|
||
|
{
|
||
|
CONST_VTBL struct IEnumFOLDERSVtbl *lpVtbl;
|
||
|
};
|
||
|
|
||
|
#ifdef COBJMACROS
|
||
|
|
||
|
#define IEnumFOLDERS_QueryInterface(This,riid,ppvObject) \
|
||
|
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||
|
#define IEnumFOLDERS_AddRef(This) \
|
||
|
(This)->lpVtbl -> AddRef(This)
|
||
|
#define IEnumFOLDERS_Release(This) \
|
||
|
(This)->lpVtbl -> Release(This)
|
||
|
#define IEnumFOLDERS_Next(This,pfldr) \
|
||
|
(This)->lpVtbl -> Next(This,pfldr);
|
||
|
#define IEnumFOLDERS_Reset(This) \
|
||
|
(This)->lpVtbl -> Reset(This);
|
||
|
#endif /* COBJMACROS */
|
||
|
|
||
|
#endif /* C style interface */
|
||
|
|
||
|
|
||
|
#define COOKIE_ROOT MAXULONG_PTR
|
||
|
|
||
|
// {E4499DEA-9F57-11D0-8D5C-00C04FD6202B}
|
||
|
DEFINE_GUID(IID_IMailImport, 0xE4499DEAL, 0x9F57, 0x11D0, 0x8D, 0x5C, 0x00, 0xC0, 0x4F, 0xD6, 0x20, 0x2B);
|
||
|
|
||
|
typedef interface IMailImport IMailImport;
|
||
|
|
||
|
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||
|
interface IMailImport : public IUnknown
|
||
|
{
|
||
|
public:
|
||
|
virtual HRESULT STDMETHODCALLTYPE InitializeImport(HWND hwnd) = 0;
|
||
|
virtual HRESULT STDMETHODCALLTYPE GetDirectory(char *szDir, UINT cch) = 0;
|
||
|
virtual HRESULT STDMETHODCALLTYPE SetDirectory(char *szDir) = 0;
|
||
|
virtual HRESULT STDMETHODCALLTYPE EnumerateFolders(DWORD_PTR dwCookie, IEnumFOLDERS **ppEnum) = 0;
|
||
|
virtual HRESULT STDMETHODCALLTYPE ImportFolder(DWORD_PTR dwCookie, IFolderImport *pImport) = 0;
|
||
|
};
|
||
|
#else /* C style interface */
|
||
|
typedef struct IMailImportVtbl
|
||
|
{
|
||
|
BEGIN_INTERFACE
|
||
|
|
||
|
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||
|
IMailImport * This,
|
||
|
/* [in] */ REFIID riid,
|
||
|
/* [iid_is][out] */ void **ppvObject);
|
||
|
|
||
|
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||
|
IMailImport * This);
|
||
|
|
||
|
ULONG ( STDMETHODCALLTYPE *Release )(
|
||
|
IMailImport * This);
|
||
|
|
||
|
HRESULT ( STDMETHODCALLTYPE *InitializeImport )(
|
||
|
IMailImport * This,
|
||
|
HWND hwnd);
|
||
|
HRESULT ( STDMETHODCALLTYPE *GetDirectory )(
|
||
|
IMailImport * This,
|
||
|
char *szDir,
|
||
|
UINT cch);
|
||
|
HRESULT ( STDMETHODCALLTYPE *SetDirectory )(
|
||
|
IMailImport * This,
|
||
|
char *szDir);
|
||
|
HRESULT ( STDMETHODCALLTYPE *EnumerateFolders )(
|
||
|
IMailImport * This,
|
||
|
DWORD_PTR dwCookie,
|
||
|
IEnumFOLDERS **ppEnum);
|
||
|
HRESULT ( STDMETHODCALLTYPE *ImportFolder )(
|
||
|
IMailImport * This,
|
||
|
DWORD_PTR dwCookie,
|
||
|
IFolderImport *pImport);
|
||
|
|
||
|
END_INTERFACE
|
||
|
} IMailImportVtbl;
|
||
|
|
||
|
interface IMailImport
|
||
|
{
|
||
|
CONST_VTBL struct IMailImportVtbl *lpVtbl;
|
||
|
};
|
||
|
|
||
|
#ifdef COBJMACROS
|
||
|
|
||
|
#define IMailImport_QueryInterface(This,riid,ppvObject) \
|
||
|
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||
|
#define IMailImport_AddRef(This) \
|
||
|
(This)->lpVtbl -> AddRef(This)
|
||
|
#define IMailImport_Release(This) \
|
||
|
(This)->lpVtbl -> Release(This)
|
||
|
#define IMailImport_InitializeImport(This,hwnd) \
|
||
|
(This)->lpVtbl -> InitializeImport(This,hwnd)
|
||
|
#define IMailImport_GetDirectory(This,szDir,cch) \
|
||
|
(This)->lpVtbl -> GetDirectory(This,szDir,cch)
|
||
|
#define IMailImport_SetDirectory(This,szDir) \
|
||
|
(This)->lpVtbl -> SetDirectory(This,szDir)
|
||
|
#define IMailImport_EnumerateFolders(This,dwCookie,ppEnum) \
|
||
|
(This)->lpVtbl -> EnumerateFolders(This,dwCookie,ppEnum)
|
||
|
#define IMailImport_ImportFolder(This,dwCookie,pImport) \
|
||
|
(This)->lpVtbl -> ImportFolder(This,dwCookie,pImport)
|
||
|
|
||
|
#endif /* COBJMACROS */
|
||
|
|
||
|
#endif /* C style interface */
|
||
|
|
||
|
#define achPerformImport "PerformImport"
|
||
|
void PerformImport(HWND hwnd, IMailImporter *pMailImp, DWORD dwFlags);
|
||
|
typedef void (*PFNPERFORMIMPORT)(HWND, IMailImporter *, DWORD);
|
||
|
|
||
|
#define achPerformMigration "PerformMigration"
|
||
|
HRESULT PerformMigration(HWND hwnd, IMailImporter *pMailImp, DWORD dwFlags);
|
||
|
typedef HRESULT (*PFNPERFORMMIGRATION)(HWND, IMailImporter *, DWORD);
|
||
|
|
||
|
#endif // _INC_NEWIMP_H
|