WindowsXP-SP1/inetcore/connectionwizard/inetcfg/mapicall.h
2020-09-30 16:53:49 +02:00

114 lines
3.2 KiB
C++

//*********************************************************************
//* Microsoft Windows **
//* Copyright(c) Microsoft Corp., 1994-1995 **
//*********************************************************************
//
// MAPICALL.H - Header file for MAPI callout module
//
//
// HISTORY:
//
// 1/27/95 jeremys Created.
// 96/03/26 markdu Put #ifdef __cplusplus around extern "C"
//
#ifndef _MAPICALL_H_
#define _MAPICALL_H_
#define MAPI_DIM 10
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
#include <mapidefs.h>
#include <mapicode.h>
#include <mspst.h>
#include <mspab.h>
#include <mapiwin.h>
#include <mapitags.h>
#include <mapiutil.h>
#include <mapispi.h>
#include <inetprop.h>
#ifdef DEBUG
#undef Assert // avoid multiple definitions
#include <mapidbg.h>
#endif
#ifdef __cplusplus
}
#endif // __cplusplus
// prototype for function pointer for MAPI util function
typedef HRESULT (CALLBACK * LPHRQUERYALLROWS) (LPMAPITABLE,LPSPropTagArray,
LPSRestriction,LPSSortOrderSet,LONG,LPSRowSet FAR *);
extern HINSTANCE hInstMAPIDll; // handle to MAPI dll we load explicitly
// structure used in determining if a service is present in a MAPI profile,
// and to install the service
typedef struct tagMSGSERVICE {
BOOL fPresent; // TRUE if service is present
UINT uIDServiceName; // ID of str resource with service name (non-UI)
UINT uIDServiceDescription; // ID of str resource with service desc (for UI)
BOOL fNeedConfig; // TRUE if create-time config proc should be called
UINT uIDStoreFilename; // name to try for message store for
UINT uIDStoreFilename1; // name to use to generate other message store names
UINT uPropID; // prop val ID for message store property for this service
} MSGSERVICE;
#define NUM_SERVICES 3 // number of services in table of MSGSERVICEs
// class to aid in releasing interfaces. When you obtain an OLE interface,
// you can contruct a RELEASE_ME_LATER object with the pointer to the interface.
// When the object is destructed, it will release the interface.
class RELEASE_ME_LATER
{
private:
LPUNKNOWN _lpInterface;
public:
RELEASE_ME_LATER(LPUNKNOWN lpInterface) { _lpInterface = lpInterface; }
~RELEASE_ME_LATER() { if (_lpInterface) _lpInterface->Release(); }
};
// defines needed by route 66 config DLL. Note: don't change these!
#define CONNECT_TYPE_LAN 1
#define CONNECT_TYPE_REMOTE 2
#define DOWNLOAD_OPTION_HEADERS 1
#define DOWNLOAD_OPTION_MAIL_DELETE 3
class ENUM_MAPI_PROFILE
{
private:
LPSRowSet _pProfileRowSet;
UINT _iRow;
UINT _nEntries;
public:
ENUM_MAPI_PROFILE();
~ENUM_MAPI_PROFILE();
BOOL Next(LPTSTR * ppProfileName,BOOL * pfDefault);
UINT GetEntryCount() { return _nEntries; }
};
class ENUM_MAPI_SERVICE
{
private:
LPSRowSet _pServiceRowSet;
UINT _iRow;
UINT _nEntries;
public:
ENUM_MAPI_SERVICE(LPTSTR pszProfileName);
~ENUM_MAPI_SERVICE();
BOOL Next(LPTSTR * ppServiceName);
UINT GetEntryCount() { return _nEntries; }
};
#endif // _MAPICALL_H_