/*********************************************************************** * * _ABP.H * * Header file for code in ABP.C * * Copyright 1992, 1993 Microsoft Corporation. All Rights Reserved. * ***********************************************************************/ /* * Used to keep track of all objects created on this session */ typedef struct _object { struct _object *lppNext; LPVOID lpObject; } OBJECTLIST, *LPOBJECTLIST; #define CBOBJECTLIST sizeof(OBJECTLIST) /* * Declaration of IABProvider object implementation */ #undef INTERFACE #define INTERFACE struct _ABP #undef MAPIMETHOD_ #define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, ABP_) MAPI_IUNKNOWN_METHODS(IMPL) MAPI_IABPROVIDER_METHODS(IMPL) #undef MAPIMETHOD_ #define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, ABP_) MAPI_IUNKNOWN_METHODS(IMPL) MAPI_IABPROVIDER_METHODS(IMPL) #undef MAPIMETHOD_ #define MAPIMETHOD_(type, method) STDMETHOD_(type, method) DECLARE_MAPI_INTERFACE(ABP_) { MAPI_IUNKNOWN_METHODS(IMPL) MAPI_IABPROVIDER_METHODS(IMPL) }; /* * Definition of the init object */ typedef struct _ABP { ABP_Vtbl FAR * lpVtbl; FAB_IUnknown; /* * list of logon objects */ LPOBJECTLIST lpObjectList; } ABP, FAR *LPABP; #define CBABP sizeof(ABP) /* * utility functions that allow access to data stored in the Init object (ABP.C) */ void RemoveLogonObject(LPABPROVIDER lpABProvider, LPVOID lpvABLogon, LPFREEBUFFER lpFreeBuff); void FindLogonObject(LPABPROVIDER lpABProvider, LPMAPIUID lpMuidToFind, LPABLOGON * lppABLogon); /* * Internal utility functions that allow access to data stored in the logon object */ /* * Declaration of IABLogon object implementation */ #undef INTERFACE #define INTERFACE struct _ABPLOGON #undef MAPIMETHOD_ #define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, ABPLOGON_) MAPI_IUNKNOWN_METHODS(IMPL) MAPI_IABLOGON_METHODS(IMPL) #undef MAPIMETHOD_ #define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, ABPLOGON_) MAPI_IUNKNOWN_METHODS(IMPL) MAPI_IABLOGON_METHODS(IMPL) #undef MAPIMETHOD_ #define MAPIMETHOD_(type, method) STDMETHOD_(type, method) DECLARE_MAPI_INTERFACE(ABPLOGON_) { MAPI_IUNKNOWN_METHODS(IMPL) MAPI_IABLOGON_METHODS(IMPL) }; /* * Definition of the logon object */ typedef struct _ABPLOGON { ABPLOGON_Vtbl FAR * lpVtbl; FAB_IUnknown; /* * Private structure */ LPABPROVIDER lpABP; // LPOBJECTLIST lpObjectList; /* List of objects in this session */ LPTSTR lpszFileName; /* Name of file that is browsed */ MAPIUID muidID; /* UID for this logon object */ LPMAPISUP lpMapiSup; /* MAPI Support object - gotten via ABPLogon */ // HWND hWnd; // Window handle the AB provider can use /* * Table Data for canned tables */ /* Root hierarchy */ LPTABLEDATA lpTDatRoot; /* One Off Table */ LPTABLEDATA lpTDatOO; /* Container Display Table */ // LPTABLEDATA lpTDatCDT; /* Advanced search display table */ // LPTABLEDATA lpABCSearchTbl; /* List box selections table */ // LPTABLEDATA lpLBTable; } ABPLOGON, FAR *LPABPLOGON; #define CBABPLOGON sizeof(ABPLOGON) /* * Creates a new ABPLogon object (see ABLOGON.C) */ HRESULT HrNewABLogon( LPABLOGON * lppABLogon, LPABPROVIDER lpABP, LPMAPISUP lpMAPISup, LPTSTR lpszSABFile, LPMAPIUID lpmuid, HINSTANCE hLibrary, LPALLOCATEBUFFER lpAllocBuff, LPALLOCATEMORE lpAllocMore, LPFREEBUFFER lpFreeBuff, LPMALLOC lpMalloc ); LPMAPIUID LpMuidFromLogon(LPABLOGON lpABLogon); HRESULT HrLpszGetCurrentFileName(LPABLOGON lpABLogon, LPTSTR * lppszFileName); HRESULT HrReplaceCurrentFileName(LPABLOGON lpABLogon, LPTSTR lpstrT); BOOL FEqualFABFiles( LPABLOGON lpABLogon, LPTSTR lpszFileName); /* * Creates a new ROOT container object (see ROOT.C) */ HRESULT HrNewROOT(LPABCONT * lppROOT, ULONG * lpulObjType, LPABLOGON lpABPLogon, LPCIID lpInterface, HINSTANCE hLibrary, LPALLOCATEBUFFER lpAllocBuff, LPALLOCATEMORE lpAllocMore, LPFREEBUFFER lpFreeBuff, LPMALLOC lpMalloc ); /* * Creates the search object associated with the SampDirectory (see ABSEARCH.C) */ HRESULT HrNewSearch(LPMAPICONTAINER * lppABSearch, LPABLOGON lpABLogon, LPCIID lpInterface, HINSTANCE hLibrary, LPALLOCATEBUFFER lpAllocBuff, LPALLOCATEMORE lpAllocMore, LPFREEBUFFER lpFreeBuff, LPMALLOC lpMalloc ); /* * Macro version of IsEqualGUID */ // #define IsEqualGUID(g1, g2) (memcmp((g1), (g2), sizeof(GUID)) == 0)