/*** Autogenerated by WIDL 5.0 from imnact.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __imnact_h__
#define __imnact_h__

/* Forward declarations */

#ifndef __IImnAdviseAccount_FWD_DEFINED__
#define __IImnAdviseAccount_FWD_DEFINED__
typedef interface IImnAdviseAccount IImnAdviseAccount;
#ifdef __cplusplus
interface IImnAdviseAccount;
#endif /* __cplusplus */
#endif

#ifndef __IImnAdviseMigrateServer_FWD_DEFINED__
#define __IImnAdviseMigrateServer_FWD_DEFINED__
typedef interface IImnAdviseMigrateServer IImnAdviseMigrateServer;
#ifdef __cplusplus
interface IImnAdviseMigrateServer;
#endif /* __cplusplus */
#endif

#ifndef __IImnEnumAccounts_FWD_DEFINED__
#define __IImnEnumAccounts_FWD_DEFINED__
typedef interface IImnEnumAccounts IImnEnumAccounts;
#ifdef __cplusplus
interface IImnEnumAccounts;
#endif /* __cplusplus */
#endif

#ifndef __IImnAccountManager_FWD_DEFINED__
#define __IImnAccountManager_FWD_DEFINED__
typedef interface IImnAccountManager IImnAccountManager;
#ifdef __cplusplus
interface IImnAccountManager;
#endif /* __cplusplus */
#endif

#ifndef __IImnAccountManager2_FWD_DEFINED__
#define __IImnAccountManager2_FWD_DEFINED__
typedef interface IImnAccountManager2 IImnAccountManager2;
#ifdef __cplusplus
interface IImnAccountManager2;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyContainer_FWD_DEFINED__
#define __IPropertyContainer_FWD_DEFINED__
typedef interface IPropertyContainer IPropertyContainer;
#ifdef __cplusplus
interface IPropertyContainer;
#endif /* __cplusplus */
#endif

#ifndef __IImnAccount_FWD_DEFINED__
#define __IImnAccount_FWD_DEFINED__
typedef interface IImnAccount IImnAccount;
#ifdef __cplusplus
interface IImnAccount;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <objidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IImnAccount_FWD_DEFINED__
#define __IImnAccount_FWD_DEFINED__
typedef interface IImnAccount IImnAccount;
#ifdef __cplusplus
interface IImnAccount;
#endif /* __cplusplus */
#endif

#ifndef HR_E
#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)
#endif
#ifndef HR_S
#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)
#endif
typedef enum tagSMTPAUTHTYPE {
    SMTP_AUTH_NONE = 0,
    SMTP_AUTH_SICILY = 1,
    SMTP_AUTH_USE_POP3ORIMAP_SETTINGS = 2,
    SMTP_AUTH_USE_SMTP_SETTINGS = 3
} SMTPAUTHTYPE;
#define CCHMAX_ORG_NAME (256)

#define CCHMAX_DISPLAY_NAME (256)

#define CCHMAX_ACCOUNT_NAME (256)

#define CCHMAX_SERVER_NAME (256)

#define CCHMAX_PASSWORD (256)

#define CCHMAX_USERNAME (256)

#define CCHMAX_EMAIL_ADDRESS (256)

#define CCHMAX_CONNECTOID (256)

#define CCHMAX_SEARCH_BASE (256)

#define CCHMAX_ROOT_FOLDER (256)

#define CCHMAX_SIGNATURE (16)

#define CCHMAX_SERVICE (256)

/*****************************************************************************
 * IImnAdviseAccount interface
 */
#ifndef __IImnAdviseAccount_INTERFACE_DEFINED__
#define __IImnAdviseAccount_INTERFACE_DEFINED__

typedef enum __WIDL_imnact_generated_name_0000000D {
    ACCT_NEWS = 0,
    ACCT_MAIL = 1,
    ACCT_DIR_SERV = 2,
    ACCT_LAST = 3
} ACCTTYPE;
typedef struct tagAccountContext {
    ACCTTYPE AcctType;
    LPSTR pszAccountID;
    LPSTR pszOldName;
    DWORD dwServerType;
} ACTX;
DEFINE_GUID(IID_IImnAdviseAccount, 0x0a06bd31, 0x166f, 0x11d0, 0x81,0xb9, 0x00,0xc0,0x4f,0xd8,0x5a,0xb4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0a06bd31-166f-11d0-81b9-00c04fd85ab4")
IImnAdviseAccount : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AdviseAccount(
        DWORD dwAdviseType,
        ACTX *pAcctCtx) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IImnAdviseAccount, 0x0a06bd31, 0x166f, 0x11d0, 0x81,0xb9, 0x00,0xc0,0x4f,0xd8,0x5a,0xb4)
#endif
#else
typedef struct IImnAdviseAccountVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IImnAdviseAccount *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IImnAdviseAccount *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IImnAdviseAccount *This);

    /*** IImnAdviseAccount methods ***/
    HRESULT (STDMETHODCALLTYPE *AdviseAccount)(
        IImnAdviseAccount *This,
        DWORD dwAdviseType,
        ACTX *pAcctCtx);

    END_INTERFACE
} IImnAdviseAccountVtbl;

interface IImnAdviseAccount {
    CONST_VTBL IImnAdviseAccountVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IImnAdviseAccount_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IImnAdviseAccount_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IImnAdviseAccount_Release(This) (This)->lpVtbl->Release(This)
/*** IImnAdviseAccount methods ***/
#define IImnAdviseAccount_AdviseAccount(This,dwAdviseType,pAcctCtx) (This)->lpVtbl->AdviseAccount(This,dwAdviseType,pAcctCtx)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IImnAdviseAccount_QueryInterface(IImnAdviseAccount* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IImnAdviseAccount_AddRef(IImnAdviseAccount* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IImnAdviseAccount_Release(IImnAdviseAccount* This) {
    return This->lpVtbl->Release(This);
}
/*** IImnAdviseAccount methods ***/
static FORCEINLINE HRESULT IImnAdviseAccount_AdviseAccount(IImnAdviseAccount* This,DWORD dwAdviseType,ACTX *pAcctCtx) {
    return This->lpVtbl->AdviseAccount(This,dwAdviseType,pAcctCtx);
}
#endif
#endif

#endif


#endif  /* __IImnAdviseAccount_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IImnAdviseMigrateServer interface
 */
#ifndef __IImnAdviseMigrateServer_INTERFACE_DEFINED__
#define __IImnAdviseMigrateServer_INTERFACE_DEFINED__

DEFINE_GUID(IID_IImnAdviseMigrateServer, 0x8d0aed11, 0x1638, 0x11d0, 0x81,0xb9, 0x00,0xc0,0x4f,0xd8,0x5a,0xb4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8d0aed11-1638-11d0-81b9-00c04fd85ab4")
IImnAdviseMigrateServer : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE MigrateServer(
        DWORD dwSrvType,
        IImnAccount *pAccount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IImnAdviseMigrateServer, 0x8d0aed11, 0x1638, 0x11d0, 0x81,0xb9, 0x00,0xc0,0x4f,0xd8,0x5a,0xb4)
#endif
#else
typedef struct IImnAdviseMigrateServerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IImnAdviseMigrateServer *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IImnAdviseMigrateServer *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IImnAdviseMigrateServer *This);

    /*** IImnAdviseMigrateServer methods ***/
    HRESULT (STDMETHODCALLTYPE *MigrateServer)(
        IImnAdviseMigrateServer *This,
        DWORD dwSrvType,
        IImnAccount *pAccount);

    END_INTERFACE
} IImnAdviseMigrateServerVtbl;

interface IImnAdviseMigrateServer {
    CONST_VTBL IImnAdviseMigrateServerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IImnAdviseMigrateServer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IImnAdviseMigrateServer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IImnAdviseMigrateServer_Release(This) (This)->lpVtbl->Release(This)
/*** IImnAdviseMigrateServer methods ***/
#define IImnAdviseMigrateServer_MigrateServer(This,dwSrvType,pAccount) (This)->lpVtbl->MigrateServer(This,dwSrvType,pAccount)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IImnAdviseMigrateServer_QueryInterface(IImnAdviseMigrateServer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IImnAdviseMigrateServer_AddRef(IImnAdviseMigrateServer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IImnAdviseMigrateServer_Release(IImnAdviseMigrateServer* This) {
    return This->lpVtbl->Release(This);
}
/*** IImnAdviseMigrateServer methods ***/
static FORCEINLINE HRESULT IImnAdviseMigrateServer_MigrateServer(IImnAdviseMigrateServer* This,DWORD dwSrvType,IImnAccount *pAccount) {
    return This->lpVtbl->MigrateServer(This,dwSrvType,pAccount);
}
#endif
#endif

#endif


#endif  /* __IImnAdviseMigrateServer_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IImnEnumAccounts interface
 */
#ifndef __IImnEnumAccounts_INTERFACE_DEFINED__
#define __IImnEnumAccounts_INTERFACE_DEFINED__

DEFINE_GUID(IID_IImnEnumAccounts, 0xfd465483, 0x1384, 0x11d0, 0xab,0xbd, 0x00,0x20,0xaf,0xdf,0xd1,0x0a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd465483-1384-11d0-abbd-0020afdfd10a")
IImnEnumAccounts : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCount(
        ULONG *pcItems) = 0;

    virtual HRESULT STDMETHODCALLTYPE SortByAccountName(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNext(
        IImnAccount **ppAccount) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IImnEnumAccounts, 0xfd465483, 0x1384, 0x11d0, 0xab,0xbd, 0x00,0x20,0xaf,0xdf,0xd1,0x0a)
#endif
#else
typedef struct IImnEnumAccountsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IImnEnumAccounts *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IImnEnumAccounts *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IImnEnumAccounts *This);

    /*** IImnEnumAccounts methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IImnEnumAccounts *This,
        ULONG *pcItems);

    HRESULT (STDMETHODCALLTYPE *SortByAccountName)(
        IImnEnumAccounts *This);

    HRESULT (STDMETHODCALLTYPE *GetNext)(
        IImnEnumAccounts *This,
        IImnAccount **ppAccount);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IImnEnumAccounts *This);

    END_INTERFACE
} IImnEnumAccountsVtbl;

interface IImnEnumAccounts {
    CONST_VTBL IImnEnumAccountsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IImnEnumAccounts_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IImnEnumAccounts_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IImnEnumAccounts_Release(This) (This)->lpVtbl->Release(This)
/*** IImnEnumAccounts methods ***/
#define IImnEnumAccounts_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
#define IImnEnumAccounts_SortByAccountName(This) (This)->lpVtbl->SortByAccountName(This)
#define IImnEnumAccounts_GetNext(This,ppAccount) (This)->lpVtbl->GetNext(This,ppAccount)
#define IImnEnumAccounts_Reset(This) (This)->lpVtbl->Reset(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IImnEnumAccounts_QueryInterface(IImnEnumAccounts* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IImnEnumAccounts_AddRef(IImnEnumAccounts* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IImnEnumAccounts_Release(IImnEnumAccounts* This) {
    return This->lpVtbl->Release(This);
}
/*** IImnEnumAccounts methods ***/
static FORCEINLINE HRESULT IImnEnumAccounts_GetCount(IImnEnumAccounts* This,ULONG *pcItems) {
    return This->lpVtbl->GetCount(This,pcItems);
}
static FORCEINLINE HRESULT IImnEnumAccounts_SortByAccountName(IImnEnumAccounts* This) {
    return This->lpVtbl->SortByAccountName(This);
}
static FORCEINLINE HRESULT IImnEnumAccounts_GetNext(IImnEnumAccounts* This,IImnAccount **ppAccount) {
    return This->lpVtbl->GetNext(This,ppAccount);
}
static FORCEINLINE HRESULT IImnEnumAccounts_Reset(IImnEnumAccounts* This) {
    return This->lpVtbl->Reset(This);
}
#endif
#endif

#endif


#endif  /* __IImnEnumAccounts_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IImnAccountManager interface
 */
#ifndef __IImnAccountManager_INTERFACE_DEFINED__
#define __IImnAccountManager_INTERFACE_DEFINED__

typedef struct tagACCTLISTINFO {
    DWORD cbSize;
    ACCTTYPE AcctTypeInit;
    DWORD dwAcctFlags;
    DWORD dwFlags;
} ACCTLISTINFO;
DEFINE_GUID(IID_IImnAccountManager, 0xfd465481, 0x1384, 0x11d0, 0xab,0xbd, 0x00,0x20,0xaf,0xdf,0xd1,0x0a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd465481-1384-11d0-abbd-0020afdfd10a")
IImnAccountManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Init(
        IImnAdviseMigrateServer *pAdviseMigrateServer) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAccountObject(
        ACCTTYPE AcctType,
        IImnAccount **ppAccount) = 0;

    virtual HRESULT STDMETHODCALLTYPE Enumerate(
        DWORD dwSrvTypes,
        IImnEnumAccounts **ppEnumAccounts) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAccountCount(
        ACCTTYPE AcctType,
        ULONG *pcServers) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindAccount(
        DWORD dwPropTag,
        LPCSTR pszSearchData,
        IImnAccount **ppAccount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultAccountName(
        ACCTTYPE AcctType,
        LPSTR pszAccount,
        ULONG cchMax) = 0;

    virtual HRESULT STDMETHODCALLTYPE ProcessNotification(
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE ValidateDefaultSendAccount(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE AccountListDialog(
        HWND hwnd,
        ACCTLISTINFO *pinfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE Advise(
        IImnAdviseAccount *pAdviseAccount,
        DWORD *pdwConnection) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwConnection) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUniqueAccountName(
        LPSTR szName,
        UINT cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitEx(
        IImnAdviseMigrateServer *pAdviseMigrateServer,
        DWORD dwFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IImnAccountManager, 0xfd465481, 0x1384, 0x11d0, 0xab,0xbd, 0x00,0x20,0xaf,0xdf,0xd1,0x0a)
#endif
#else
typedef struct IImnAccountManagerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IImnAccountManager *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IImnAccountManager *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IImnAccountManager *This);

    /*** IImnAccountManager methods ***/
    HRESULT (STDMETHODCALLTYPE *Init)(
        IImnAccountManager *This,
        IImnAdviseMigrateServer *pAdviseMigrateServer);

    HRESULT (STDMETHODCALLTYPE *CreateAccountObject)(
        IImnAccountManager *This,
        ACCTTYPE AcctType,
        IImnAccount **ppAccount);

    HRESULT (STDMETHODCALLTYPE *Enumerate)(
        IImnAccountManager *This,
        DWORD dwSrvTypes,
        IImnEnumAccounts **ppEnumAccounts);

    HRESULT (STDMETHODCALLTYPE *GetAccountCount)(
        IImnAccountManager *This,
        ACCTTYPE AcctType,
        ULONG *pcServers);

    HRESULT (STDMETHODCALLTYPE *FindAccount)(
        IImnAccountManager *This,
        DWORD dwPropTag,
        LPCSTR pszSearchData,
        IImnAccount **ppAccount);

    HRESULT (STDMETHODCALLTYPE *GetDefaultAccountName)(
        IImnAccountManager *This,
        ACCTTYPE AcctType,
        LPSTR pszAccount,
        ULONG cchMax);

    HRESULT (STDMETHODCALLTYPE *ProcessNotification)(
        IImnAccountManager *This,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *ValidateDefaultSendAccount)(
        IImnAccountManager *This);

    HRESULT (STDMETHODCALLTYPE *AccountListDialog)(
        IImnAccountManager *This,
        HWND hwnd,
        ACCTLISTINFO *pinfo);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        IImnAccountManager *This,
        IImnAdviseAccount *pAdviseAccount,
        DWORD *pdwConnection);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        IImnAccountManager *This,
        DWORD dwConnection);

    HRESULT (STDMETHODCALLTYPE *GetUniqueAccountName)(
        IImnAccountManager *This,
        LPSTR szName,
        UINT cch);

    HRESULT (STDMETHODCALLTYPE *InitEx)(
        IImnAccountManager *This,
        IImnAdviseMigrateServer *pAdviseMigrateServer,
        DWORD dwFlags);

    END_INTERFACE
} IImnAccountManagerVtbl;

interface IImnAccountManager {
    CONST_VTBL IImnAccountManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IImnAccountManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IImnAccountManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IImnAccountManager_Release(This) (This)->lpVtbl->Release(This)
/*** IImnAccountManager methods ***/
#define IImnAccountManager_Init(This,pAdviseMigrateServer) (This)->lpVtbl->Init(This,pAdviseMigrateServer)
#define IImnAccountManager_CreateAccountObject(This,AcctType,ppAccount) (This)->lpVtbl->CreateAccountObject(This,AcctType,ppAccount)
#define IImnAccountManager_Enumerate(This,dwSrvTypes,ppEnumAccounts) (This)->lpVtbl->Enumerate(This,dwSrvTypes,ppEnumAccounts)
#define IImnAccountManager_GetAccountCount(This,AcctType,pcServers) (This)->lpVtbl->GetAccountCount(This,AcctType,pcServers)
#define IImnAccountManager_FindAccount(This,dwPropTag,pszSearchData,ppAccount) (This)->lpVtbl->FindAccount(This,dwPropTag,pszSearchData,ppAccount)
#define IImnAccountManager_GetDefaultAccountName(This,AcctType,pszAccount,cchMax) (This)->lpVtbl->GetDefaultAccountName(This,AcctType,pszAccount,cchMax)
#define IImnAccountManager_ProcessNotification(This,uMsg,wParam,lParam) (This)->lpVtbl->ProcessNotification(This,uMsg,wParam,lParam)
#define IImnAccountManager_ValidateDefaultSendAccount(This) (This)->lpVtbl->ValidateDefaultSendAccount(This)
#define IImnAccountManager_AccountListDialog(This,hwnd,pinfo) (This)->lpVtbl->AccountListDialog(This,hwnd,pinfo)
#define IImnAccountManager_Advise(This,pAdviseAccount,pdwConnection) (This)->lpVtbl->Advise(This,pAdviseAccount,pdwConnection)
#define IImnAccountManager_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection)
#define IImnAccountManager_GetUniqueAccountName(This,szName,cch) (This)->lpVtbl->GetUniqueAccountName(This,szName,cch)
#define IImnAccountManager_InitEx(This,pAdviseMigrateServer,dwFlags) (This)->lpVtbl->InitEx(This,pAdviseMigrateServer,dwFlags)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IImnAccountManager_QueryInterface(IImnAccountManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IImnAccountManager_AddRef(IImnAccountManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IImnAccountManager_Release(IImnAccountManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IImnAccountManager methods ***/
static FORCEINLINE HRESULT IImnAccountManager_Init(IImnAccountManager* This,IImnAdviseMigrateServer *pAdviseMigrateServer) {
    return This->lpVtbl->Init(This,pAdviseMigrateServer);
}
static FORCEINLINE HRESULT IImnAccountManager_CreateAccountObject(IImnAccountManager* This,ACCTTYPE AcctType,IImnAccount **ppAccount) {
    return This->lpVtbl->CreateAccountObject(This,AcctType,ppAccount);
}
static FORCEINLINE HRESULT IImnAccountManager_Enumerate(IImnAccountManager* This,DWORD dwSrvTypes,IImnEnumAccounts **ppEnumAccounts) {
    return This->lpVtbl->Enumerate(This,dwSrvTypes,ppEnumAccounts);
}
static FORCEINLINE HRESULT IImnAccountManager_GetAccountCount(IImnAccountManager* This,ACCTTYPE AcctType,ULONG *pcServers) {
    return This->lpVtbl->GetAccountCount(This,AcctType,pcServers);
}
static FORCEINLINE HRESULT IImnAccountManager_FindAccount(IImnAccountManager* This,DWORD dwPropTag,LPCSTR pszSearchData,IImnAccount **ppAccount) {
    return This->lpVtbl->FindAccount(This,dwPropTag,pszSearchData,ppAccount);
}
static FORCEINLINE HRESULT IImnAccountManager_GetDefaultAccountName(IImnAccountManager* This,ACCTTYPE AcctType,LPSTR pszAccount,ULONG cchMax) {
    return This->lpVtbl->GetDefaultAccountName(This,AcctType,pszAccount,cchMax);
}
static FORCEINLINE HRESULT IImnAccountManager_ProcessNotification(IImnAccountManager* This,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->ProcessNotification(This,uMsg,wParam,lParam);
}
static FORCEINLINE HRESULT IImnAccountManager_ValidateDefaultSendAccount(IImnAccountManager* This) {
    return This->lpVtbl->ValidateDefaultSendAccount(This);
}
static FORCEINLINE HRESULT IImnAccountManager_AccountListDialog(IImnAccountManager* This,HWND hwnd,ACCTLISTINFO *pinfo) {
    return This->lpVtbl->AccountListDialog(This,hwnd,pinfo);
}
static FORCEINLINE HRESULT IImnAccountManager_Advise(IImnAccountManager* This,IImnAdviseAccount *pAdviseAccount,DWORD *pdwConnection) {
    return This->lpVtbl->Advise(This,pAdviseAccount,pdwConnection);
}
static FORCEINLINE HRESULT IImnAccountManager_Unadvise(IImnAccountManager* This,DWORD dwConnection) {
    return This->lpVtbl->Unadvise(This,dwConnection);
}
static FORCEINLINE HRESULT IImnAccountManager_GetUniqueAccountName(IImnAccountManager* This,LPSTR szName,UINT cch) {
    return This->lpVtbl->GetUniqueAccountName(This,szName,cch);
}
static FORCEINLINE HRESULT IImnAccountManager_InitEx(IImnAccountManager* This,IImnAdviseMigrateServer *pAdviseMigrateServer,DWORD dwFlags) {
    return This->lpVtbl->InitEx(This,pAdviseMigrateServer,dwFlags);
}
#endif
#endif

#endif


#endif  /* __IImnAccountManager_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IImnAccountManager2 interface
 */
#ifndef __IImnAccountManager2_INTERFACE_DEFINED__
#define __IImnAccountManager2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IImnAccountManager2, 0xc43dfc6f, 0x62bb, 0x11d2, 0xa7,0x27, 0x00,0xc0,0x4f,0x79,0xe7,0xc8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c43dfc6f-62bb-11d2-a727-00c04f79e7c8")
IImnAccountManager2 : public IImnAccountManager
{
    virtual HRESULT STDMETHODCALLTYPE InitUser(
        IImnAdviseMigrateServer *pAdviseMigrateServer,
        REFGUID rguidID,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIncompleteAccount(
        ACCTTYPE AcctType,
        LPSTR pszAccountId,
        ULONG cchMax) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIncompleteAccount(
        ACCTTYPE AcctType,
        LPCSTR pszAccountId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IImnAccountManager2, 0xc43dfc6f, 0x62bb, 0x11d2, 0xa7,0x27, 0x00,0xc0,0x4f,0x79,0xe7,0xc8)
#endif
#else
typedef struct IImnAccountManager2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IImnAccountManager2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IImnAccountManager2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IImnAccountManager2 *This);

    /*** IImnAccountManager methods ***/
    HRESULT (STDMETHODCALLTYPE *Init)(
        IImnAccountManager2 *This,
        IImnAdviseMigrateServer *pAdviseMigrateServer);

    HRESULT (STDMETHODCALLTYPE *CreateAccountObject)(
        IImnAccountManager2 *This,
        ACCTTYPE AcctType,
        IImnAccount **ppAccount);

    HRESULT (STDMETHODCALLTYPE *Enumerate)(
        IImnAccountManager2 *This,
        DWORD dwSrvTypes,
        IImnEnumAccounts **ppEnumAccounts);

    HRESULT (STDMETHODCALLTYPE *GetAccountCount)(
        IImnAccountManager2 *This,
        ACCTTYPE AcctType,
        ULONG *pcServers);

    HRESULT (STDMETHODCALLTYPE *FindAccount)(
        IImnAccountManager2 *This,
        DWORD dwPropTag,
        LPCSTR pszSearchData,
        IImnAccount **ppAccount);

    HRESULT (STDMETHODCALLTYPE *GetDefaultAccountName)(
        IImnAccountManager2 *This,
        ACCTTYPE AcctType,
        LPSTR pszAccount,
        ULONG cchMax);

    HRESULT (STDMETHODCALLTYPE *ProcessNotification)(
        IImnAccountManager2 *This,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *ValidateDefaultSendAccount)(
        IImnAccountManager2 *This);

    HRESULT (STDMETHODCALLTYPE *AccountListDialog)(
        IImnAccountManager2 *This,
        HWND hwnd,
        ACCTLISTINFO *pinfo);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        IImnAccountManager2 *This,
        IImnAdviseAccount *pAdviseAccount,
        DWORD *pdwConnection);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        IImnAccountManager2 *This,
        DWORD dwConnection);

    HRESULT (STDMETHODCALLTYPE *GetUniqueAccountName)(
        IImnAccountManager2 *This,
        LPSTR szName,
        UINT cch);

    HRESULT (STDMETHODCALLTYPE *InitEx)(
        IImnAccountManager2 *This,
        IImnAdviseMigrateServer *pAdviseMigrateServer,
        DWORD dwFlags);

    /*** IImnAccountManager2 methods ***/
    HRESULT (STDMETHODCALLTYPE *InitUser)(
        IImnAccountManager2 *This,
        IImnAdviseMigrateServer *pAdviseMigrateServer,
        REFGUID rguidID,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *GetIncompleteAccount)(
        IImnAccountManager2 *This,
        ACCTTYPE AcctType,
        LPSTR pszAccountId,
        ULONG cchMax);

    HRESULT (STDMETHODCALLTYPE *SetIncompleteAccount)(
        IImnAccountManager2 *This,
        ACCTTYPE AcctType,
        LPCSTR pszAccountId);

    END_INTERFACE
} IImnAccountManager2Vtbl;

interface IImnAccountManager2 {
    CONST_VTBL IImnAccountManager2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IImnAccountManager2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IImnAccountManager2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IImnAccountManager2_Release(This) (This)->lpVtbl->Release(This)
/*** IImnAccountManager methods ***/
#define IImnAccountManager2_Init(This,pAdviseMigrateServer) (This)->lpVtbl->Init(This,pAdviseMigrateServer)
#define IImnAccountManager2_CreateAccountObject(This,AcctType,ppAccount) (This)->lpVtbl->CreateAccountObject(This,AcctType,ppAccount)
#define IImnAccountManager2_Enumerate(This,dwSrvTypes,ppEnumAccounts) (This)->lpVtbl->Enumerate(This,dwSrvTypes,ppEnumAccounts)
#define IImnAccountManager2_GetAccountCount(This,AcctType,pcServers) (This)->lpVtbl->GetAccountCount(This,AcctType,pcServers)
#define IImnAccountManager2_FindAccount(This,dwPropTag,pszSearchData,ppAccount) (This)->lpVtbl->FindAccount(This,dwPropTag,pszSearchData,ppAccount)
#define IImnAccountManager2_GetDefaultAccountName(This,AcctType,pszAccount,cchMax) (This)->lpVtbl->GetDefaultAccountName(This,AcctType,pszAccount,cchMax)
#define IImnAccountManager2_ProcessNotification(This,uMsg,wParam,lParam) (This)->lpVtbl->ProcessNotification(This,uMsg,wParam,lParam)
#define IImnAccountManager2_ValidateDefaultSendAccount(This) (This)->lpVtbl->ValidateDefaultSendAccount(This)
#define IImnAccountManager2_AccountListDialog(This,hwnd,pinfo) (This)->lpVtbl->AccountListDialog(This,hwnd,pinfo)
#define IImnAccountManager2_Advise(This,pAdviseAccount,pdwConnection) (This)->lpVtbl->Advise(This,pAdviseAccount,pdwConnection)
#define IImnAccountManager2_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection)
#define IImnAccountManager2_GetUniqueAccountName(This,szName,cch) (This)->lpVtbl->GetUniqueAccountName(This,szName,cch)
#define IImnAccountManager2_InitEx(This,pAdviseMigrateServer,dwFlags) (This)->lpVtbl->InitEx(This,pAdviseMigrateServer,dwFlags)
/*** IImnAccountManager2 methods ***/
#define IImnAccountManager2_InitUser(This,pAdviseMigrateServer,rguidID,dwFlags) (This)->lpVtbl->InitUser(This,pAdviseMigrateServer,rguidID,dwFlags)
#define IImnAccountManager2_GetIncompleteAccount(This,AcctType,pszAccountId,cchMax) (This)->lpVtbl->GetIncompleteAccount(This,AcctType,pszAccountId,cchMax)
#define IImnAccountManager2_SetIncompleteAccount(This,AcctType,pszAccountId) (This)->lpVtbl->SetIncompleteAccount(This,AcctType,pszAccountId)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IImnAccountManager2_QueryInterface(IImnAccountManager2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IImnAccountManager2_AddRef(IImnAccountManager2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IImnAccountManager2_Release(IImnAccountManager2* This) {
    return This->lpVtbl->Release(This);
}
/*** IImnAccountManager methods ***/
static FORCEINLINE HRESULT IImnAccountManager2_Init(IImnAccountManager2* This,IImnAdviseMigrateServer *pAdviseMigrateServer) {
    return This->lpVtbl->Init(This,pAdviseMigrateServer);
}
static FORCEINLINE HRESULT IImnAccountManager2_CreateAccountObject(IImnAccountManager2* This,ACCTTYPE AcctType,IImnAccount **ppAccount) {
    return This->lpVtbl->CreateAccountObject(This,AcctType,ppAccount);
}
static FORCEINLINE HRESULT IImnAccountManager2_Enumerate(IImnAccountManager2* This,DWORD dwSrvTypes,IImnEnumAccounts **ppEnumAccounts) {
    return This->lpVtbl->Enumerate(This,dwSrvTypes,ppEnumAccounts);
}
static FORCEINLINE HRESULT IImnAccountManager2_GetAccountCount(IImnAccountManager2* This,ACCTTYPE AcctType,ULONG *pcServers) {
    return This->lpVtbl->GetAccountCount(This,AcctType,pcServers);
}
static FORCEINLINE HRESULT IImnAccountManager2_FindAccount(IImnAccountManager2* This,DWORD dwPropTag,LPCSTR pszSearchData,IImnAccount **ppAccount) {
    return This->lpVtbl->FindAccount(This,dwPropTag,pszSearchData,ppAccount);
}
static FORCEINLINE HRESULT IImnAccountManager2_GetDefaultAccountName(IImnAccountManager2* This,ACCTTYPE AcctType,LPSTR pszAccount,ULONG cchMax) {
    return This->lpVtbl->GetDefaultAccountName(This,AcctType,pszAccount,cchMax);
}
static FORCEINLINE HRESULT IImnAccountManager2_ProcessNotification(IImnAccountManager2* This,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->ProcessNotification(This,uMsg,wParam,lParam);
}
static FORCEINLINE HRESULT IImnAccountManager2_ValidateDefaultSendAccount(IImnAccountManager2* This) {
    return This->lpVtbl->ValidateDefaultSendAccount(This);
}
static FORCEINLINE HRESULT IImnAccountManager2_AccountListDialog(IImnAccountManager2* This,HWND hwnd,ACCTLISTINFO *pinfo) {
    return This->lpVtbl->AccountListDialog(This,hwnd,pinfo);
}
static FORCEINLINE HRESULT IImnAccountManager2_Advise(IImnAccountManager2* This,IImnAdviseAccount *pAdviseAccount,DWORD *pdwConnection) {
    return This->lpVtbl->Advise(This,pAdviseAccount,pdwConnection);
}
static FORCEINLINE HRESULT IImnAccountManager2_Unadvise(IImnAccountManager2* This,DWORD dwConnection) {
    return This->lpVtbl->Unadvise(This,dwConnection);
}
static FORCEINLINE HRESULT IImnAccountManager2_GetUniqueAccountName(IImnAccountManager2* This,LPSTR szName,UINT cch) {
    return This->lpVtbl->GetUniqueAccountName(This,szName,cch);
}
static FORCEINLINE HRESULT IImnAccountManager2_InitEx(IImnAccountManager2* This,IImnAdviseMigrateServer *pAdviseMigrateServer,DWORD dwFlags) {
    return This->lpVtbl->InitEx(This,pAdviseMigrateServer,dwFlags);
}
/*** IImnAccountManager2 methods ***/
static FORCEINLINE HRESULT IImnAccountManager2_InitUser(IImnAccountManager2* This,IImnAdviseMigrateServer *pAdviseMigrateServer,REFGUID rguidID,DWORD dwFlags) {
    return This->lpVtbl->InitUser(This,pAdviseMigrateServer,rguidID,dwFlags);
}
static FORCEINLINE HRESULT IImnAccountManager2_GetIncompleteAccount(IImnAccountManager2* This,ACCTTYPE AcctType,LPSTR pszAccountId,ULONG cchMax) {
    return This->lpVtbl->GetIncompleteAccount(This,AcctType,pszAccountId,cchMax);
}
static FORCEINLINE HRESULT IImnAccountManager2_SetIncompleteAccount(IImnAccountManager2* This,ACCTTYPE AcctType,LPCSTR pszAccountId) {
    return This->lpVtbl->SetIncompleteAccount(This,AcctType,pszAccountId);
}
#endif
#endif

#endif


#endif  /* __IImnAccountManager2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IPropertyContainer interface
 */
#ifndef __IPropertyContainer_INTERFACE_DEFINED__
#define __IPropertyContainer_INTERFACE_DEFINED__

typedef enum __WIDL_imnact_generated_name_0000000E {
    TYPE_ERROR = 1000,
    TYPE_DWORD = 1001,
    TYPE_LONG = 1002,
    TYPE_WORD = 1003,
    TYPE_SHORT = 1004,
    TYPE_BYTE = 1005,
    TYPE_CHAR = 1006,
    TYPE_FILETIME = 1007,
    TYPE_STRING = 1008,
    TYPE_BINARY = 1009,
    TYPE_FLAGS = 1010,
    TYPE_STREAM = 1011,
    TYPE_WSTRING = 1012,
    TYPE_BOOL = 1013,
    TYPE_PASS = 1014,
    TYPE_LAST = 1015
} PROPTYPE;
#ifdef WINE_NO_UNICODE_MACROS
#undef GetProp
#undef SetProp
#endif
DEFINE_GUID(IID_IPropertyContainer, 0xfd465484, 0x1384, 0x11d0, 0xab,0xbd, 0x00,0x20,0xaf,0xdf,0xd1,0x0a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd465484-1384-11d0-abbd-0020afdfd10a")
IPropertyContainer : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProp(
        DWORD dwPropTag,
        BYTE *pb,
        ULONG *pcb) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropDw(
        DWORD dwPropTag,
        DWORD *pdw) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropSz(
        DWORD dwPropTag,
        LPSTR psz,
        ULONG cchMax) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProp(
        DWORD dwPropTag,
        BYTE *pb,
        ULONG cb) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPropDw(
        DWORD dwPropTag,
        DWORD dw) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPropSz(
        DWORD dwPropTag,
        LPSTR psz) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyContainer, 0xfd465484, 0x1384, 0x11d0, 0xab,0xbd, 0x00,0x20,0xaf,0xdf,0xd1,0x0a)
#endif
#else
typedef struct IPropertyContainerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyContainer *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyContainer *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyContainer *This);

    /*** IPropertyContainer methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProp)(
        IPropertyContainer *This,
        DWORD dwPropTag,
        BYTE *pb,
        ULONG *pcb);

    HRESULT (STDMETHODCALLTYPE *GetPropDw)(
        IPropertyContainer *This,
        DWORD dwPropTag,
        DWORD *pdw);

    HRESULT (STDMETHODCALLTYPE *GetPropSz)(
        IPropertyContainer *This,
        DWORD dwPropTag,
        LPSTR psz,
        ULONG cchMax);

    HRESULT (STDMETHODCALLTYPE *SetProp)(
        IPropertyContainer *This,
        DWORD dwPropTag,
        BYTE *pb,
        ULONG cb);

    HRESULT (STDMETHODCALLTYPE *SetPropDw)(
        IPropertyContainer *This,
        DWORD dwPropTag,
        DWORD dw);

    HRESULT (STDMETHODCALLTYPE *SetPropSz)(
        IPropertyContainer *This,
        DWORD dwPropTag,
        LPSTR psz);

    END_INTERFACE
} IPropertyContainerVtbl;

interface IPropertyContainer {
    CONST_VTBL IPropertyContainerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyContainer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyContainer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyContainer_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyContainer methods ***/
#define IPropertyContainer_GetProp(This,dwPropTag,pb,pcb) (This)->lpVtbl->GetProp(This,dwPropTag,pb,pcb)
#define IPropertyContainer_GetPropDw(This,dwPropTag,pdw) (This)->lpVtbl->GetPropDw(This,dwPropTag,pdw)
#define IPropertyContainer_GetPropSz(This,dwPropTag,psz,cchMax) (This)->lpVtbl->GetPropSz(This,dwPropTag,psz,cchMax)
#define IPropertyContainer_SetProp(This,dwPropTag,pb,cb) (This)->lpVtbl->SetProp(This,dwPropTag,pb,cb)
#define IPropertyContainer_SetPropDw(This,dwPropTag,dw) (This)->lpVtbl->SetPropDw(This,dwPropTag,dw)
#define IPropertyContainer_SetPropSz(This,dwPropTag,psz) (This)->lpVtbl->SetPropSz(This,dwPropTag,psz)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyContainer_QueryInterface(IPropertyContainer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyContainer_AddRef(IPropertyContainer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyContainer_Release(IPropertyContainer* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyContainer methods ***/
static FORCEINLINE HRESULT IPropertyContainer_GetProp(IPropertyContainer* This,DWORD dwPropTag,BYTE *pb,ULONG *pcb) {
    return This->lpVtbl->GetProp(This,dwPropTag,pb,pcb);
}
static FORCEINLINE HRESULT IPropertyContainer_GetPropDw(IPropertyContainer* This,DWORD dwPropTag,DWORD *pdw) {
    return This->lpVtbl->GetPropDw(This,dwPropTag,pdw);
}
static FORCEINLINE HRESULT IPropertyContainer_GetPropSz(IPropertyContainer* This,DWORD dwPropTag,LPSTR psz,ULONG cchMax) {
    return This->lpVtbl->GetPropSz(This,dwPropTag,psz,cchMax);
}
static FORCEINLINE HRESULT IPropertyContainer_SetProp(IPropertyContainer* This,DWORD dwPropTag,BYTE *pb,ULONG cb) {
    return This->lpVtbl->SetProp(This,dwPropTag,pb,cb);
}
static FORCEINLINE HRESULT IPropertyContainer_SetPropDw(IPropertyContainer* This,DWORD dwPropTag,DWORD dw) {
    return This->lpVtbl->SetPropDw(This,dwPropTag,dw);
}
static FORCEINLINE HRESULT IPropertyContainer_SetPropSz(IPropertyContainer* This,DWORD dwPropTag,LPSTR psz) {
    return This->lpVtbl->SetPropSz(This,dwPropTag,psz);
}
#endif
#endif

#endif


#endif  /* __IPropertyContainer_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IImnAccount interface
 */
#ifndef __IImnAccount_INTERFACE_DEFINED__
#define __IImnAccount_INTERFACE_DEFINED__

DEFINE_GUID(IID_IImnAccount, 0xfd465482, 0x1384, 0x11d0, 0xab,0xbd, 0x00,0x20,0xaf,0xdf,0xd1,0x0a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd465482-1384-11d0-abbd-0020afdfd10a")
IImnAccount : public IPropertyContainer
{
    virtual HRESULT STDMETHODCALLTYPE Exist(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAsDefault(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Delete(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveChanges(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAccountType(
        ACCTTYPE *pAcctType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetServerTypes(
        DWORD *pdwSrvTypes) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShowProperties(
        HWND hwnd,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE ValidateProperty(
        DWORD dwPropTag,
        BYTE *pb,
        ULONG cb) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoWizard(
        HWND hwnd,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoImportWizard(
        HWND hwnd,
        CLSID clsid,
        DWORD dwFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IImnAccount, 0xfd465482, 0x1384, 0x11d0, 0xab,0xbd, 0x00,0x20,0xaf,0xdf,0xd1,0x0a)
#endif
#else
typedef struct IImnAccountVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IImnAccount *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IImnAccount *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IImnAccount *This);

    /*** IPropertyContainer methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProp)(
        IImnAccount *This,
        DWORD dwPropTag,
        BYTE *pb,
        ULONG *pcb);

    HRESULT (STDMETHODCALLTYPE *GetPropDw)(
        IImnAccount *This,
        DWORD dwPropTag,
        DWORD *pdw);

    HRESULT (STDMETHODCALLTYPE *GetPropSz)(
        IImnAccount *This,
        DWORD dwPropTag,
        LPSTR psz,
        ULONG cchMax);

    HRESULT (STDMETHODCALLTYPE *SetProp)(
        IImnAccount *This,
        DWORD dwPropTag,
        BYTE *pb,
        ULONG cb);

    HRESULT (STDMETHODCALLTYPE *SetPropDw)(
        IImnAccount *This,
        DWORD dwPropTag,
        DWORD dw);

    HRESULT (STDMETHODCALLTYPE *SetPropSz)(
        IImnAccount *This,
        DWORD dwPropTag,
        LPSTR psz);

    /*** IImnAccount methods ***/
    HRESULT (STDMETHODCALLTYPE *Exist)(
        IImnAccount *This);

    HRESULT (STDMETHODCALLTYPE *SetAsDefault)(
        IImnAccount *This);

    HRESULT (STDMETHODCALLTYPE *Delete)(
        IImnAccount *This);

    HRESULT (STDMETHODCALLTYPE *SaveChanges)(
        IImnAccount *This);

    HRESULT (STDMETHODCALLTYPE *GetAccountType)(
        IImnAccount *This,
        ACCTTYPE *pAcctType);

    HRESULT (STDMETHODCALLTYPE *GetServerTypes)(
        IImnAccount *This,
        DWORD *pdwSrvTypes);

    HRESULT (STDMETHODCALLTYPE *ShowProperties)(
        IImnAccount *This,
        HWND hwnd,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *ValidateProperty)(
        IImnAccount *This,
        DWORD dwPropTag,
        BYTE *pb,
        ULONG cb);

    HRESULT (STDMETHODCALLTYPE *DoWizard)(
        IImnAccount *This,
        HWND hwnd,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *DoImportWizard)(
        IImnAccount *This,
        HWND hwnd,
        CLSID clsid,
        DWORD dwFlags);

    END_INTERFACE
} IImnAccountVtbl;

interface IImnAccount {
    CONST_VTBL IImnAccountVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IImnAccount_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IImnAccount_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IImnAccount_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyContainer methods ***/
#define IImnAccount_GetProp(This,dwPropTag,pb,pcb) (This)->lpVtbl->GetProp(This,dwPropTag,pb,pcb)
#define IImnAccount_GetPropDw(This,dwPropTag,pdw) (This)->lpVtbl->GetPropDw(This,dwPropTag,pdw)
#define IImnAccount_GetPropSz(This,dwPropTag,psz,cchMax) (This)->lpVtbl->GetPropSz(This,dwPropTag,psz,cchMax)
#define IImnAccount_SetProp(This,dwPropTag,pb,cb) (This)->lpVtbl->SetProp(This,dwPropTag,pb,cb)
#define IImnAccount_SetPropDw(This,dwPropTag,dw) (This)->lpVtbl->SetPropDw(This,dwPropTag,dw)
#define IImnAccount_SetPropSz(This,dwPropTag,psz) (This)->lpVtbl->SetPropSz(This,dwPropTag,psz)
/*** IImnAccount methods ***/
#define IImnAccount_Exist(This) (This)->lpVtbl->Exist(This)
#define IImnAccount_SetAsDefault(This) (This)->lpVtbl->SetAsDefault(This)
#define IImnAccount_Delete(This) (This)->lpVtbl->Delete(This)
#define IImnAccount_SaveChanges(This) (This)->lpVtbl->SaveChanges(This)
#define IImnAccount_GetAccountType(This,pAcctType) (This)->lpVtbl->GetAccountType(This,pAcctType)
#define IImnAccount_GetServerTypes(This,pdwSrvTypes) (This)->lpVtbl->GetServerTypes(This,pdwSrvTypes)
#define IImnAccount_ShowProperties(This,hwnd,dwFlags) (This)->lpVtbl->ShowProperties(This,hwnd,dwFlags)
#define IImnAccount_ValidateProperty(This,dwPropTag,pb,cb) (This)->lpVtbl->ValidateProperty(This,dwPropTag,pb,cb)
#define IImnAccount_DoWizard(This,hwnd,dwFlags) (This)->lpVtbl->DoWizard(This,hwnd,dwFlags)
#define IImnAccount_DoImportWizard(This,hwnd,clsid,dwFlags) (This)->lpVtbl->DoImportWizard(This,hwnd,clsid,dwFlags)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IImnAccount_QueryInterface(IImnAccount* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IImnAccount_AddRef(IImnAccount* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IImnAccount_Release(IImnAccount* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyContainer methods ***/
static FORCEINLINE HRESULT IImnAccount_GetProp(IImnAccount* This,DWORD dwPropTag,BYTE *pb,ULONG *pcb) {
    return This->lpVtbl->GetProp(This,dwPropTag,pb,pcb);
}
static FORCEINLINE HRESULT IImnAccount_GetPropDw(IImnAccount* This,DWORD dwPropTag,DWORD *pdw) {
    return This->lpVtbl->GetPropDw(This,dwPropTag,pdw);
}
static FORCEINLINE HRESULT IImnAccount_GetPropSz(IImnAccount* This,DWORD dwPropTag,LPSTR psz,ULONG cchMax) {
    return This->lpVtbl->GetPropSz(This,dwPropTag,psz,cchMax);
}
static FORCEINLINE HRESULT IImnAccount_SetProp(IImnAccount* This,DWORD dwPropTag,BYTE *pb,ULONG cb) {
    return This->lpVtbl->SetProp(This,dwPropTag,pb,cb);
}
static FORCEINLINE HRESULT IImnAccount_SetPropDw(IImnAccount* This,DWORD dwPropTag,DWORD dw) {
    return This->lpVtbl->SetPropDw(This,dwPropTag,dw);
}
static FORCEINLINE HRESULT IImnAccount_SetPropSz(IImnAccount* This,DWORD dwPropTag,LPSTR psz) {
    return This->lpVtbl->SetPropSz(This,dwPropTag,psz);
}
/*** IImnAccount methods ***/
static FORCEINLINE HRESULT IImnAccount_Exist(IImnAccount* This) {
    return This->lpVtbl->Exist(This);
}
static FORCEINLINE HRESULT IImnAccount_SetAsDefault(IImnAccount* This) {
    return This->lpVtbl->SetAsDefault(This);
}
static FORCEINLINE HRESULT IImnAccount_Delete(IImnAccount* This) {
    return This->lpVtbl->Delete(This);
}
static FORCEINLINE HRESULT IImnAccount_SaveChanges(IImnAccount* This) {
    return This->lpVtbl->SaveChanges(This);
}
static FORCEINLINE HRESULT IImnAccount_GetAccountType(IImnAccount* This,ACCTTYPE *pAcctType) {
    return This->lpVtbl->GetAccountType(This,pAcctType);
}
static FORCEINLINE HRESULT IImnAccount_GetServerTypes(IImnAccount* This,DWORD *pdwSrvTypes) {
    return This->lpVtbl->GetServerTypes(This,pdwSrvTypes);
}
static FORCEINLINE HRESULT IImnAccount_ShowProperties(IImnAccount* This,HWND hwnd,DWORD dwFlags) {
    return This->lpVtbl->ShowProperties(This,hwnd,dwFlags);
}
static FORCEINLINE HRESULT IImnAccount_ValidateProperty(IImnAccount* This,DWORD dwPropTag,BYTE *pb,ULONG cb) {
    return This->lpVtbl->ValidateProperty(This,dwPropTag,pb,cb);
}
static FORCEINLINE HRESULT IImnAccount_DoWizard(IImnAccount* This,HWND hwnd,DWORD dwFlags) {
    return This->lpVtbl->DoWizard(This,hwnd,dwFlags);
}
static FORCEINLINE HRESULT IImnAccount_DoImportWizard(IImnAccount* This,HWND hwnd,CLSID clsid,DWORD dwFlags) {
    return This->lpVtbl->DoImportWizard(This,hwnd,clsid,dwFlags);
}
#endif
#endif

#endif


#endif  /* __IImnAccount_INTERFACE_DEFINED__ */

HRESULT WINAPI HrCreateAccountManager(IImnAccountManager **ppAccountManager);
HRESULT WINAPI ValidEmailAddress(LPSTR lpAddress);
/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __imnact_h__ */
