#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