Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmapiutil.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
1.7.6.1
|