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

#include <rpc.h>
#include <rpcndr.h>

#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__)
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __WIDL_IMNACT_H
#define __WIDL_IMNACT_H

/* Forward declarations */

#ifndef __IImnAdviseAccount_FWD_DEFINED__
#define __IImnAdviseAccount_FWD_DEFINED__
typedef interface IImnAdviseAccount IImnAdviseAccount;
#endif

#ifndef __IImnAdviseMigrateServer_FWD_DEFINED__
#define __IImnAdviseMigrateServer_FWD_DEFINED__
typedef interface IImnAdviseMigrateServer IImnAdviseMigrateServer;
#endif

#ifndef __IImnEnumAccounts_FWD_DEFINED__
#define __IImnEnumAccounts_FWD_DEFINED__
typedef interface IImnEnumAccounts IImnEnumAccounts;
#endif

#ifndef __IImnAccountManager_FWD_DEFINED__
#define __IImnAccountManager_FWD_DEFINED__
typedef interface IImnAccountManager IImnAccountManager;
#endif

#ifndef __IImnAccountManager2_FWD_DEFINED__
#define __IImnAccountManager2_FWD_DEFINED__
typedef interface IImnAccountManager2 IImnAccountManager2;
#endif

#ifndef __IPropertyContainer_FWD_DEFINED__
#define __IPropertyContainer_FWD_DEFINED__
typedef interface IPropertyContainer IPropertyContainer;
#endif

#ifndef __IImnAccount_FWD_DEFINED__
#define __IImnAccount_FWD_DEFINED__
typedef interface IImnAccount IImnAccount;
#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;
#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_00000000 {
    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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IImnAdviseAccount_AdviseAccount_Proxy(
    IImnAdviseAccount* This,
    DWORD dwAdviseType,
    ACTX *pAcctCtx);
void __RPC_STUB IImnAdviseAccount_AdviseAccount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IImnAdviseMigrateServer_MigrateServer_Proxy(
    IImnAdviseMigrateServer* This,
    DWORD dwSrvType,
    IImnAccount *pAccount);
void __RPC_STUB IImnAdviseMigrateServer_MigrateServer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IImnEnumAccounts_GetCount_Proxy(
    IImnEnumAccounts* This,
    ULONG *pcItems);
void __RPC_STUB IImnEnumAccounts_GetCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnEnumAccounts_SortByAccountName_Proxy(
    IImnEnumAccounts* This);
void __RPC_STUB IImnEnumAccounts_SortByAccountName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnEnumAccounts_GetNext_Proxy(
    IImnEnumAccounts* This,
    IImnAccount **ppAccount);
void __RPC_STUB IImnEnumAccounts_GetNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnEnumAccounts_Reset_Proxy(
    IImnEnumAccounts* This);
void __RPC_STUB IImnEnumAccounts_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IImnAccountManager_Init_Proxy(
    IImnAccountManager* This,
    IImnAdviseMigrateServer *pAdviseMigrateServer);
void __RPC_STUB IImnAccountManager_Init_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_CreateAccountObject_Proxy(
    IImnAccountManager* This,
    ACCTTYPE AcctType,
    IImnAccount **ppAccount);
void __RPC_STUB IImnAccountManager_CreateAccountObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_Enumerate_Proxy(
    IImnAccountManager* This,
    DWORD dwSrvTypes,
    IImnEnumAccounts **ppEnumAccounts);
void __RPC_STUB IImnAccountManager_Enumerate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_GetAccountCount_Proxy(
    IImnAccountManager* This,
    ACCTTYPE AcctType,
    ULONG *pcServers);
void __RPC_STUB IImnAccountManager_GetAccountCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_FindAccount_Proxy(
    IImnAccountManager* This,
    DWORD dwPropTag,
    LPCSTR pszSearchData,
    IImnAccount **ppAccount);
void __RPC_STUB IImnAccountManager_FindAccount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_GetDefaultAccountName_Proxy(
    IImnAccountManager* This,
    ACCTTYPE AcctType,
    LPSTR pszAccount,
    ULONG cchMax);
void __RPC_STUB IImnAccountManager_GetDefaultAccountName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_ProcessNotification_Proxy(
    IImnAccountManager* This,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);
void __RPC_STUB IImnAccountManager_ProcessNotification_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_ValidateDefaultSendAccount_Proxy(
    IImnAccountManager* This);
void __RPC_STUB IImnAccountManager_ValidateDefaultSendAccount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_AccountListDialog_Proxy(
    IImnAccountManager* This,
    HWND hwnd,
    ACCTLISTINFO *pinfo);
void __RPC_STUB IImnAccountManager_AccountListDialog_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_Advise_Proxy(
    IImnAccountManager* This,
    IImnAdviseAccount *pAdviseAccount,
    DWORD *pdwConnection);
void __RPC_STUB IImnAccountManager_Advise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_Unadvise_Proxy(
    IImnAccountManager* This,
    DWORD dwConnection);
void __RPC_STUB IImnAccountManager_Unadvise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_GetUniqueAccountName_Proxy(
    IImnAccountManager* This,
    LPSTR szName,
    UINT cch);
void __RPC_STUB IImnAccountManager_GetUniqueAccountName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager_InitEx_Proxy(
    IImnAccountManager* This,
    IImnAdviseMigrateServer *pAdviseMigrateServer,
    DWORD dwFlags);
void __RPC_STUB IImnAccountManager_InitEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IImnAccountManager2_InitUser_Proxy(
    IImnAccountManager2* This,
    IImnAdviseMigrateServer *pAdviseMigrateServer,
    REFGUID rguidID,
    DWORD dwFlags);
void __RPC_STUB IImnAccountManager2_InitUser_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager2_GetIncompleteAccount_Proxy(
    IImnAccountManager2* This,
    ACCTTYPE AcctType,
    LPSTR pszAccountId,
    ULONG cchMax);
void __RPC_STUB IImnAccountManager2_GetIncompleteAccount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccountManager2_SetIncompleteAccount_Proxy(
    IImnAccountManager2* This,
    ACCTTYPE AcctType,
    LPCSTR pszAccountId);
void __RPC_STUB IImnAccountManager2_SetIncompleteAccount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IImnAccountManager2_INTERFACE_DEFINED__ */

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

typedef enum __WIDL_imnact_generated_name_00000001 {
    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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IPropertyContainer_GetProp_Proxy(
    IPropertyContainer* This,
    DWORD dwPropTag,
    BYTE *pb,
    ULONG *pcb);
void __RPC_STUB IPropertyContainer_GetProp_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPropertyContainer_GetPropDw_Proxy(
    IPropertyContainer* This,
    DWORD dwPropTag,
    DWORD *pdw);
void __RPC_STUB IPropertyContainer_GetPropDw_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPropertyContainer_GetPropSz_Proxy(
    IPropertyContainer* This,
    DWORD dwPropTag,
    LPSTR psz,
    ULONG cchMax);
void __RPC_STUB IPropertyContainer_GetPropSz_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPropertyContainer_SetProp_Proxy(
    IPropertyContainer* This,
    DWORD dwPropTag,
    BYTE *pb,
    ULONG cb);
void __RPC_STUB IPropertyContainer_SetProp_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPropertyContainer_SetPropDw_Proxy(
    IPropertyContainer* This,
    DWORD dwPropTag,
    DWORD dw);
void __RPC_STUB IPropertyContainer_SetPropDw_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPropertyContainer_SetPropSz_Proxy(
    IPropertyContainer* This,
    DWORD dwPropTag,
    LPSTR psz);
void __RPC_STUB IPropertyContainer_SetPropSz_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IImnAccount_Exist_Proxy(
    IImnAccount* This);
void __RPC_STUB IImnAccount_Exist_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_SetAsDefault_Proxy(
    IImnAccount* This);
void __RPC_STUB IImnAccount_SetAsDefault_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_Delete_Proxy(
    IImnAccount* This);
void __RPC_STUB IImnAccount_Delete_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_SaveChanges_Proxy(
    IImnAccount* This);
void __RPC_STUB IImnAccount_SaveChanges_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_GetAccountType_Proxy(
    IImnAccount* This,
    ACCTTYPE *pAcctType);
void __RPC_STUB IImnAccount_GetAccountType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_GetServerTypes_Proxy(
    IImnAccount* This,
    DWORD *pdwSrvTypes);
void __RPC_STUB IImnAccount_GetServerTypes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_ShowProperties_Proxy(
    IImnAccount* This,
    HWND hwnd,
    DWORD dwFlags);
void __RPC_STUB IImnAccount_ShowProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_ValidateProperty_Proxy(
    IImnAccount* This,
    DWORD dwPropTag,
    BYTE *pb,
    ULONG cb);
void __RPC_STUB IImnAccount_ValidateProperty_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_DoWizard_Proxy(
    IImnAccount* This,
    HWND hwnd,
    DWORD dwFlags);
void __RPC_STUB IImnAccount_DoWizard_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IImnAccount_DoImportWizard_Proxy(
    IImnAccount* This,
    HWND hwnd,
    CLSID clsid,
    DWORD dwFlags);
void __RPC_STUB IImnAccount_DoImportWizard_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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 /* __WIDL_IMNACT_H */
