ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

mapiutil.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2004 Jon Griffiths
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 #ifndef MAPIUTIL_H_
00020 #define MAPIUTIL_H_
00021 
00022 #include <mapix.h>
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00028 #define TAD_ALL_ROWS 1 /* Delete all rows */
00029 
00030 LPMALLOC WINAPI MAPIGetDefaultMalloc(void);
00031 
00032 #define SOF_UNIQUEFILENAME 0x80000000U /* Create a unique (temporary) filename */
00033 
00034 #if defined (UNICODE) || defined (__WINESRC__)
00035 typedef HRESULT (WINAPI * LPOPENSTREAMONFILE)(LPALLOCATEBUFFER,LPFREEBUFFER,
00036                                               ULONG,LPWSTR,LPWSTR,LPSTREAM*);
00037 HRESULT WINAPI OpenStreamOnFile(LPALLOCATEBUFFER,LPFREEBUFFER,
00038                                 ULONG,LPWSTR,LPWSTR,LPSTREAM*);
00039 #else
00040 typedef HRESULT (WINAPI * LPOPENSTREAMONFILE)(LPALLOCATEBUFFER,LPFREEBUFFER,
00041                                               ULONG,LPSTR,LPSTR,LPSTREAM*);
00042 HRESULT WINAPI OpenStreamOnFile(LPALLOCATEBUFFER,LPFREEBUFFER,
00043                                 ULONG,LPSTR,LPSTR,LPSTREAM*);
00044 #endif
00045 #define OPENSTREAMONFILE "OpenStreamOnFile"
00046 
00047 BOOL WINAPI FEqualNames(LPMAPINAMEID,LPMAPINAMEID);
00048 
00049 typedef struct IPropData *LPPROPDATA;
00050 
00051 #define IPROP_READONLY  0x00001U
00052 #define IPROP_READWRITE 0x00002U
00053 #define IPROP_CLEAN     0x10000U
00054 #define IPROP_DIRTY     0x20000U
00055 
00056 SCODE WINAPI CreateIProp(LPCIID,ALLOCATEBUFFER*,ALLOCATEMORE*,FREEBUFFER*,
00057                          LPVOID,LPPROPDATA*);
00058 SCODE WINAPI PropCopyMore(LPSPropValue,LPSPropValue,ALLOCATEMORE*,LPVOID);
00059 ULONG WINAPI UlPropSize(LPSPropValue);
00060 VOID  WINAPI GetInstance(LPSPropValue,LPSPropValue,ULONG);
00061 BOOL  WINAPI FPropContainsProp(LPSPropValue,LPSPropValue,ULONG);
00062 BOOL  WINAPI FPropCompareProp(LPSPropValue,ULONG,LPSPropValue);
00063 LONG  WINAPI LPropCompareProp(LPSPropValue,LPSPropValue);
00064 
00065 HRESULT WINAPI HrAddColumns(LPMAPITABLE,LPSPropTagArray,LPALLOCATEBUFFER,LPFREEBUFFER);
00066 HRESULT WINAPI HrAddColumnsEx(LPMAPITABLE,LPSPropTagArray,LPALLOCATEBUFFER,
00067                               LPFREEBUFFER,void (*)(LPSPropTagArray));
00068 HRESULT WINAPI HrAllocAdviseSink(LPNOTIFCALLBACK,LPVOID,LPMAPIADVISESINK*);
00069 HRESULT WINAPI HrThisThreadAdviseSink(LPMAPIADVISESINK,LPMAPIADVISESINK*);
00070 HRESULT WINAPI HrDispatchNotifications (ULONG);
00071 
00072 ULONG WINAPI UlAddRef(void*);
00073 ULONG WINAPI UlRelease(void*);
00074 
00075 HRESULT WINAPI HrGetOneProp(LPMAPIPROP,ULONG,LPSPropValue*);
00076 HRESULT WINAPI HrSetOneProp(LPMAPIPROP,LPSPropValue);
00077 BOOL    WINAPI FPropExists(LPMAPIPROP,ULONG);
00078 void    WINAPI FreePadrlist(LPADRLIST);
00079 void    WINAPI FreeProws(LPSRowSet);
00080 HRESULT WINAPI HrQueryAllRows(LPMAPITABLE,LPSPropTagArray,LPSRestriction,
00081                               LPSSortOrderSet,LONG,LPSRowSet*);
00082 LPSPropValue WINAPI PpropFindProp(LPSPropValue,ULONG,ULONG);
00083 
00084 #if defined (UNICODE) || defined (__WINESRC__)
00085 BOOL   WINAPI FBinFromHex(LPWSTR,LPBYTE);
00086 SCODE  WINAPI ScBinFromHexBounded(LPWSTR,LPBYTE,ULONG);
00087 void   WINAPI HexFromBin(LPBYTE,int,LPWSTR);
00088 ULONG  WINAPI UlFromSzHex(LPCWSTR);
00089 LPWSTR WINAPI SzFindCh(LPCWSTR,USHORT);
00090 LPWSTR WINAPI SzFindLastCh(LPCWSTR,USHORT);
00091 LPWSTR WINAPI SzFindSz(LPCWSTR,LPCWSTR);
00092 UINT   WINAPI UFromSz(LPCSTR);
00093 #else
00094 BOOL  WINAPI FBinFromHex(LPSTR,LPBYTE);
00095 SCODE WINAPI ScBinFromHexBounded(LPSTR,LPBYTE,ULONG);
00096 void  WINAPI HexFromBin(LPBYTE,int,LPSTR);
00097 ULONG WINAPI UlFromSzHex(LPCSTR);
00098 LPSTR WINAPI SzFindCh(LPCSTR,USHORT);
00099 LPSTR WINAPI SzFindLastCh(LPCSTR,USHORT);
00100 LPSTR WINAPI SzFindSz(LPCSTR,LPCSTR);
00101 UINT  WINAPI UFromSz(LPCSTR);
00102 #endif
00103 
00104 SCODE WINAPI ScInitMapiUtil(ULONG);
00105 void  WINAPI DeinitMapiUtil(void);
00106 
00107 #define szHrDispatchNotifications "_HrDispatchNotifications@4"
00108 #define szScCreateConversationIndex "_ScCreateConversationIndex@16"
00109 
00110 typedef HRESULT (WINAPI DISPATCHNOTIFICATIONS)(ULONG);
00111 typedef DISPATCHNOTIFICATIONS *LPDISPATCHNOTIFICATIONS;
00112 typedef SCODE (WINAPI CREATECONVERSATIONINDEX)(ULONG,LPBYTE,ULONG*,LPBYTE*);
00113 typedef CREATECONVERSATIONINDEX *LPCREATECONVERSATIONINDEX;
00114 
00115 typedef struct ITableData *LPTABLEDATA;
00116 
00117 typedef void (WINAPI CALLERRELEASE)(ULONG,LPTABLEDATA,LPMAPITABLE);
00118 
00119 /*****************************************************************************
00120  * ITableData interface
00121  *
00122  * The underlying table data structure for IMAPITable.
00123  */
00124 #define INTERFACE ITableData
00125 DECLARE_INTERFACE_(ITableData,IUnknown)
00126 {
00127     /*** IUnknown methods ***/
00128     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00129     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00130     STDMETHOD_(ULONG,Release)(THIS) PURE;
00131     /*** ITableData methods ***/
00132     STDMETHOD(HrGetView)(THIS_ LPSSortOrderSet lpSort, CALLERRELEASE *lpRel,
00133                          ULONG ulData, LPMAPITABLE *lppTable) PURE;
00134     STDMETHOD(HrModifyRow)(THIS_ LPSRow lpRow) PURE;
00135     STDMETHOD(HrDeleteRow)(THIS_ LPSPropValue lpKey) PURE;
00136     STDMETHOD(HrQueryRow)(THIS_ LPSPropValue lpKey, LPSRow *lppRow, ULONG *lpRowNum) PURE;
00137     STDMETHOD(HrEnumRow)(THIS_ ULONG ulRowNum, LPSRow *lppRow) PURE;
00138     STDMETHOD(HrNotify)(THIS_ ULONG ulFlags, ULONG cValues, LPSPropValue lpValues) PURE;
00139     STDMETHOD(HrInsertRow)(THIS_ ULONG ulRow, LPSRow lpRow) PURE;
00140     STDMETHOD(HrModifyRows)(THIS_ ULONG ulFlags, LPSRowSet lpRows) PURE;
00141     STDMETHOD(HrDeleteRows)(THIS_ ULONG ulFlags, LPSRowSet lpRows, ULONG *lpCount) PURE;
00142 };
00143 #undef INTERFACE
00144 
00145 #if !defined(__cplusplus) || defined(CINTERFACE)
00146         /*** IUnknown methods ***/
00147 #define ITableData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00148 #define ITableData_AddRef(p)             (p)->lpVtbl->AddRef(p)
00149 #define ITableData_Release(p)            (p)->lpVtbl->Release(p)
00150         /*** ITableData methods ***/
00151 #define ITableData_HrGetView(p,a,b,c,d)  (p)->lpVtbl->HrGetView(p,a,b,c,d)
00152 #define ITableData_HrModifyRow(p,a)      (p)->lpVtbl->HrModifyRow(p,a)
00153 #define ITableData_HrDeleteRow(p,a)      (p)->lpVtbl->HrDeleteRow(p,a)
00154 #define ITableData_HrQueryRow(p,a,b,c)   (p)->lpVtbl->HrQueryRow(p,a,b,c)
00155 #define ITableData_HrEnumRow(p,a,b)      (p)->lpVtbl->HrEnumRow(p,a,b)
00156 #define ITableData_HrNotify(p,a,b,c)     (p)->lpVtbl->HrNotify(p,a,b,c)
00157 #define ITableData_HrInsertRow(p,a,b)    (p)->lpVtbl->HrInsertRow(p,a,b)
00158 #define ITableData_HrModifyRows(p,a,b)   (p)->lpVtbl->HrModifyRows(p,a,b)
00159 #define ITableData_HrDeleteRows(p,a,b,c) (p)->lpVtbl->HrDeleteRows(p,a,b,c)
00160 #endif
00161 
00162 SCODE WINAPI CreateTable(LPCIID,ALLOCATEBUFFER*,ALLOCATEMORE*,FREEBUFFER*,
00163                          LPVOID,ULONG,ULONG,LPSPropTagArray,LPTABLEDATA*);
00164 
00165 SCODE WINAPI ScCountNotifications(int,LPNOTIFICATION,ULONG*);
00166 SCODE WINAPI ScCountProps(int,LPSPropValue,ULONG*);
00167 SCODE WINAPI ScCopyNotifications(int,LPNOTIFICATION,LPVOID,ULONG*);
00168 SCODE WINAPI ScCopyProps(int,LPSPropValue,LPVOID,ULONG*);
00169 SCODE WINAPI ScDupPropset(int,LPSPropValue,LPALLOCATEBUFFER,LPSPropValue*);
00170 SCODE WINAPI ScRelocNotifications(int,LPNOTIFICATION,LPVOID,LPVOID,ULONG*);
00171 SCODE WINAPI ScRelocProps(int,LPSPropValue,LPVOID,LPVOID,ULONG*);
00172 
00173 LPSPropValue WINAPI LpValFindProp(ULONG,ULONG,LPSPropValue);
00174 
00175 static inline FILETIME FtAddFt(FILETIME ftLeft, FILETIME ftRight)
00176 {
00177     LONG64 *pl = (LONG64*)&ftLeft, *pr = (LONG64*)&ftRight;
00178     union { FILETIME ft; LONG64 ll; } ftmap;    
00179     ftmap.ll = *pl + *pr;
00180     return ftmap.ft;
00181 }
00182 
00183 static inline FILETIME FtSubFt(FILETIME ftLeft, FILETIME ftRight)
00184 {
00185     LONG64 *pl = (LONG64*)&ftLeft, *pr = (LONG64*)&ftRight;
00186     union { FILETIME ft; LONG64 ll; } ftmap;    
00187     ftmap.ll = *pl - *pr;
00188     return ftmap.ft;
00189 }
00190 
00191 static inline FILETIME FtNegFt(FILETIME ftLeft)
00192 {
00193     LONG64 *p = (LONG64*)&ftLeft;
00194     union { FILETIME ft; LONG64 ll; } ftmap;    
00195     ftmap.ll = -*p;
00196     return ftmap.ft;
00197 }
00198 
00199 static inline FILETIME FtMulDw(DWORD dwLeft, FILETIME ftRight)
00200 {
00201     LONG64 l = (LONG64)dwLeft, *pr = (LONG64*)&ftRight;
00202     union { FILETIME ft; LONG64 ll; } ftmap;    
00203     ftmap.ll = l * (*pr);
00204     return ftmap.ft;
00205 }
00206 
00207 static inline FILETIME FtMulDwDw(DWORD dwLeft, DWORD dwRight)
00208 {
00209     LONG64 l = (LONG64)dwLeft, r = (LONG64)dwRight;
00210     union { FILETIME ft; LONG64 ll; } ftmap;    
00211     ftmap.ll = l * r;
00212     return ftmap.ft;
00213 }
00214 
00215 /*****************************************************************************
00216  * IPropData interface
00217  *
00218  */
00219 #define INTERFACE IPropData
00220 DECLARE_INTERFACE_(IPropData,IMAPIProp)
00221 {
00222     /*** IUnknown methods ***/
00223     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00224     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00225     STDMETHOD_(ULONG,Release)(THIS) PURE;
00226     /*** IMAPIProp methods ***/
00227     STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
00228     STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
00229     STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
00230     STDMETHOD(GetPropList)(THIS_ ULONG  ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
00231     STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
00232     STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
00233     STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
00234     STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
00235                       LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
00236                       LPSPropProblemArray *lppProbs) PURE;
00237     STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
00238                          LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
00239     STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
00240                                LPMAPINAMEID **lpppNames) PURE;
00241     STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
00242     /*** IPropData methods ***/
00243     STDMETHOD(HrSetObjAccess)(THIS_ ULONG ulAccess) PURE;
00244     STDMETHOD(HrSetPropAccess)(THIS_ LPSPropTagArray lpPropTags, ULONG *lpAccess) PURE;
00245     STDMETHOD(HrGetPropAccess)(THIS_ LPSPropTagArray *lppPropTags, ULONG **lppAccess) PURE;
00246     STDMETHOD(HrAddObjProps)(THIS_ LPSPropTagArray lppPropTags, LPSPropProblemArray *lppProbs) PURE;
00247 };
00248 #undef INTERFACE
00249 
00250 #if !defined(__cplusplus) || defined(CINTERFACE)
00251         /*** IUnknown methods ***/
00252 #define IPropData_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
00253 #define IPropData_AddRef(p)                    (p)->lpVtbl->AddRef(p)
00254 #define IPropData_Release(p)                   (p)->lpVtbl->Release(p)
00255         /*** IMAPIProp methods ***/
00256 #define IPropData_GetLastError(p,a,b,c)        (p)->lpVtbl->GetLastError(p,a,b,c)        
00257 #define IPropData_SaveChanges(p,a)             (p)->lpVtbl->SaveChanges(p,a)             
00258 #define IPropData_GetProps(p,a,b,c,d)          (p)->lpVtbl->GetProps(p,a,b,c,d)          
00259 #define IPropData_GetPropList(p,a,b)           (p)->lpVtbl->GetPropList(p,a,b)           
00260 #define IPropData_OpenProperty(p,a,b,c,d,e)    (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)    
00261 #define IPropData_SetProps(p,a,b,c)            (p)->lpVtbl->SetProps(p,a,b,c)            
00262 #define IPropData_DeleteProps(p,a,b)           (p)->lpVtbl->DeleteProps(p,a,b)           
00263 #define IPropData_CopyTo(p,a,b,c,d,e,f,g,h,i)  (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i)  
00264 #define IPropData_CopyProps(p,a,b,c,d,e,f,g)   (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)   
00265 #define IPropData_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 
00266 #define IPropData_GetIDsFromNames(p,a,b,c,d)   (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)   
00267 #define IPropData_HrSetObjAccess(p,a)          (p)->lpVtbl->HrSetObjAccess(p,a)
00268 #define IPropData_HrSetPropAccess(p,a,b)       (p)->lpVtbl->HrSetPropAccess(p,a,b)
00269 #define IPropData_HrGetPropAccess(p,a,b)       (p)->lpVtbl->HrGetPropAccess(p,a,b)
00270 #define IPropData_HrAddObjProps(p,a,b)         (p)->lpVtbl->HrAddObjProps(p,a,b)
00271 #endif
00272 
00273 #ifdef __cplusplus
00274 }
00275 #endif
00276 
00277 #endif /* MAPIUTIL_H_ */

Generated on Sat May 26 2012 04:30:26 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.