|
|
/*
* _RUNT.H * * DLL central for the MAPI utilities. */
#ifndef _RUNT_H_
#define _RUNT_H_
#ifdef __cplusplus
extern "C" { #endif
// Per-process instance data for utilities functions
DeclareInstList(lpInstUtil);
#define INSTUTIL_SIG_BEG 0x54534E49 // 'INST'
#define INSTUTIL_SIG_END 0x4C495455 // 'UTIL'
typedef struct { #ifdef WIN16
DWORD dwBeg; // INSTUTIL_SIG_BEG
WORD wSS; // Stack segment of current task
HTASK hTask; // HTASK of current task
#endif
UINT cRef;
// General stuff
HLH hlhClient; // Heap for allocations
// Idle engine stuff
ULONG cRefIdle; /* reference count */ LPMALLOC lpMalloc; /* memory allocator */ HINSTANCE hInst; /* */ HWND hwnd; /* handle of hidden window */ int iftgMax; /* size of idle routine registry */ int iftgMac; /* number of registered idle routines */ #if !(defined(WIN32) && !defined(MAC))
UINT uiWakeupTimer; /* Timer to wake up & run idle routines */ #endif
#ifdef OLD_STUFF
PFTG pftgIdleTable; /* ptr to table of registered routines */ #endif
int iftgCur; /* Index in pftgIdleTable of currently */ /* running ftgCur routine or recently run */ USHORT schCurrent; /* current idle routine state from last */ /* FDoNextIdleTask() call */ BOOL fIdleExit; /* flag set TRUE if idle routines are */ /* being called from IdleExit */
#if defined(WIN32) && !defined(MAC)
CRITICAL_SECTION cs; /* gate to keep multiple threads from */ /* accessing global data at the same time */ BOOL fSignalled; /* Only do this when we need to */ HANDLE hTimerReset; /* Used to signal timer reset */ HANDLE hTimerThread; /* Timer thread handle */ DWORD dwTimerThread; /* Timer thread ID */ DWORD dwTimerTimeout; /* Current timeout value */ BOOL fExit; /* if TRUE, timer thread should exit */ #endif
#ifdef WIN16
LPVOID pvBeg; // Pointer back to beginning of pinst
DWORD dwEnd; // INSTUTIL_SIG_END
#endif
} INSTUTIL, FAR *LPINSTUTIL;
#define MAPIMDB_VERSION ((BYTE) 0x00)
#define MAPIMDB_NORMAL ((BYTE) 0x00) // Normal wrapped store EntryID
#define MAPIMDB_SECTION ((BYTE) 0x01) // Known section, but no EntryID
#define MUIDSTOREWRAP { \
0x38, 0xa1, 0xbb, 0x10, \ 0x05, 0xe5, 0x10, 0x1a, \ 0xa1, 0xbb, 0x08, 0x00, \ 0x2b, 0x2a, 0x56, 0xc2 }
typedef struct _MAPIMDBEID { BYTE abFlags[4]; MAPIUID mapiuid; BYTE bVersion; BYTE bFlagInt; BYTE bData[MAPI_DIM]; } MAPIMDB_ENTRYID, *LPMAPIMDB_ENTRYID;
#define CbNewMAPIMDB_ENTRYID(_cb) \
(offsetof(MAPIMDB_ENTRYID,bData) + (_cb)) #define CbMAPIMDB_ENTRYID(_cb) \
(offsetof(MAPIMDB_ENTRYID,bData) + (_cb)) #define SizedMAPIMDB_ENTRYID(_cb, _name) \
struct _MAPIMDB_ENTRYID_ ## _name \ { \ BYTE abFlags[4]; \ MAPIUID mapiuid; \ BYTE bVersion; \ BYTE bFlagInt; \ BYTE bData[_cb]; \ } _name
// This macro computes the length of the MAPI header on a store entryid.
// The provider-specific data starts on a 4-byte boundary following the
// DLL Name. The cb parameter is the length of the DLL name in bytes (counting
// the NULL terminator).
#define CB_MDB_EID_HEADER(cb) ((CbNewMAPIMDB_ENTRYID(cb) + 3) & ~3)
// Internal function that gets a new UID
STDAPI_(SCODE) ScGenerateMuid(LPMAPIUID lpMuid);
// Internal function that gets the utilities heap
HLH HlhUtilities(VOID);
// Critical section for serializing heap access
#if defined(WIN32) && !defined(MAC)
extern CRITICAL_SECTION csHeap; #endif
#if defined(WIN32) && !defined(MAC)
extern CRITICAL_SECTION csMapiInit; #endif
#if defined(WIN32) && !defined(MAC)
extern CRITICAL_SECTION csMapiSearchPath; #endif
// Access the DLL instance handle
LRESULT STDAPICALLTYPE DrainFilteredNotifQueue(BOOL fSync, ULONG ibParms, LPNOTIFKEY pskeyFilter);
//$ used by ITable
LPADVISELIST lpAdviseList; LPNOTIFKEY lpNotifKey; LPMAPIADVISESINK lpMAPIAdviseSink; LPNOTIFICATION lpNotification;
STDMETHODIMP HrSubscribe(LPADVISELIST FAR *lppAdviseList, LPNOTIFKEY lpKey, ULONG ulEventMask, LPMAPIADVISESINK lpAdvise, ULONG ulFlags, ULONG FAR *lpulConnection); STDMETHODIMP HrUnsubscribe(LPADVISELIST FAR *lppAdviseList, ULONG ulConnection); STDMETHODIMP HrNotify(LPNOTIFKEY lpKey, ULONG cNotification, LPNOTIFICATION lpNotifications, ULONG * lpulFlags);
#ifndef PSTRCVR
#endif //PSTRCVR
//$ END
#ifdef __cplusplus
} #endif
#endif // _RUNT_H_
|