windows-nt/Source/XPSP1/NT/base/ntsetup/oobe/msobcomm/mapicall.h
2020-09-26 16:20:57 +08:00

116 lines
3.4 KiB
C++

//*********************************************************************
//* Microsoft Windows **
//* Copyright(c) Microsoft Corp., 1994-1999 **
//*********************************************************************
//
// 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_
#undef MAPI_DIM
#define MAPI_DIM 10
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
#include <mapidefs.h>
#include <mapicode.h>
#include <mspst.h>
#include <mspab.h>
#define MAPI_NOWIDECHAR // MAPI guys...don't map lstr*W to MNLS_lstr*W
#include <mapiwin.h>
#include <mapitags.h>
#include <mapiutil.h>
#include <mapispi.h>
#include "inetprop.h"
#ifdef DEBUG
#undef Assert // more MAPI guys!
#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(LPWSTR * ppProfileName, BOOL * pfDefault);
UINT GetEntryCount() { return _nEntries; }
};
class ENUM_MAPI_SERVICE
{
private:
LPSRowSet _pServiceRowSet;
UINT _iRow;
UINT _nEntries;
public:
ENUM_MAPI_SERVICE(LPWSTR pszProfileName);
~ENUM_MAPI_SERVICE();
BOOL Next(LPWSTR * ppServiceName);
UINT GetEntryCount() { return _nEntries; }
};
#endif // _MAPICALL_H_