72 lines
2.5 KiB
C
72 lines
2.5 KiB
C
|
#ifndef __MapiInit_h__
|
||
|
#define __MapiInit_h__
|
||
|
|
||
|
#include <mapix.h>
|
||
|
|
||
|
// This defines a bunch of macros for pretty GetProcAddress stuff...
|
||
|
// DECLARE_PFNTYPE is for those functions that are not defined as the example above
|
||
|
#define DECLARE_PFNTYPE( FnName ) typedef FnName FAR* LP##FnName;
|
||
|
#define DECLARE_PFNTYPE_INST( FnName ) LP##FnName lpfn##FnName = NULL;
|
||
|
|
||
|
// DECLARE_PROC goes in the header file
|
||
|
#define DECLARE_PROC( FnDecl, FnName ) extern LP##FnDecl lpfn##FnName;
|
||
|
|
||
|
// DECLARE_PROC_INST goes in the .c or .cpp file
|
||
|
#define DECLARE_PROC_INST( FnDecl, FnName ) LP##FnDecl lpfn##FnName = NULL;
|
||
|
|
||
|
// This begins a proc map as described at the top of this file
|
||
|
#define BEGIN_PROC_MAP( LibName ) APIFCN LibName##ProcList[] = {
|
||
|
|
||
|
// Each function that is being loaded has an entry in the proc map
|
||
|
#define PROC_MAP_ENTRY( FnName ) { (LPVOID * ) &lpfn##FnName, #FnName },
|
||
|
|
||
|
// Some functions we have to give an explicit name
|
||
|
#define PROC_MAP_ENTRY_EXPLICIT_NAME( pFnName, FnName ) { (LPVOID * ) &lpfn##pFnName, #FnName },
|
||
|
|
||
|
// This is at the end of a proc map
|
||
|
#define END_PROC_MAP };
|
||
|
|
||
|
// User calls LOAD_PROCS with the PROC map that they have built....
|
||
|
#define LOAD_PROCS(szDllName, LibName, pHInstance) HrInitLpfn(LibName##ProcList, ARRAY_ELEMENTS(LibName##ProcList), pHInstance, szDllName);
|
||
|
|
||
|
typedef void ( STDAPICALLTYPE FREEPROWS ) ( LPSRowSet lpRows );
|
||
|
typedef FREEPROWS FAR* LPFREEPROWS;
|
||
|
|
||
|
|
||
|
typedef HRESULT( STDAPICALLTYPE HRQUERYALLROWS ) (
|
||
|
LPMAPITABLE lpTable,
|
||
|
LPSPropTagArray lpPropTags,
|
||
|
LPSRestriction lpRestriction,
|
||
|
LPSSortOrderSet lpSortOrderSet,
|
||
|
LONG crowsMax,
|
||
|
LPSRowSet FAR *lppRows
|
||
|
);
|
||
|
typedef HRQUERYALLROWS FAR* LPHRQUERYALLROWS;
|
||
|
|
||
|
|
||
|
typedef HRESULT( STDAPICALLTYPE HRGETONEPROP ) (
|
||
|
LPMAPIPROP lpMapiProp,
|
||
|
ULONG ulPropTag,
|
||
|
LPSPropValue FAR *lppProp
|
||
|
);
|
||
|
typedef HRGETONEPROP FAR* LPHRGETONEPROP;
|
||
|
|
||
|
// We are forward declaring them like this so that
|
||
|
// the fns can be visible from several cpp files....
|
||
|
|
||
|
// MAPI32.DLL stuff
|
||
|
DECLARE_PROC( MAPIINITIALIZE, MAPIInitialize );
|
||
|
DECLARE_PROC( MAPIUNINITIALIZE, MAPIUninitialize );
|
||
|
DECLARE_PROC( MAPIALLOCATEBUFFER, MAPIAllocateBuffer );
|
||
|
DECLARE_PROC( MAPIALLOCATEMORE, MAPIAllocateMore );
|
||
|
DECLARE_PROC( MAPIFREEBUFFER, MAPIFreeBuffer );
|
||
|
DECLARE_PROC( MAPILOGONEX, MAPILogonEx );
|
||
|
DECLARE_PROC( MAPIADMINPROFILES, MAPIAdminProfiles );
|
||
|
DECLARE_PROC( FREEPROWS, FreeProws );
|
||
|
DECLARE_PROC( HRQUERYALLROWS, HrQueryAllRows );
|
||
|
DECLARE_PROC( HRGETONEPROP, HrGetOneProp );
|
||
|
|
||
|
bool LoadMapiFns( HINSTANCE* phInstMapi32DLL );
|
||
|
|
||
|
|
||
|
#endif // __MapiInit_h__
|