Windows2003-3790/inetcore/published/inc/newimp.h
2020-09-30 16:53:55 +02:00

346 lines
11 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