// --------------------------------------------------------------------------------
// Imnact.idl
// Copyright (c)1993-1998 Microsoft Corporation, All Rights Reserved
// Steven J. Bailey
// --------------------------------------------------------------------------------
import "objidl.idl";

interface IImnAccount;

cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// Imnact.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 1995-1998 Microsoft Corporation.  All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("")
cpp_quote("//---------------------------------------------------------------------------=")
cpp_quote("// Internet Mail and News Account Manager Interfaces.")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// GUIDS")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#if !defined( WIN16 ) || defined( __cplusplus )")
cpp_quote("// {8D4B04E1-1331-11d0-81B8-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(CLSID_ImnAccountManager, 0x8d4b04e1, 0x1331, 0x11d0, 0x81, 0xb8, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {FD465484-1384-11d0-ABBD-0020AFDFD10A}")
cpp_quote("DEFINE_GUID(IID_IPropertyContainer, 0xfd465484, 0x1384, 0x11d0, 0xab, 0xbd, 0x0, 0x20, 0xaf, 0xdf, 0xd1, 0xa);")
cpp_quote("")
cpp_quote("// {FD465481-1384-11d0-ABBD-0020AFDFD10A}")
cpp_quote("DEFINE_GUID(IID_IImnAccountManager, 0xfd465481, 0x1384, 0x11d0, 0xab, 0xbd, 0x0, 0x20, 0xaf, 0xdf, 0xd1, 0xa);")
cpp_quote("")
cpp_quote("// {C43DFC6F-62BB-11d2-A727-00C04F79E7C8}")
cpp_quote("DEFINE_GUID(IID_IImnAccountManager2, 0xc43dfc6f, 0x62bb, 0x11d2, 0xa7, 0x27, 0x0, 0xc0, 0x4f, 0x79, 0xe7, 0xc8);")
cpp_quote("")
cpp_quote("// {FD465482-1384-11d0-ABBD-0020AFDFD10A}")
cpp_quote("DEFINE_GUID(IID_IImnAccount, 0xfd465482, 0x1384, 0x11d0, 0xab, 0xbd, 0x0, 0x20, 0xaf, 0xdf, 0xd1, 0xa);")
cpp_quote("")
cpp_quote("// {FD465483-1384-11d0-ABBD-0020AFDFD10A}")
cpp_quote("DEFINE_GUID(IID_IImnEnumAccounts, 0xfd465483, 0x1384, 0x11d0, 0xab, 0xbd, 0x0, 0x20, 0xaf, 0xdf, 0xd1, 0xa);")
cpp_quote("")
cpp_quote("// {8D0AED11-1638-11d0-81B9-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IImnAdviseMigrateServer, 0x8d0aed11, 0x1638, 0x11d0, 0x81, 0xb9, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("// {0A06BD31-166F-11d0-81B9-00C04FD85AB4}")
cpp_quote("DEFINE_GUID(IID_IImnAdviseAccount, 0xa06bd31, 0x166f, 0x11d0, 0x81, 0xb9, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
cpp_quote("")
cpp_quote("#endif //!WIN16 || __cplusplus")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Exported C Functions")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#if !defined(_IMNACCT_)")
cpp_quote("#define IMNACCTAPI DECLSPEC_IMPORT HRESULT WINAPI")
cpp_quote("#define IMNACCTAPI_(_type_) DECLSPEC_IMPORT _type_ WINAPI")
cpp_quote("#else")
cpp_quote("#define IMNACCTAPI HRESULT WINAPI")
cpp_quote("#define IMNACCTAPI_(_type_) _type_ WINAPI")
cpp_quote("#endif")
cpp_quote("#ifdef __cplusplus")
cpp_quote("extern \"C\" {")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("IMNACCTAPI HrCreateAccountManager(IImnAccountManager **ppAccountManager);")
cpp_quote("IMNACCTAPI ValidEmailAddress(LPCSTR lpAddress);")
cpp_quote("")
cpp_quote("#ifdef __cplusplus")
cpp_quote("}")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Errors")
cpp_quote("// --------------------------------------------------------------------------------")
//;begin_internal
//
//  NOTE:  All inetcomm error codes must reside between CC00 and CFFF (a 1k block).
//  This has been approved by Johann Posch (johannp)
//  We further subdevide this range as follows:
//      CC00-CCFF   IMNXPORT results
//      CD00-CDFF   IMNACCT results
//      CE00-CEFF   MIMEOLE results
//      CF00-CFFF   undefined, do not use
//  (t-erikne 03/24/97)
//
//;end_internal
cpp_quote("#ifndef FACILITY_INTERNET")
cpp_quote("#define FACILITY_INTERNET 12")
cpp_quote("#endif")
cpp_quote("#ifndef HR_E")
cpp_quote("#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)")
cpp_quote("#endif")
cpp_quote("#ifndef HR_S")
cpp_quote("#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)")
cpp_quote("#endif")
cpp_quote("#ifndef HR_CODE")
cpp_quote("#define HR_CODE(hr) (INT)(hr & 0xffff)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// General Errors")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define E_RegCreateKeyFailed         HR_E(0xCD00)")
cpp_quote("#define E_RegQueryInfoKeyFailed      HR_E(0xCD01)")
cpp_quote("#define E_UserCancel                 HR_E(0xCD02)")
cpp_quote("#define E_RegOpenKeyFailed           HR_E(0xCD03)")
cpp_quote("#define E_RegSetValueFailed          HR_E(0xCD04)")
cpp_quote("#define E_RegDeleteKeyFailed         HR_E(0xCD05)")
cpp_quote("#define E_DuplicateAccountName       HR_E(0xCD06)")
cpp_quote("#define S_NonStandardValue           HR_S(0xCD07)")
cpp_quote("#define E_InvalidValue               HR_E(0xCD08)")
cpp_quote("#define S_AlreadyInitialized         HR_S(0xCD09)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// IPropertyContainer Errors")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define E_NoPropData                 HR_E(0xCDA0)")
cpp_quote("#define E_BufferTooSmall             HR_E(0xCDA1)")
cpp_quote("#define E_BadPropType                HR_E(0xCDA2)")
cpp_quote("#define E_BufferSizeMismatch         HR_E(0xCDA3)")
cpp_quote("#define E_InvalidBooleanValue        HR_E(0xCDA4)")
cpp_quote("#define E_InvalidMinMaxValue         HR_E(0xCDA5)")
cpp_quote("#define E_PropNotFound               HR_E(0xCDA6)")
cpp_quote("#define E_InvalidPropTag             HR_E(0xCDA7)")
cpp_quote("#define E_InvalidPropertySet         HR_E(0xCDA8)")
cpp_quote("#define E_EnumFinished               HR_E(0xCDA9)") //N should be S_FALSE?
cpp_quote("#define S_NoSaveNeeded               HR_S(0xCDAA)")
cpp_quote("#define S_PasswordDeleted            HR_S(0xCDAB)")
cpp_quote("#define S_PasswordNotFound           HR_S(0xCDAC)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// ImnAccountManager errors")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define E_NoAccounts                 HR_E(0xCDD0)")
cpp_quote("#define E_BadFriendlyName            HR_E(0xCDD1)")
cpp_quote("#define E_NoIdentities               HR_E(0xCDD2)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// RAS Connection Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define CF_AUTO_CONNECT          FLAG02 // Automatically connect")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Property Macros")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define PROPTAG_MASK                 ((ULONG)0x0000FFFF)")
cpp_quote("#define PROPTAG_TYPE(ulPropTag)      (PROPTYPE)(((ULONG)(ulPropTag)) & PROPTAG_MASK)")
cpp_quote("#define PROPTAG_ID(ulPropTag)        (((ULONG)(ulPropTag))>>16)")
cpp_quote("#define PROPTAG(ulPropType,ulPropID) ((((ULONG)(ulPropID))<<16)|((ULONG)(ulPropType)))")
cpp_quote("#define MAX_PROPID                   ((ULONG) 0xFFFF)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// IImnAccount Properties")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define AP_FIRST                    0X1234")
cpp_quote("// per account properties")
cpp_quote("#define AP_ACCOUNT_NAME             PROPTAG(TYPE_STRING,    AP_FIRST+1)")
cpp_quote("#define AP_ACCOUNT_FIRST            AP_ACCOUNT_NAME")
cpp_quote("#define AP_TEMP_ACCOUNT             PROPTAG(TYPE_DWORD,     AP_FIRST+3)")
cpp_quote("#define AP_LAST_UPDATED             PROPTAG(TYPE_FILETIME,  AP_FIRST+4)")
cpp_quote("#define AP_RAS_CONNECTION_TYPE      PROPTAG(TYPE_DWORD,     AP_FIRST+5)")
cpp_quote("#define AP_RAS_CONNECTOID           PROPTAG(TYPE_STRING,    AP_FIRST+6)")
cpp_quote("#define AP_RAS_CONNECTION_FLAGS     PROPTAG(TYPE_DWORD,     AP_FIRST+7)")
cpp_quote("#define AP_ACCOUNT_ID               PROPTAG(TYPE_STRING,    AP_FIRST+9)")
cpp_quote("#define AP_RAS_BACKUP_CONNECTOID    PROPTAG(TYPE_STRING,    AP_FIRST+10)")
cpp_quote("#define AP_SERVICE                  PROPTAG(TYPE_STRING,    AP_FIRST+11)")
cpp_quote("#define AP_AVAIL_OFFLINE            PROPTAG(TYPE_DWORD,     AP_FIRST+12)")
cpp_quote("#define AP_UNIQUE_ID                PROPTAG(TYPE_BINARY,    AP_FIRST+13)")
cpp_quote("#define AP_SERVER_READ_ONLY         PROPTAG(TYPE_BOOL,      AP_FIRST+14)")
cpp_quote("#define AP_ACCOUNT_LAST             AP_SERVER_READ_ONLY")
cpp_quote("")
cpp_quote("// IMAP properties")
cpp_quote("#define AP_IMAP_SERVER              PROPTAG(TYPE_STRING,    AP_FIRST+100)")
cpp_quote("#define AP_IMAP_FIRST               AP_IMAP_SERVER")
cpp_quote("#define AP_IMAP_USERNAME            PROPTAG(TYPE_STRING,    AP_FIRST+101)")
cpp_quote("#define AP_IMAP_PASSWORD            PROPTAG(TYPE_PASS,      AP_FIRST+102)")
cpp_quote("#define AP_IMAP_USE_SICILY          PROPTAG(TYPE_BOOL,      AP_FIRST+104)")
cpp_quote("#define AP_IMAP_PORT                PROPTAG(TYPE_DWORD,     AP_FIRST+105)")
cpp_quote("#define AP_IMAP_SSL                 PROPTAG(TYPE_BOOL,      AP_FIRST+106)")
cpp_quote("#define AP_IMAP_TIMEOUT             PROPTAG(TYPE_DWORD,     AP_FIRST+107)")
cpp_quote("#define AP_IMAP_ROOT_FOLDER         PROPTAG(TYPE_STRING,    AP_FIRST+108)")
cpp_quote("#define AP_IMAP_DATA_DIR            PROPTAG(TYPE_STRING,    AP_FIRST+109)")
cpp_quote("#define AP_IMAP_USE_LSUB            PROPTAG(TYPE_BOOL,      AP_FIRST+111)")
cpp_quote("#define AP_IMAP_POLL                PROPTAG(TYPE_BOOL,      AP_FIRST+112)")
cpp_quote("#define AP_IMAP_FULL_LIST           PROPTAG(TYPE_BOOL,      AP_FIRST+113)")
cpp_quote("#define AP_IMAP_NOOP_INTERVAL       PROPTAG(TYPE_DWORD,     AP_FIRST+114)")
cpp_quote("#define AP_IMAP_SVRSPECIALFLDRS     PROPTAG(TYPE_BOOL,      AP_FIRST+116)")
cpp_quote("#define AP_IMAP_SENTITEMSFLDR       PROPTAG(TYPE_STRING,    AP_FIRST+117)")
cpp_quote("#define AP_IMAP_DRAFTSFLDR          PROPTAG(TYPE_STRING,    AP_FIRST+119)")
cpp_quote("#define AP_IMAP_PROMPT_PASSWORD     PROPTAG(TYPE_BOOL,      AP_FIRST+124)")
cpp_quote("#define AP_IMAP_DIRTY               PROPTAG(TYPE_DWORD,     AP_FIRST+125)")
cpp_quote("#define AP_IMAP_POLL_ALL_FOLDERS    PROPTAG(TYPE_BOOL,      AP_FIRST+126)")
// The following two propertie are only available on Longhorn and beyond.
cpp_quote("#define AP_IMAP_DELETEDITEMSFLDR    PROPTAG(TYPE_STRING,    AP_FIRST+127)")
cpp_quote("#define AP_IMAP_JUNKFLDR            PROPTAG(TYPE_STRING,    AP_FIRST+128)")
cpp_quote("#define AP_IMAP_LAST                AP_IMAP_JUNKFLDR")
cpp_quote("")
cpp_quote("// LDAP properties")
cpp_quote("#define AP_LDAP_SERVER              PROPTAG(TYPE_STRING,    AP_FIRST+200)")
cpp_quote("#define AP_LDAP_FIRST               AP_LDAP_SERVER")
cpp_quote("#define AP_LDAP_USERNAME            PROPTAG(TYPE_STRING,    AP_FIRST+201)")
cpp_quote("#define AP_LDAP_PASSWORD            PROPTAG(TYPE_PASS,      AP_FIRST+202)")
cpp_quote("#define AP_LDAP_AUTHENTICATION      PROPTAG(TYPE_DWORD,     AP_FIRST+203)")
cpp_quote("#define AP_LDAP_TIMEOUT             PROPTAG(TYPE_DWORD,     AP_FIRST+204)")
cpp_quote("#define AP_LDAP_SEARCH_RETURN       PROPTAG(TYPE_DWORD,     AP_FIRST+205)")
cpp_quote("#define AP_LDAP_SEARCH_BASE         PROPTAG(TYPE_STRING,    AP_FIRST+206)")
cpp_quote("#define AP_LDAP_SERVER_ID           PROPTAG(TYPE_DWORD,     AP_FIRST+207)")
cpp_quote("#define AP_LDAP_RESOLVE_FLAG        PROPTAG(TYPE_DWORD,     AP_FIRST+208)")
cpp_quote("#define AP_LDAP_URL                 PROPTAG(TYPE_STRING,    AP_FIRST+209)")
cpp_quote("#define AP_LDAP_PORT                PROPTAG(TYPE_DWORD,     AP_FIRST+210)")
cpp_quote("#define AP_LDAP_SSL                 PROPTAG(TYPE_BOOL,      AP_FIRST+211)")
cpp_quote("#define AP_LDAP_LOGO                PROPTAG(TYPE_STRING,    AP_FIRST+212)")
cpp_quote("#define AP_LDAP_USE_BIND_DN         PROPTAG(TYPE_DWORD,     AP_FIRST+213)")
cpp_quote("#define AP_LDAP_SIMPLE_SEARCH       PROPTAG(TYPE_DWORD,     AP_FIRST+214)")
cpp_quote("#define AP_LDAP_ADVANCED_SEARCH_ATTR PROPTAG(TYPE_STRING,   AP_FIRST+215)")
cpp_quote("#define AP_LDAP_PAGED_RESULTS       PROPTAG(TYPE_DWORD,     AP_FIRST+216)")
cpp_quote("#define AP_LDAP_NTDS                PROPTAG(TYPE_DWORD,     AP_FIRST+217)")
cpp_quote("#define AP_LDAP_LAST                AP_LDAP_NTDS")
cpp_quote("")
cpp_quote("// HTTPMail properties")
cpp_quote("#define AP_HTTPMAIL_SERVER           PROPTAG(TYPE_STRING,    AP_FIRST+250)")
cpp_quote("#define AP_HTTPMAIL_FIRST            AP_HTTPMAIL_SERVER")
cpp_quote("#define AP_HTTPMAIL_USERNAME         PROPTAG(TYPE_STRING,    AP_FIRST+251)")
cpp_quote("#define AP_HTTPMAIL_PASSWORD         PROPTAG(TYPE_PASS,      AP_FIRST+252)")
cpp_quote("#define AP_HTTPMAIL_PROMPT_PASSWORD  PROPTAG(TYPE_BOOL,      AP_FIRST+253)")
cpp_quote("#define AP_HTTPMAIL_USE_SICILY       PROPTAG(TYPE_DWORD,     AP_FIRST+254)")
cpp_quote("#define AP_HTTPMAIL_FRIENDLY_NAME    PROPTAG(TYPE_STRING,    AP_FIRST+255)")
cpp_quote("#define AP_HTTPMAIL_DOMAIN_MSN       PROPTAG(TYPE_BOOL,      AP_FIRST+256)")
cpp_quote("#define AP_HTTPMAIL_POLL             PROPTAG(TYPE_BOOL,      AP_FIRST+257)")
cpp_quote("#define AP_HTTPMAIL_ADURL              PROPTAG(TYPE_STRING,          AP_FIRST+258)")
cpp_quote("#define AP_HTTPMAIL_SHOW_ADBAR         PROPTAG(TYPE_BOOL,            AP_FIRST+259)")
cpp_quote("#define AP_HTTPMAIL_MINPOLLINGINTERVAL PROPTAG(TYPE_ULARGEINTEGER,   AP_FIRST+260)")
cpp_quote("#define AP_HTTPMAIL_GOTPOLLINGINTERVAL PROPTAG(TYPE_BOOL,            AP_FIRST+261)")
cpp_quote("#define AP_HTTPMAIL_LASTPOLLEDTIME     PROPTAG(TYPE_ULARGEINTEGER,   AP_FIRST+262)")
cpp_quote("#define AP_HTTPMAIL_ROOTTIMESTAMP      PROPTAG(TYPE_STRING,          AP_FIRST+263)")
cpp_quote("#define AP_HTTPMAIL_ROOTINBOXTIMESTAMP PROPTAG(TYPE_STRING,          AP_FIRST+264)")
cpp_quote("#define AP_HTTPMAIL_INBOXTIMESTAMP     PROPTAG(TYPE_STRING,          AP_FIRST+265)")
cpp_quote("#define AP_HTTPMAIL_MAXPOLLINGINTERVAL PROPTAG(TYPE_ULARGEINTEGER,   AP_FIRST+266)")
cpp_quote("#define AP_HTTPMAIL_ADBAR              PROPTAG(TYPE_STRING,          AP_FIRST+267)")
cpp_quote("#define AP_HTTPMAIL_CONTACTS           PROPTAG(TYPE_STRING,          AP_FIRST+268)")
cpp_quote("#define AP_HTTPMAIL_INBOX              PROPTAG(TYPE_STRING,          AP_FIRST+269)")
cpp_quote("#define AP_HTTPMAIL_OUTBOX             PROPTAG(TYPE_STRING,          AP_FIRST+270)")
cpp_quote("#define AP_HTTPMAIL_SENDMSG            PROPTAG(TYPE_STRING,          AP_FIRST+271)")
cpp_quote("#define AP_HTTPMAIL_SENTITEMS          PROPTAG(TYPE_STRING,          AP_FIRST+272)")
cpp_quote("#define AP_HTTPMAIL_DELETEDITEMS       PROPTAG(TYPE_STRING,          AP_FIRST+273)")
cpp_quote("#define AP_HTTPMAIL_DRAFTS             PROPTAG(TYPE_STRING,          AP_FIRST+274)")
cpp_quote("#define AP_HTTPMAIL_MSGFOLDERROOT      PROPTAG(TYPE_STRING,          AP_FIRST+275)")
cpp_quote("#define AP_HTTPMAIL_SIG                PROPTAG(TYPE_STRING,          AP_FIRST+276)")
cpp_quote("#define AP_HTTPMAIL_HASROOTPROPS       PROPTAG(TYPE_BOOL,            AP_FIRST+277)")
cpp_quote("#define AP_HTTPMAIL_LAST               AP_HTTPMAIL_HASROOTPROPS")
cpp_quote("")
cpp_quote("// NNTP properties")
cpp_quote("#define AP_NNTP_SERVER              PROPTAG(TYPE_STRING,    AP_FIRST+300)")
cpp_quote("#define AP_NNTP_FIRST               AP_NNTP_SERVER")
cpp_quote("#define AP_NNTP_USERNAME            PROPTAG(TYPE_STRING,    AP_FIRST+301)")
cpp_quote("#define AP_NNTP_PASSWORD            PROPTAG(TYPE_PASS,      AP_FIRST+302)")
cpp_quote("#define AP_NNTP_USE_SICILY          PROPTAG(TYPE_BOOL,      AP_FIRST+304)")
cpp_quote("#define AP_NNTP_PORT                PROPTAG(TYPE_DWORD,     AP_FIRST+305)")
cpp_quote("#define AP_NNTP_SSL                 PROPTAG(TYPE_BOOL,      AP_FIRST+306)")
cpp_quote("#define AP_NNTP_TIMEOUT             PROPTAG(TYPE_DWORD,     AP_FIRST+307)")
cpp_quote("#define AP_NNTP_DISPLAY_NAME        PROPTAG(TYPE_STRING,    AP_FIRST+308)")
cpp_quote("#define AP_NNTP_ORG_NAME            PROPTAG(TYPE_STRING,    AP_FIRST+309)")
cpp_quote("#define AP_NNTP_EMAIL_ADDRESS       PROPTAG(TYPE_STRING,    AP_FIRST+310)")
cpp_quote("#define AP_NNTP_REPLY_EMAIL_ADDRESS PROPTAG(TYPE_STRING,    AP_FIRST+311)")
cpp_quote("#define AP_NNTP_SPLIT_MESSAGES      PROPTAG(TYPE_BOOL,      AP_FIRST+312)")
cpp_quote("#define AP_NNTP_SPLIT_SIZE          PROPTAG(TYPE_DWORD,     AP_FIRST+313)")
cpp_quote("#define AP_NNTP_USE_DESCRIPTIONS    PROPTAG(TYPE_BOOL,      AP_FIRST+314)")
cpp_quote("#define AP_NNTP_DATA_DIR            PROPTAG(TYPE_STRING,    AP_FIRST+315)")
cpp_quote("#define AP_NNTP_POLL                PROPTAG(TYPE_BOOL,      AP_FIRST+316)")
cpp_quote("#define AP_NNTP_POST_FORMAT         PROPTAG(TYPE_DWORD,     AP_FIRST+317)")
cpp_quote("#define AP_NNTP_SIGNATURE           PROPTAG(TYPE_STRING,    AP_FIRST+318)")
cpp_quote("#define AP_NNTP_PROMPT_PASSWORD     PROPTAG(TYPE_BOOL,      AP_FIRST+319)")
cpp_quote("#define AP_NNTP_COMMUNITIES         PROPTAG(TYPE_DWORD,     AP_FIRST+320)")
cpp_quote("#define AP_NNTP_PASSPORT_MEMBERNAME PROPTAG(TYPE_STRING,    AP_FIRST+321)")
cpp_quote("#define AP_NNTP_COMMUNITYSERVERDATA PROPTAG(TYPE_BINARY,    AP_FIRST+322)")
cpp_quote("#define AP_NNTP_PASSPORTSESSIONDATA PROPTAG(TYPE_BINARY,    AP_FIRST+323)")
cpp_quote("#define AP_NNTP_USER_INFORMATION    PROPTAG(TYPE_DWORD,     AP_FIRST+324)")
cpp_quote("#define AP_NNTP_LAST                AP_NNTP_USER_INFORMATION")
cpp_quote("")
cpp_quote("// POP3 properties")
cpp_quote("#define AP_POP3_SERVER              PROPTAG(TYPE_STRING,    AP_FIRST+400)")
cpp_quote("#define AP_POP3_FIRST               AP_POP3_SERVER")
cpp_quote("#define AP_POP3_USERNAME            PROPTAG(TYPE_STRING,    AP_FIRST+401)")
cpp_quote("#define AP_POP3_PASSWORD            PROPTAG(TYPE_PASS,      AP_FIRST+402)")
cpp_quote("#define AP_POP3_USE_SICILY          PROPTAG(TYPE_BOOL,      AP_FIRST+404)")
cpp_quote("#define AP_POP3_PORT                PROPTAG(TYPE_DWORD,     AP_FIRST+405)")
cpp_quote("#define AP_POP3_SSL                 PROPTAG(TYPE_BOOL,      AP_FIRST+406)")
cpp_quote("#define AP_POP3_TIMEOUT             PROPTAG(TYPE_DWORD,     AP_FIRST+407)")
cpp_quote("#define AP_POP3_LEAVE_ON_SERVER     PROPTAG(TYPE_BOOL,      AP_FIRST+408)")
cpp_quote("#define AP_POP3_REMOVE_DELETED      PROPTAG(TYPE_BOOL,      AP_FIRST+409)")
cpp_quote("#define AP_POP3_REMOVE_EXPIRED      PROPTAG(TYPE_BOOL,      AP_FIRST+410)")
cpp_quote("#define AP_POP3_EXPIRE_DAYS         PROPTAG(TYPE_DWORD,     AP_FIRST+411)")
cpp_quote("#define AP_POP3_SKIP                PROPTAG(TYPE_BOOL,      AP_FIRST+412)")
cpp_quote("#define AP_POP3_OUTLOOK_CACHE_NAME  PROPTAG(TYPE_STRING,    AP_FIRST+413)")
cpp_quote("#define AP_POP3_PROMPT_PASSWORD     PROPTAG(TYPE_BOOL,      AP_FIRST+414)")
cpp_quote("#define AP_POP3_LAST                AP_POP3_PROMPT_PASSWORD")
cpp_quote("")
cpp_quote("// SMTP properties")
cpp_quote("#define AP_SMTP_SERVER              PROPTAG(TYPE_STRING,    AP_FIRST+500)")
cpp_quote("#define AP_SMTP_FIRST               AP_SMTP_SERVER")
cpp_quote("#define AP_SMTP_USERNAME            PROPTAG(TYPE_STRING,    AP_FIRST+501)")
cpp_quote("#define AP_SMTP_PASSWORD            PROPTAG(TYPE_PASS,      AP_FIRST+502)")
cpp_quote("#define AP_SMTP_USE_SICILY          PROPTAG(TYPE_DWORD,     AP_FIRST+504) // SMTPAUTHTYEP")
cpp_quote("#define AP_SMTP_PORT                PROPTAG(TYPE_DWORD,     AP_FIRST+505)")
cpp_quote("#define AP_SMTP_SSL                 PROPTAG(TYPE_BOOL,      AP_FIRST+506)")
cpp_quote("#define AP_SMTP_TIMEOUT             PROPTAG(TYPE_DWORD,     AP_FIRST+507)")
cpp_quote("#define AP_SMTP_DISPLAY_NAME        PROPTAG(TYPE_STRING,    AP_FIRST+508)")
cpp_quote("#define AP_SMTP_ORG_NAME            PROPTAG(TYPE_STRING,    AP_FIRST+509)")
cpp_quote("#define AP_SMTP_EMAIL_ADDRESS       PROPTAG(TYPE_STRING,    AP_FIRST+510)")
cpp_quote("#define AP_SMTP_REPLY_EMAIL_ADDRESS PROPTAG(TYPE_STRING,    AP_FIRST+511)")
cpp_quote("#define AP_SMTP_SPLIT_MESSAGES      PROPTAG(TYPE_BOOL,      AP_FIRST+512)")
cpp_quote("#define AP_SMTP_SPLIT_SIZE          PROPTAG(TYPE_DWORD,     AP_FIRST+513)")
cpp_quote("#define AP_SMTP_CERTIFICATE         PROPTAG(TYPE_BINARY,    AP_FIRST+514)")
cpp_quote("#define AP_SMTP_SIGNATURE           PROPTAG(TYPE_STRING,    AP_FIRST+515)")
cpp_quote("#define AP_SMTP_PROMPT_PASSWORD     PROPTAG(TYPE_BOOL,      AP_FIRST+516)")
cpp_quote("#define AP_SMTP_ENCRYPT_CERT           PROPTAG(TYPE_BINARY,      AP_FIRST+517)")
cpp_quote("#define AP_SMTP_ENCRYPT_ALGTH       PROPTAG(TYPE_BINARY,      AP_FIRST+518)")
cpp_quote("#define AP_SMTP_LAST                AP_SMTP_ENCRYPT_ALGTH")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Account Flags")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define ACCT_FLAG_NEWS           ((DWORD)1)")
cpp_quote("#define ACCT_FLAG_MAIL           ((DWORD)2)")
cpp_quote("#define ACCT_FLAG_DIR_SERV       ((DWORD)4)")
cpp_quote("#define ACCT_FLAG_ALL            (ACCT_FLAG_NEWS | ACCT_FLAG_MAIL | ACCT_FLAG_DIR_SERV)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// Server Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define SRV_NNTP                 ((DWORD)1)")
cpp_quote("#define SRV_IMAP                 ((DWORD)2)")
cpp_quote("#define SRV_POP3                 ((DWORD)4)")
cpp_quote("#define SRV_SMTP                 ((DWORD)8)")
cpp_quote("#define SRV_LDAP                 ((DWORD)16)")
cpp_quote("#define SRV_HTTPMAIL             ((DWORD)32)")
cpp_quote("#define SRV_MAIL                 ((DWORD)(SRV_IMAP | SRV_POP3 | SRV_SMTP | SRV_HTTPMAIL))")
cpp_quote("#define SRV_ALL                  ((DWORD)(SRV_NNTP | SRV_IMAP | SRV_POP3 | SRV_SMTP | SRV_LDAP | SRV_HTTPMAIL))")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// LDAP Authentication Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define LDAP_AUTH_ANONYMOUS      ((DWORD)0)")
cpp_quote("#define LDAP_AUTH_PASSWORD       ((DWORD)1)")
cpp_quote("#define LDAP_AUTH_MEMBER_SYSTEM  ((DWORD)2)")
cpp_quote("#define LDAP_AUTH_MAX            ((DWORD)2)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// LDAP Paged Result Support Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define LDAP_PRESULT_UNKNOWN         ((DWORD)0)")
cpp_quote("#define LDAP_PRESULT_SUPPORTED       ((DWORD)1)")
cpp_quote("#define LDAP_PRESULT_NOTSUPPORTED    ((DWORD)2)")
cpp_quote("#define LDAP_PRESULT_MAX             ((DWORD)2)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// LDAP NTDS Types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define LDAP_NTDS_UNKNOWN      ((DWORD)0)")
cpp_quote("#define LDAP_NTDS_IS           ((DWORD)1)")
cpp_quote("#define LDAP_NTDS_ISNOT        ((DWORD)2)")
cpp_quote("#define LDAP_NTDS_MAX          ((DWORD)2)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// AP_NNTP_POST_FORMAT types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define POST_USE_DEFAULT         ((DWORD)0)")
cpp_quote("#define POST_USE_PLAIN_TEXT      ((DWORD)1)")
cpp_quote("#define POST_USE_HTML            ((DWORD)2)")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// AP_NNTP_USER_INFORMATION types")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define NNTP_USER_AUTOCONFIG     ((DWORD)0)")    // Suggested display name and email address
cpp_quote("#define NNTP_USER_NOTIFIED       ((DWORD)1)")    // User information has been viewed, but not approved
cpp_quote("#define NNTP_USER_DONTSHOW       ((DWORD)2)")    // Approval of user information was deferred
cpp_quote("#define NNTP_USER_APPROVED       ((DWORD)3)")    // User information is approved, or was entered manually
cpp_quote("")
cpp_quote("// -----------------------------------------------------------------------------")
cpp_quote("// Account Manager Notification Types")
cpp_quote("// -----------------------------------------------------------------------------")
cpp_quote("#define AN_ACCOUNT_DELETED           WM_USER + 1")
cpp_quote("#define AN_ACCOUNT_ADDED             WM_USER + 2")
cpp_quote("#define AN_ACCOUNT_CHANGED           WM_USER + 3")
cpp_quote("#define AN_DEFAULT_CHANGED           WM_USER + 4")
cpp_quote("#define AN_SERVERTYPES_CHANGED       WM_USER + 5")
cpp_quote("#define AN_ACCOUNT_PREDELETE         WM_USER + 6")
cpp_quote("")
cpp_quote("// IImnAccountManager::AccountListDialog flags")
cpp_quote("// IImnAccount::ShowProperties flags")
cpp_quote("#define ACCTDLG_NO_IMAP          0x0001")
cpp_quote("#define ACCTDLG_NO_REMOVEDELETE  0x0002")
cpp_quote("#define ACCTDLG_NO_BREAKMESSAGES 0x0004")
cpp_quote("#define ACCTDLG_NO_REMOVEAFTER   0x0008")
cpp_quote("#define ACCTDLG_NO_SENDRECEIVE   0x0010")
cpp_quote("#define ACCTDLG_NO_NEWSPOLL      0x0020")
cpp_quote("#define ACCTDLG_NO_SECURITY      0x0040")
cpp_quote("#define ACCTDLG_BACKUP_CONNECT   0x0080")
cpp_quote("#define ACCTDLG_NO_IMAPPOLL      0x0100")
cpp_quote("#define ACCTDLG_NO_NEW_POP       0x0200")
cpp_quote("#define ACCTDLG_SHOWIMAPSPECIAL  0x0400")
cpp_quote("#define ACCTDLG_INTERNETCONNECTION   0x0800")
cpp_quote("#define ACCTDLG_HTTPMAIL             0x1000")
cpp_quote("#define ACCTDLG_REVOCATION           0x2000")
cpp_quote("#define ACCTDLG_OE                   0x4000")
cpp_quote("#define ACCTDLG_PASSPORT             0x8000")
cpp_quote("#define ACCTDLG_ALL                  0xffff")
cpp_quote("")
cpp_quote("// AP_RAS_CONNECTION_TYPE            values")
cpp_quote("#define CONNECTION_TYPE_LAN               0")
cpp_quote("#define CONNECTION_TYPE_MANUAL            1")
cpp_quote("#define CONNECTION_TYPE_RAS               2")
cpp_quote("#define CONNECTION_TYPE_INETSETTINGS      3")
cpp_quote("")
cpp_quote("// IImnAccount::DoWizard flags")
cpp_quote("#define ACCT_WIZ_MIGRATE             0x0001")
cpp_quote("#define ACCT_WIZ_MAILIMPORT          0x0002")
cpp_quote("#define ACCT_WIZ_OUTLOOK             0x0004")
cpp_quote("#define ACCT_WIZ_NEWSIMPORT          0x0008")
cpp_quote("#define ACCT_WIZ_NO_NEW_POP          0x0010")
cpp_quote("#define ACCT_WIZ_INTERNETCONNECTION  0x0020")
cpp_quote("#define ACCT_WIZ_HTTPMAIL            0x0040")
cpp_quote("#define ACCT_WIZ_OE                  0x0080")
cpp_quote("#define ACCT_WIZ_COMMUNITIES         0x0100")
cpp_quote("")
cpp_quote("// IImnAccount::InitEx flags")
cpp_quote("#define ACCT_INIT_ATHENA         0x0001")
cpp_quote("#define ACCT_INIT_OUTLOOK        0x0002")
cpp_quote("")
cpp_quote(" // AP_IMAP_DIRTY flags")
cpp_quote("#define IMAP_FLDRLIST_DIRTY      0x0001")
cpp_quote("#define IMAP_OE4MIGRATE_DIRTY    0x0002")
cpp_quote("#define IMAP_SENTITEMS_DIRTY     0x0004")
cpp_quote("#define IMAP_DRAFTS_DIRTY        0x0008")
cpp_quote("#define IMAP_DELETEDITEMS_DIRTY  0x0010")
cpp_quote("#define IMAP_JUNK_DIRTY          0x0020")

// --------------------------------------------------------------------------------
// SMTP Authentication Types
// --------------------------------------------------------------------------------
typedef enum tagSMTPAUTHTYPE {
    SMTP_AUTH_NONE,
    SMTP_AUTH_SICILY,
    SMTP_AUTH_USE_POP3ORIMAP_SETTINGS,
    SMTP_AUTH_USE_SMTP_SETTINGS,
} SMTPAUTHTYPE;

// --------------------------------------------------------------------------------
// String Lengths
// --------------------------------------------------------------------------------
const SHORT CCHMAX_ORG_NAME         = 256;
const SHORT CCHMAX_DISPLAY_NAME     = 256;
const SHORT CCHMAX_ACCOUNT_NAME     = 256;
const SHORT CCHMAX_SERVER_NAME      = 256;
const SHORT CCHMAX_PASSWORD         = 256;
const SHORT CCHMAX_USERNAME         = 256;
const SHORT CCHMAX_EMAIL_ADDRESS    = 256;
const SHORT CCHMAX_CONNECTOID       = 256;
const SHORT CCHMAX_SEARCH_BASE      = 256;
const SHORT CCHMAX_ROOT_FOLDER      = 256;
const SHORT CCHMAX_SIGNATURE        = 16;
const SHORT CCHMAX_SERVICE          = 256;

// --------------------------------------------------------------------------------
// IImnAdviseAccount
// --------------------------------------------------------------------------------
[
    object,
    uuid(0A06BD31-166F-11d0-81B9-00C04FD85AB4),
    pointer_default(unique)
]
interface IImnAdviseAccount : IUnknown
{
    import "unknwn.idl";

    typedef enum {

    ACCT_NEWS = 0,
    ACCT_MAIL,
    ACCT_DIR_SERV,
    ACCT_LAST

    } ACCTTYPE;

    typedef struct tagAccountContext
    {
    ACCTTYPE                AcctType;
    LPSTR                   pszAccountID;
    LPSTR           pszOldName; // set if name changes or account deleted
    DWORD                   dwServerType;
    } ACTX;

    HRESULT AdviseAccount(
        [in]   DWORD            dwAdviseType,
        [in]   ACTX            *pAcctCtx);
}

// --------------------------------------------------------------------------------
// IImnAdviseMigrateServer
// --------------------------------------------------------------------------------
[
    object,
    uuid(8D0AED11-1638-11d0-81B9-00C04FD85AB4),
    pointer_default(unique)
]
interface IImnAdviseMigrateServer : IUnknown
{
    import "unknwn.idl";

    HRESULT MigrateServer(
        [in]   DWORD            dwSrvType,
        [in]   IImnAccount      *pAccount);
}

// --------------------------------------------------------------------------------
// IImnEnumAccounts
// --------------------------------------------------------------------------------
[
    object,
    uuid(FD465483-1384-11d0-ABBD-0020AFDFD10A),
    pointer_default(unique)
]
interface IImnEnumAccounts : IUnknown
{
    import "unknwn.idl";

    HRESULT GetCount(
        [out]   ULONG           *pcItems);

    HRESULT SortByAccountName(void);

    HRESULT GetNext(
        [out]   IImnAccount     **ppAccount);

    HRESULT Reset(void);
}

// --------------------------------------------------------------------------------
// IImnAccountManager
// --------------------------------------------------------------------------------
[
    object,
    uuid(FD465481-1384-11d0-ABBD-0020AFDFD10A),
    pointer_default(unique)
]
interface IImnAccountManager : IUnknown
{
    import "unknwn.idl";

    typedef struct tagACCTLISTINFO
    {
    DWORD       cbSize;
    ACCTTYPE    AcctTypeInit;
    DWORD       dwAcctFlags;
    DWORD       dwFlags;
    } ACCTLISTINFO;

    HRESULT Init(
        [in]    IImnAdviseMigrateServer *pAdviseMigrateServer);

    HRESULT CreateAccountObject(
        [in]    ACCTTYPE            AcctType,
        [out]   IImnAccount         **ppAccount);

    HRESULT Enumerate(
        [in]    DWORD               dwSrvTypes,
        [out]   IImnEnumAccounts    **ppEnumAccounts);

    HRESULT GetAccountCount(
        [in]    ACCTTYPE            AcctType,
        [out]   ULONG               *pcServers);

    HRESULT FindAccount(
        [in]    DWORD               dwPropTag,
        [in]    LPCSTR              pszSearchData,
        [out]   IImnAccount         **ppAccount);

    HRESULT GetDefaultAccount(
        [in]    ACCTTYPE            AcctType,
        [out]   IImnAccount         **ppAccount);

midl_pragma warning (disable: 2495)
    HRESULT GetDefaultAccountName(
        [in]    ACCTTYPE            AcctType,
        [out, size_is(cchMax), annotation("__out_ecount(cchMax)")] LPSTR  pszAccount,
        [in]    ULONG               cchMax);
midl_pragma warning (default: 2495)

    HRESULT ProcessNotification(
        [in]    UINT                uMsg,
        [in]    WPARAM              wParam,
        [in]    LPARAM              lParam);

    HRESULT ValidateDefaultSendAccount(void);

    HRESULT AccountListDialog(
        [in]    HWND                hwnd,
        [in]    ACCTLISTINFO        *pinfo);

    HRESULT Advise(
        [in]    IImnAdviseAccount   *pAdviseAccount,
        [out]   DWORD               *pdwConnection);

    HRESULT Unadvise(
        [in]    DWORD               dwConnection);

    HRESULT GetUniqueAccountName(
        [in]    LPSTR               szName,
        [in]    UINT                cch);

    HRESULT InitEx(
        [in]    IImnAdviseMigrateServer *pAdviseMigrateServer,
                [in]    DWORD                           dwFlags);
}

// --------------------------------------------------------------------------------
// IImnAccountManager2
// --------------------------------------------------------------------------------
[
    object,
    uuid(C43DFC6F-62BB-11d2-A727-00C04F79E7C8),
    pointer_default(unique)
]
interface IImnAccountManager2 : IImnAccountManager
{
    import "unknwn.idl";

    HRESULT InitUser(
        [in]    IImnAdviseMigrateServer *pAdviseMigrateServer,
        [in]    REFGUID             rguidID,
            [in]    DWORD                   dwFlags);

    HRESULT GetIncompleteAccount(
        [in]    ACCTTYPE            AcctType,
        [in,ref]LPSTR               pszAccountId,
        [in]    ULONG               cchMax);

    HRESULT SetIncompleteAccount(
        [in]        ACCTTYPE            AcctType,
        [in,unique] LPCSTR              pszAccountId);
}

// --------------------------------------------------------------------------------
// IPropertyContainer
// --------------------------------------------------------------------------------
[
    object,
    uuid(FD465484-1384-11d0-ABBD-0020AFDFD10A),
    pointer_default(unique)
]
interface IPropertyContainer : IUnknown
{
    import "unknwn.idl";

    typedef enum {

    TYPE_ERROR = 1000,     // Unknown data type - or data type is in error
    TYPE_DWORD,     // Unsigned 32 bit value
    TYPE_LONG,      // Signed 32 bit value
    TYPE_WORD,      // Unsigned 16 bit value
    TYPE_SHORT,     // Signed 16 bit value
    TYPE_BYTE,      // Unsigned 8 bit value
    TYPE_CHAR,      // Signed 8 bit value
    TYPE_FILETIME,  // FILETIME stucture
    TYPE_STRING,    // Fixed-length null-term string
    TYPE_BINARY,    // Fixed-length binary data
    TYPE_FLAGS,     // Flags fields
    TYPE_STREAM,    // Stream data type
    TYPE_WSTRING,   // UNICODE fixed-length null-term string
    TYPE_BOOL,      // BOOL checked to be equal to 1 or 0
    TYPE_PASS,      // Neeto burrito password mosquito
    TYPE_ULARGEINTEGER,     //ULARGE_INTEGER structure
    TYPE_LAST

    } PROPTYPE;

    HRESULT GetProp(
            [in]            DWORD       dwPropTag,
            [in,size_is(*pcb),ref] BYTE *pb,
            [in]            ULONG       *pcb);

    HRESULT GetPropDw(
            [in]            DWORD       dwPropTag,
            [out]           DWORD       *pdw);

midl_pragma warning (disable: 2495)
    HRESULT GetPropSz(
            [in]            DWORD       dwPropTag,
            [out, size_is(cchMax), annotation("__out_ecount(cchMax)")] LPSTR psz,
            [in]            ULONG       cchMax);
midl_pragma warning (default: 2495)

    HRESULT SetProp(
            [in]            DWORD       dwPropTag,
            [in,size_is(cb),unique] BYTE       *pb,
            [in]            ULONG       cb);

    HRESULT SetPropDw(
            [in]            DWORD       dwPropTag,
            [in]            DWORD       dw);

midl_pragma warning (disable: 2495)
    HRESULT SetPropSz(
            [in]            DWORD       dwPropTag,
            [in,unique, annotation("__in")] LPSTR psz);
midl_pragma warning (default: 2495)
}

// --------------------------------------------------------------------------------
// IImnAccount
// --------------------------------------------------------------------------------
[
    object,
    uuid(FD465482-1384-11d0-ABBD-0020AFDFD10A),
    pointer_default(unique)
]
interface IImnAccount : IPropertyContainer
{
    import "unknwn.idl";

    HRESULT Exist(void);
    HRESULT SetAsDefault(void);
    HRESULT Delete(void);
    HRESULT SaveChanges(void);

    HRESULT GetAccountType(
            [out]           ACCTTYPE    *pAcctType);
    HRESULT GetServerTypes(
            [out]           DWORD       *pdwSrvTypes);

    HRESULT ShowProperties(
            [in]            HWND        hwnd,
            [in]            DWORD       dwFlags);

    HRESULT ValidateProperty(
            [in]            DWORD       dwPropTag,
            [in,size_is(cb)] BYTE       *pb,
            [in]            ULONG       cb);

    HRESULT DoWizard(
            [in]            HWND        hwnd,
            [in]            DWORD       dwFlags);

    HRESULT DoImportWizard(
            [in]            HWND        hwnd,
            [in]            CLSID       clsid,
            [in]            DWORD       dwFlags);
}

//
// This definition is for C files in 16bit WAB, because of two reasons:
//
// 1. IID definitions generated by MIDL is not compatible with 16bit DEFINE_GUID
// 2. DEFINE_GUID should be placed LATER than the declaration generated by MIDL
//
cpp_quote("#if defined( WIN16 ) && !defined( __cplusplus )")
cpp_quote("// {8D4B04E1-1331-11d0-81B8-00C04FD85AB4}")
cpp_quote("EXTERN_C const IID CLSID_ImnAccountManager =")
cpp_quote("    { 0x8d4b04e1, 0x1331, 0x11d0, { 0x81, 0xb8, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4 } };")
cpp_quote("")
cpp_quote("// {FD465484-1384-11d0-ABBD-0020AFDFD10A}")
cpp_quote("EXTERN_C const IID IID_IPropertyContainer =")
cpp_quote("    { 0xfd465484, 0x1384, 0x11d0, { 0xab, 0xbd, 0x0, 0x20, 0xaf, 0xdf, 0xd1, 0xa } };")
cpp_quote("")
cpp_quote("// {FD465481-1384-11d0-ABBD-0020AFDFD10A}")
cpp_quote("EXTERN_C const IID IID_IImnAccountManager =")
cpp_quote("    { 0xfd465481, 0x1384, 0x11d0, { 0xab, 0xbd, 0x0, 0x20, 0xaf, 0xdf, 0xd1, 0xa } };")
cpp_quote("")
cpp_quote("// {C43DFC6F-62BB-11d2-A727-00C04F79E7C8}")
cpp_quote("EXTERN_C const IID IID_IImnAccountManager2 =")
cpp_quote("    { 0xc43dfc6f, 0x62bb, 0x11d2, { 0xa7, 0x27, 0x0, 0xc0, 0x4f, 0x79, 0xe7, 0xc8 } };")
cpp_quote("")
cpp_quote("// {FD465482-1384-11d0-ABBD-0020AFDFD10A}")
cpp_quote("EXTERN_C const IID IID_IImnAccount =")
cpp_quote("    { 0xfd465482, 0x1384, 0x11d0, { 0xab, 0xbd, 0x0, 0x20, 0xaf, 0xdf, 0xd1, 0xa } };")
cpp_quote("")
cpp_quote("// {FD465483-1384-11d0-ABBD-0020AFDFD10A}")
cpp_quote("EXTERN_C const IID IID_IImnEnumAccounts =")
cpp_quote("    { 0xfd465483, 0x1384, 0x11d0, { 0xab, 0xbd, 0x0, 0x20, 0xaf, 0xdf, 0xd1, 0xa } };")
cpp_quote("")
cpp_quote("// {8D0AED11-1638-11d0-81B9-00C04FD85AB4}")
cpp_quote("EXTERN_C const IID IID_IImnAdviseMigrateServer =")
cpp_quote("    { 0x8d0aed11, 0x1638, 0x11d0, { 0x81, 0xb9, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4 } };")
cpp_quote("")
cpp_quote("// {0A06BD31-166F-11d0-81B9-00C04FD85AB4}")
cpp_quote("EXTERN_C const IID IID_IImnAdviseAccount =")
cpp_quote("    { 0xa06bd31, 0x166f, 0x11d0, { 0x81, 0xb9, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4 } };")
cpp_quote("")
cpp_quote("#endif //WIN16 && !__cplusplus")

