summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/mapi/include/mapival.h
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/mapi/include/mapival.h')
-rw-r--r--comm/mailnews/mapi/include/mapival.h1975
1 files changed, 1975 insertions, 0 deletions
diff --git a/comm/mailnews/mapi/include/mapival.h b/comm/mailnews/mapi/include/mapival.h
new file mode 100644
index 0000000000..0e034100d5
--- /dev/null
+++ b/comm/mailnews/mapi/include/mapival.h
@@ -0,0 +1,1975 @@
+/*
+ * M A P I V A L . H
+ *
+ * Macros used to validate parameters on standard MAPI object methods.
+ * Used in conjunction with routines found in MAPIU.DLL.
+ *
+ * Copyright (c) 2009 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef _INC_VALIDATE
+#define _INC_VALIDATE
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef MAPIUTIL_H
+#include <mapiutil.h>
+#endif
+#include <stddef.h>
+#include <stdarg.h>
+
+
+#define MAKE_ENUM(Method, Interface) Interface##_##Method
+
+typedef enum _tagMethods
+{
+/* IUnknown */
+ MAKE_ENUM(QueryInterface, IUnknown) = 0,
+ MAKE_ENUM(AddRef, IUnknown), /* For completness */
+ MAKE_ENUM(Release, IUnknown), /* For completness */
+
+/* IMAPIProps */
+ MAKE_ENUM(GetLastError, IMAPIProp),
+ MAKE_ENUM(SaveChanges, IMAPIProp),
+ MAKE_ENUM(GetProps, IMAPIProp),
+ MAKE_ENUM(GetPropList, IMAPIProp),
+ MAKE_ENUM(OpenProperty, IMAPIProp),
+ MAKE_ENUM(SetProps, IMAPIProp),
+ MAKE_ENUM(DeleteProps, IMAPIProp),
+ MAKE_ENUM(CopyTo, IMAPIProp),
+ MAKE_ENUM(CopyProps, IMAPIProp),
+ MAKE_ENUM(GetNamesFromIDs, IMAPIProp),
+ MAKE_ENUM(GetIDsFromNames, IMAPIProp),
+
+/* IMAPITable */
+ MAKE_ENUM(GetLastError, IMAPITable),
+ MAKE_ENUM(Advise, IMAPITable),
+ MAKE_ENUM(Unadvise, IMAPITable),
+ MAKE_ENUM(GetStatus, IMAPITable),
+ MAKE_ENUM(SetColumns, IMAPITable),
+ MAKE_ENUM(QueryColumns, IMAPITable),
+ MAKE_ENUM(GetRowCount, IMAPITable),
+ MAKE_ENUM(SeekRow, IMAPITable),
+ MAKE_ENUM(SeekRowApprox, IMAPITable),
+ MAKE_ENUM(QueryPosition, IMAPITable),
+ MAKE_ENUM(FindRow, IMAPITable),
+ MAKE_ENUM(Restrict, IMAPITable),
+ MAKE_ENUM(CreateBookmark, IMAPITable),
+ MAKE_ENUM(FreeBookmark, IMAPITable),
+ MAKE_ENUM(SortTable, IMAPITable),
+ MAKE_ENUM(QuerySortOrder, IMAPITable),
+ MAKE_ENUM(QueryRows, IMAPITable),
+ MAKE_ENUM(Abort, IMAPITable),
+ MAKE_ENUM(ExpandRow, IMAPITable),
+ MAKE_ENUM(CollapseRow, IMAPITable),
+ MAKE_ENUM(WaitForCompletion, IMAPITable),
+ MAKE_ENUM(GetCollapseState, IMAPITable),
+ MAKE_ENUM(SetCollapseState, IMAPITable),
+
+/* IMAPIContainer */
+ MAKE_ENUM(GetContentsTable, IMAPIContainer),
+ MAKE_ENUM(GetHierarchyTable, IMAPIContainer),
+ MAKE_ENUM(OpenEntry, IMAPIContainer),
+ MAKE_ENUM(SetSearchCriteria, IMAPIContainer),
+ MAKE_ENUM(GetSearchCriteria, IMAPIContainer),
+
+/* IABContainer */
+ MAKE_ENUM(CreateEntry, IABContainer),
+ MAKE_ENUM(CopyEntries, IABContainer),
+ MAKE_ENUM(DeleteEntries, IABContainer),
+ MAKE_ENUM(ResolveNames, IABContainer),
+
+/* IDistList */
+ MAKE_ENUM(CreateEntry, IDistList),
+ MAKE_ENUM(CopyEntries, IDistList),
+ MAKE_ENUM(DeleteEntries, IDistList),
+ MAKE_ENUM(ResolveNames, IDistList),
+
+/* IMAPIFolder */
+ MAKE_ENUM(CreateMessage, IMAPIFolder),
+ MAKE_ENUM(CopyMessages, IMAPIFolder),
+ MAKE_ENUM(DeleteMessages, IMAPIFolder),
+ MAKE_ENUM(CreateFolder, IMAPIFolder),
+ MAKE_ENUM(CopyFolder, IMAPIFolder),
+ MAKE_ENUM(DeleteFolder, IMAPIFolder),
+ MAKE_ENUM(SetReadFlags, IMAPIFolder),
+ MAKE_ENUM(GetMessageStatus, IMAPIFolder),
+ MAKE_ENUM(SetMessageStatus, IMAPIFolder),
+ MAKE_ENUM(SaveContentsSort, IMAPIFolder),
+ MAKE_ENUM(EmptyFolder, IMAPIFolder),
+
+/* IMsgStore */
+ MAKE_ENUM(Advise, IMsgStore),
+ MAKE_ENUM(Unadvise, IMsgStore),
+ MAKE_ENUM(CompareEntryIDs, IMsgStore),
+ MAKE_ENUM(OpenEntry, IMsgStore),
+ MAKE_ENUM(SetReceiveFolder, IMsgStore),
+ MAKE_ENUM(GetReceiveFolder, IMsgStore),
+ MAKE_ENUM(GetReceiveFolderTable, IMsgStore),
+ MAKE_ENUM(StoreLogoff, IMsgStore),
+ MAKE_ENUM(AbortSubmit, IMsgStore),
+ MAKE_ENUM(GetOutgoingQueue, IMsgStore),
+ MAKE_ENUM(SetLockState, IMsgStore),
+ MAKE_ENUM(FinishedMsg, IMsgStore),
+ MAKE_ENUM(NotifyNewMail, IMsgStore),
+
+/* IMessage */
+ MAKE_ENUM(GetAttachmentTable, IMessage),
+ MAKE_ENUM(OpenAttach, IMessage),
+ MAKE_ENUM(CreateAttach, IMessage),
+ MAKE_ENUM(DeleteAttach, IMessage),
+ MAKE_ENUM(GetRecipientTable, IMessage),
+ MAKE_ENUM(ModifyRecipients, IMessage),
+ MAKE_ENUM(SubmitMessage, IMessage),
+ MAKE_ENUM(SetReadFlag, IMessage),
+
+
+/* IABProvider */
+ MAKE_ENUM(Shutdown, IABProvider),
+ MAKE_ENUM(Logon, IABProvider),
+
+/* IABLogon */
+ MAKE_ENUM(GetLastError, IABLogon),
+ MAKE_ENUM(Logoff, IABLogon),
+ MAKE_ENUM(OpenEntry, IABLogon),
+ MAKE_ENUM(CompareEntryIDs, IABLogon),
+ MAKE_ENUM(Advise, IABLogon),
+ MAKE_ENUM(Unadvise, IABLogon),
+ MAKE_ENUM(OpenStatusEntry, IABLogon),
+ MAKE_ENUM(OpenTemplateID, IABLogon),
+ MAKE_ENUM(GetOneOffTable, IABLogon),
+ MAKE_ENUM(PrepareRecips, IABLogon),
+
+/* IXPProvider */
+ MAKE_ENUM(Shutdown, IXPProvider),
+ MAKE_ENUM(TransportLogon, IXPProvider),
+
+/* IXPLogon */
+ MAKE_ENUM(AddressTypes, IXPLogon),
+ MAKE_ENUM(RegisterOptions, IXPLogon),
+ MAKE_ENUM(TransportNotify, IXPLogon),
+ MAKE_ENUM(Idle, IXPLogon),
+ MAKE_ENUM(TransportLogoff, IXPLogon),
+ MAKE_ENUM(SubmitMessage, IXPLogon),
+ MAKE_ENUM(EndMessage, IXPLogon),
+ MAKE_ENUM(Poll, IXPLogon),
+ MAKE_ENUM(StartMessage, IXPLogon),
+ MAKE_ENUM(OpenStatusEntry, IXPLogon),
+ MAKE_ENUM(ValidateState, IXPLogon),
+ MAKE_ENUM(FlushQueues, IXPLogon),
+
+/* IMSProvider */
+ MAKE_ENUM(Shutdown, IMSProvider),
+ MAKE_ENUM(Logon, IMSProvider),
+ MAKE_ENUM(SpoolerLogon, IMSProvider),
+ MAKE_ENUM(CompareStoreIDs, IMSProvider),
+
+/* IMSLogon */
+ MAKE_ENUM(GetLastError, IMSLogon),
+ MAKE_ENUM(Logoff, IMSLogon),
+ MAKE_ENUM(OpenEntry, IMSLogon),
+ MAKE_ENUM(CompareEntryIDs, IMSLogon),
+ MAKE_ENUM(Advise, IMSLogon),
+ MAKE_ENUM(Unadvise, IMSLogon),
+ MAKE_ENUM(OpenStatusEntry, IMSLogon),
+
+/* IMAPIControl */
+ MAKE_ENUM(GetLastError, IMAPIControl),
+ MAKE_ENUM(Activate, IMAPIControl),
+ MAKE_ENUM(GetState, IMAPIControl),
+
+/* IMAPIStatus */
+ MAKE_ENUM(ValidateState, IMAPIStatus),
+ MAKE_ENUM(SettingsDialog, IMAPIStatus),
+ MAKE_ENUM(ChangePassword, IMAPIStatus),
+ MAKE_ENUM(FlushQueues, IMAPIStatus),
+
+/* IStream */
+ MAKE_ENUM(_Read, IStream),
+ MAKE_ENUM(_Write, IStream),
+ MAKE_ENUM(Seek, IStream),
+ MAKE_ENUM(SetSize, IStream),
+ MAKE_ENUM(CopyTo, IStream),
+ MAKE_ENUM(Commit, IStream),
+ MAKE_ENUM(Revert, IStream),
+ MAKE_ENUM(LockRegion, IStream),
+ MAKE_ENUM(UnlockRegion, IStream),
+ MAKE_ENUM(Stat, IStream),
+ MAKE_ENUM(Clone, IStream),
+
+/* IMAPIAdviseSink */
+ MAKE_ENUM(OnNotify, IMAPIAdviseSink),
+
+} METHODS;
+
+
+/* Macro wrappers to hide the Validate function return handling */
+#if defined(_AMD64_) || defined(_X86_)
+#ifdef __cplusplus
+
+/* C++ methods can't take the address of the This pointer, so we must
+ use the first parameter instead */
+
+#define ValidateParameters(eMethod, First) \
+ { HRESULT _hr_; \
+ _hr_ = __CPPValidateParameters(eMethod, (LPVOID) &First); \
+ if (HR_FAILED(_hr_)) return (_hr_); }
+
+#define UlValidateParameters(eMethod, First) \
+ { HRESULT _hr_; \
+ _hr_ = __CPPValidateParameters(eMethod, &First); \
+ if (HR_FAILED(_hr_)) return (ULONG) (_hr_); }
+
+/* Methods called by MAPI should have correct parameters
+ - just assert in Debug to check */
+#define CheckParameters(eMethod, First) \
+ AssertSz(HR_SUCCEEDED(__CPPValidateParameters(eMethod, &First)), "Parameter validation failed for method called by MAPI!")
+
+
+#else /* __cplusplus */
+
+/* For methods that will be called by clients
+ - validate always */
+
+#define ValidateParameters(eMethod, ppThis) \
+ { HRESULT _hr_; \
+ _hr_ = __ValidateParameters(eMethod, ppThis); \
+ if (HR_FAILED(_hr_)) return (_hr_); }
+
+#define UlValidateParameters(eMethod, ppThis) \
+ { HRESULT _hr_; \
+ _hr_ = __ValidateParameters(eMethod, ppThis); \
+ if (HR_FAILED(_hr_)) return (ULONG) (_hr_); }
+
+/* Methods called by MAPI should have correct parameters
+ - just assert in Debug to check */
+#define CheckParameters(eMethod, ppThis) \
+ AssertSz(HR_SUCCEEDED(__ValidateParameters(eMethod, ppThis)), "Parameter validation failed for method called by MAPI!")
+
+#endif /* __cplusplus */
+#endif /* _X86_ || _AMD64_ */
+
+/* Prototypes for functions used to validate complex parameters.
+ */
+#define FBadPropVal( lpPropVal) (FAILED(ScCountProps( 1, lpPropVal, NULL)))
+
+#define FBadRgPropVal( lpPropVal, cValues) \
+ (FAILED(ScCountProps( cValues, lpPropVal, NULL)))
+
+#define FBadAdrList( lpAdrList) \
+ ( AssertSz( ( offsetof( ADRLIST, cEntries) \
+ == offsetof( SRowSet, cRows)) \
+ && ( offsetof( ADRLIST, aEntries) \
+ == offsetof( SRowSet, aRow)) \
+ && ( offsetof( ADRENTRY, cValues) \
+ == offsetof( SRow, cValues)) \
+ && ( offsetof( ADRENTRY, rgPropVals) \
+ == offsetof( SRow, lpProps)) \
+ , "ADRLIST doesn't match SRowSet") \
+ || FBadRowSet( (LPSRowSet) lpAdrList))
+
+STDAPI_(BOOL)
+FBadRglpszW(__in LPWSTR FAR *lppszW,
+ ULONG cStrings);
+
+STDAPI_(BOOL)
+FBadRowSet( LPSRowSet lpRowSet);
+
+STDAPI_(BOOL)
+FBadRglpNameID( LPMAPINAMEID FAR * lppNameId,
+ ULONG cNames);
+
+STDAPI_(BOOL)
+FBadEntryList( LPENTRYLIST lpEntryList);
+
+
+/* BAD_STANDARD_OBJ
+ *
+ * This macro insures that the object is a writable object of the correct size
+ * and that this method belongs to the object.
+ *
+ * NOTES ON USE!
+ * This depends upon using the standard method of declaring the object
+ * interface.
+ *
+ * prefix is the method prefix you chose when declaring the object interface.
+ * method is the standard method name of the calling method.
+ * lpVtbl is the name of the lpVtbl element of your object.
+ */
+#define BAD_STANDARD_OBJ( lpObj, prefix, method, lpVtbl) \
+ ( IsBadWritePtr( (lpObj), sizeof(*lpObj)) \
+ || IsBadReadPtr( (void *) &(lpObj->lpVtbl->method), sizeof(LPVOID)) \
+ ||( ( LPVOID) (lpObj->lpVtbl->method) != (LPVOID) (prefix##method)))
+
+
+#define FBadUnknown( lpObj ) \
+ ( IsBadReadPtr( (lpObj), sizeof(LPVOID) ) \
+ || IsBadReadPtr( (lpObj)->lpVtbl, 3 * sizeof(LPUNKNOWN) ) \
+ || IsBadCodePtr( (FARPROC)(lpObj)->lpVtbl->QueryInterface ))
+
+/*
+ * IUnknown
+ */
+
+
+/*
+ * QueryInterface
+ */
+#define FBadQueryInterface( lpObj, riid, ppvObj) \
+ ( IsBadReadPtr( riid, sizeof(IID)) \
+ || IsBadWritePtr( ppvObj, sizeof(LPVOID)))
+
+
+/*
+ * AddRef
+ * No parameter validation required.
+ */
+#define FBadAddRef( lpObj) FALSE
+
+
+/*
+ * Release
+ * No parameter validation required.
+ */
+#define FBadRelease( lpObj) FALSE
+
+
+/*
+ * GetLastError
+ */
+#define FBadGetLastError( lpObj, hResult, ulFlags, lppMAPIError )\
+ (IsBadWritePtr( lppMAPIError, sizeof(LPMAPIERROR)))
+
+/*
+ * IMAPIProp
+ */
+
+
+/*
+ * SaveChanges
+ * No parameter validation required.
+ */
+#define FBadSaveChanges( lpObj, ulFlags) FALSE
+
+
+/*
+ * GetProps
+ */
+#define FBadGetProps( lpObj, lpPTagA, lpcValues, lppPropArray) \
+ ( ( lpPTagA \
+ && ( IsBadReadPtr( lpPTagA, sizeof(ULONG)) \
+ || IsBadReadPtr( lpPTagA, (UINT)( (lpPTagA->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || IsBadWritePtr( lpcValues, sizeof(ULONG)) \
+ || IsBadWritePtr( lppPropArray, sizeof(LPSPropValue)))
+
+
+/*
+ * GetPropList
+ */
+#define FBadGetPropList( lpObj, lppPTagA) \
+ (IsBadWritePtr( lppPTagA, sizeof(LPSPropTagArray FAR *)))
+
+
+/*
+ * OpenProperty
+ */
+#define FBadOpenProperty( lpObj, ulPropTag, lpiid, ulInterfaceOptions, ulFlags \
+ , lppUnk) \
+ ( IsBadReadPtr( lpiid, sizeof(IID)) \
+ || IsBadWritePtr( lppUnk, sizeof (LPUNKNOWN FAR *)))
+
+
+/*
+ * SetProps
+ */
+#define FBadSetProps( lpObj, cValues, lpPropArray, lppProblems) \
+ ( FBadRgPropVal( lpPropArray, (UINT) cValues) \
+ || ( lppProblems \
+ && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
+
+
+/*
+ * DeleteProps
+ */
+#define FBadDeleteProps( lpObj, lpPTagA, lppProblems) \
+ ( ( !lpPTagA \
+ || ( IsBadReadPtr( lpPTagA, sizeof(ULONG)) \
+ || IsBadReadPtr( lpPTagA, (UINT)( (lpPTagA->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || ( lppProblems \
+ && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
+
+
+/*
+ * CopyTo
+ */
+#define FBadCopyTo( lpIPDAT, ciidExclude, rgiidExclude, lpExcludeProps \
+ , ulUIParam, lpProgress, lpInterface, lpDestObj \
+ , ulFlags, lppProblems) \
+ ( ( ciidExclude \
+ && ( IsBadReadPtr( rgiidExclude, (UINT)(ciidExclude * sizeof(IID))))) \
+ || ( lpExcludeProps \
+ && ( IsBadReadPtr( lpExcludeProps, sizeof(ULONG)) \
+ || IsBadReadPtr( lpExcludeProps \
+ , (UINT)( (lpExcludeProps->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || (lpProgress && FBadUnknown( lpProgress )) \
+ || (lpInterface && IsBadReadPtr( lpInterface, sizeof(IID))) \
+ || IsBadReadPtr( lpDestObj, sizeof(LPVOID)) \
+ || ( lppProblems \
+ && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
+
+
+/*
+ * CopyProps
+ */
+#define FBadCopyProps( lpIPDAT, lpPropTagArray \
+ , ulUIParam, lpProgress, lpInterface, lpDestObj \
+ , ulFlags, lppProblems) \
+ ( ( lpPropTagArray \
+ && ( IsBadReadPtr( lpPropTagArray, sizeof(ULONG)) \
+ || IsBadReadPtr( lpPropTagArray \
+ , (UINT)( (lpPropTagArray->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || (lpProgress && FBadUnknown( lpProgress )) \
+ || (lpInterface && IsBadReadPtr( lpInterface, sizeof(IID))) \
+ || IsBadReadPtr( lpDestObj, sizeof(LPVOID)) \
+ || ( lppProblems \
+ && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
+
+
+
+/*
+ * GetNamesFromIDs
+ */
+#define FBadGetNamesFromIDs( lpIPDAT, lppPropTags, lpPropSetGuid, ulFlags, \
+ lpcPropNames, lpppPropNames) \
+ ( IsBadReadPtr( lppPropTags, sizeof(LPSPropTagArray)) \
+ || ( lpPropSetGuid && IsBadReadPtr( lpPropSetGuid, sizeof(GUID))) \
+ || ( *lppPropTags \
+ && ( IsBadReadPtr( *lppPropTags, sizeof(ULONG)) \
+ || IsBadReadPtr( *lppPropTags \
+ , (UINT)( ( ( *lppPropTags)->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || IsBadWritePtr( lpcPropNames, sizeof (ULONG)) \
+ || IsBadWritePtr( lpppPropNames, sizeof (LPVOID FAR *)))
+
+
+
+/*
+ * GetNamesFromIDs
+ */
+#define FBadGetIDsFromNames( lpIPDAT, cPropNames, lppPropNames, ulFlags \
+ , lppPropTags) \
+ ( (cPropNames && FBadRglpNameID( lppPropNames, cPropNames)) \
+ || IsBadWritePtr( lppPropTags, sizeof(LPULONG FAR *)))
+
+
+STDAPI_(ULONG)
+FBadRestriction( LPSRestriction lpres );
+
+STDAPI_(ULONG)
+FBadPropTag( ULONG ulPropTag );
+
+STDAPI_(ULONG)
+FBadRow( LPSRow lprow );
+
+STDAPI_(ULONG)
+FBadProp( LPSPropValue lpprop );
+
+STDAPI_(ULONG)
+FBadSortOrderSet( LPSSortOrderSet lpsos );
+
+STDAPI_(ULONG)
+FBadColumnSet( LPSPropTagArray lpptaCols );
+
+/* Validation function
+
+ The eMethod parameter tells us which internal validation to perform.
+
+ The ppThis parameter tells us where the stack is, so we can access the other
+ parameters.
+
+ Becuase of this *magic* we MUST obtain the pointer to the This pointer in
+ the method function.
+
+*/
+
+#if defined(_WIN64) || defined(_WIN32)
+#define BASED_STACK
+#else
+#error "Unknown Platform: MAPI is currently supported on Win32 and Win64"
+#endif
+
+#if defined(_WIN64) || defined(_WIN32)
+HRESULT STDAPICALLTYPE
+#else
+#error "Unknown Platform: MAPI is currently supported on Win32 and Win64"
+#endif
+
+__CPPValidateParameters(METHODS eMethod, const LPVOID ppFirst);
+
+#if defined(_WIN64) || defined(_WIN32)
+HRESULT STDAPICALLTYPE
+#else
+#error "Unknown Platform: MAPI is currently supported on Win32 and Win64"
+#endif
+__ValidateParameters(METHODS eMethod, LPVOID ppThis);
+
+#ifdef _MAC
+#define STDAPIVCALLTYPE __cdecl
+#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
+#define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE
+#endif /* _MAC */
+
+/* Macro wrappers for platform independent validation */
+
+#if defined(_AMD64_) || defined(_X86_)
+
+#define ArgShiftN (1 + (sizeof(DWORD_PTR)>>2))
+#define ArgSize(T) ((sizeof(T)+sizeof(DWORD_PTR)-1)>>ArgShiftN)
+
+#define MakeArg1(idx, a1) memcpy(__rgArgs+idx, &a1, ArgSize(a1)*sizeof(DWORD_PTR))
+#define MakeArg2(idx, a1, a2) MakeArg1(idx, a1); MakeArg1(idx+ArgSize(a1), a2)
+#define MakeArg3(idx, a1, a2, a3) MakeArg1(idx, a1); MakeArg2(idx+ArgSize(a1), a2, a3)
+#define MakeArg4(idx, a1, a2, a3, a4) MakeArg1(idx, a1); MakeArg3(idx+ArgSize(a1), a2, a3, a4)
+#define MakeArg5(idx, a1, a2, a3, a4, a5) MakeArg1(idx, a1); MakeArg4(idx+ArgSize(a1), a2, a3, a4, a5)
+#define MakeArg6(idx, a1, a2, a3, a4, a5, a6) MakeArg1(idx, a1); MakeArg5(idx+ArgSize(a1), a2, a3, a4, a5, a6)
+#define MakeArg7(idx, a1, a2, a3, a4, a5, a6, a7) MakeArg1(idx, a1); MakeArg6(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7)
+#define MakeArg8(idx, a1, a2, a3, a4, a5, a6, a7, a8) MakeArg1(idx, a1); MakeArg7(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8)
+#define MakeArg9(idx, a1, a2, a3, a4, a5, a6, a7, a8, a9) MakeArg1(idx, a1); MakeArg8(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8, a9)
+#define MakeArg10(idx, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) MakeArg1(idx, a1); MakeArg9(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8, a9, a10)
+#define MakeArg11(idx, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) MakeArg1(idx, a1); MakeArg10(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
+#define MakeArg12(idx, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) MakeArg1(idx, a1); MakeArg11(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
+#define MakeArg13(idx, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) MakeArg1(idx, a1); MakeArg12(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
+#define MakeArg14(idx, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) MakeArg1(idx, a1); MakeArg13(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
+#define MakeArg15(idx, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) MakeArg1(idx, a1); MakeArg14(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
+#define MakeArg16(idx, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) MakeArg1(idx, a1); MakeArg15(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)
+
+#define MakeArray1(a1) \
+ DWORD_PTR __rgArgs[ArgSize(a1)]; \
+ MakeArg1(0, a1)
+
+#define MakeArray2(a1, a2) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2)]; \
+ MakeArg2(0, a1, a2)
+
+#define MakeArray3(a1, a2, a3) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3)]; \
+ MakeArg3(0, a1, a2, a3)
+
+#define MakeArray4(a1, a2, a3, a4) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4)]; \
+ MakeArg4(0, a1, a2, a3, a4)
+
+#define MakeArray5(a1, a2, a3, a4, a5) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5)]; \
+ MakeArg5(0, a1, a2, a3, a4, a5)
+
+#define MakeArray6(a1, a2, a3, a4, a5, a6) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6)]; \
+ MakeArg6(0, a1, a2, a3, a4, a5, a6)
+
+#define MakeArray7(a1, a2, a3, a4, a5, a6, a7) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7)]; \
+ MakeArg7(0, a1, a2, a3, a4, a5, a6, a7)
+
+#define MakeArray8(a1, a2, a3, a4, a5, a6, a7, a8) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8)]; \
+ MakeArg8(0, a1, a2, a3, a4, a5, a6, a7, a8)
+
+#define MakeArray9(a1, a2, a3, a4, a5, a6, a7, a8, a9) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9)]; \
+ MakeArg9(0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
+
+#define MakeArray10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9) + ArgSize(a10)]; \
+ MakeArg10(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
+
+#define MakeArray11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9) + ArgSize(a10) + ArgSize(a11)]; \
+ MakeArg11(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
+
+#define MakeArray12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9) + ArgSize(a10) + ArgSize(a11) + ArgSize(a12)]; \
+ MakeArg12(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
+
+#define MakeArray13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9) + ArgSize(a10) + ArgSize(a11) + ArgSize(a12) + ArgSize(a13)]; \
+ MakeArg13(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
+
+#define MakeArray14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9) + ArgSize(a10) + ArgSize(a11) + ArgSize(a12) + ArgSize(a13) + ArgSize(a14)]; \
+ MakeArg14(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
+
+#define MakeArray15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9) + ArgSize(a10) + ArgSize(a11) + ArgSize(a12) + ArgSize(a13) + ArgSize(a14) + ArgSize(a15)]; \
+ MakeArg15(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
+
+#define MakeArray16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) \
+ DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9) + ArgSize(a10) + ArgSize(a11) + ArgSize(a12) + ArgSize(a13) + ArgSize(a14) + ArgSize(a15) + ArgSize(a16)]; \
+ MakeArg16(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)
+
+
+
+#define ValidateParameters1( m, a1 )
+#define ValidateParameters2( m, a1, a2 ) \
+ { HRESULT _hr_; \
+ MakeArray1(a2); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters3( m, a1, a2, a3 ) \
+ { HRESULT _hr_; \
+ MakeArray2(a2, a3); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters4( m, a1, a2, a3, a4 ) \
+ { HRESULT _hr_; \
+ MakeArray3(a2, a3, a4); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters5( m, a1, a2, a3, a4, a5 ) \
+ { HRESULT _hr_; \
+ MakeArray4(a2, a3, a4, a5); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ { HRESULT _hr_; \
+ MakeArray5(a2, a3, a4, a5, a6); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ { HRESULT _hr_; \
+ MakeArray6(a2, a3, a4, a5, a6, a7); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ { HRESULT _hr_; \
+ MakeArray7(a2, a3, a4, a5, a6, a7, a8); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ { HRESULT _hr_; \
+ MakeArray8(a2, a3, a4, a5, a6, a7, a8, a9); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ { HRESULT _hr_; \
+ MakeArray9(a2, a3, a4, a5, a6, a7, a8, a9, a10); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ { HRESULT _hr_; \
+ MakeArray10(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ { HRESULT _hr_; \
+ MakeArray11(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ { HRESULT _hr_; \
+ MakeArray12(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ { HRESULT _hr_; \
+ MakeArray13(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ { HRESULT _hr_; \
+ MakeArray14(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+#define ValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ { HRESULT _hr_; \
+ MakeArray15(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
+
+#define UlValidateParameters1( m, a1 )
+#define UlValidateParameters2( m, a1, a2 ) \
+ { HRESULT _hr_; \
+ MakeArray1(a2); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters3( m, a1, a2, a3 ) \
+ { HRESULT _hr_; \
+ MakeArray2(a2, a3); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters4( m, a1, a2, a3, a4 ) \
+ { HRESULT _hr_; \
+ MakeArray3(a2, a3, a4); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters5( m, a1, a2, a3, a4, a5 ) \
+ { HRESULT _hr_; \
+ MakeArray4(a2, a3, a4, a5); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ { HRESULT _hr_; \
+ MakeArray5(a2, a3, a4, a5, a6); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ { HRESULT _hr_; \
+ MakeArray6(a2, a3, a4, a5, a6, a7); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ { HRESULT _hr_; \
+ MakeArray7(a2, a3, a4, a5, a6, a7, a8); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ { HRESULT _hr_; \
+ MakeArray8(a2, a3, a4, a5, a6, a7, a8, a9); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ { HRESULT _hr_; \
+ MakeArray9(a2, a3, a4, a5, a6, a7, a8, a9, a10); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ { HRESULT _hr_; \
+ MakeArray10(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ { HRESULT _hr_; \
+ MakeArray11(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ { HRESULT _hr_; \
+ MakeArray12(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ { HRESULT _hr_; \
+ MakeArray13(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ { HRESULT _hr_; \
+ MakeArray14(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+#define UlValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ { HRESULT _hr_; \
+ MakeArray15(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); \
+ _hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
+
+#ifdef DEBUG
+#define CheckParameters1( m, a1 )
+#define CheckParameters2( m, a1, a2 ) \
+ { \
+ MakeArray1(a2); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters3( m, a1, a2, a3 ) \
+ { \
+ MakeArray2(a2, a3); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters4( m, a1, a2, a3, a4 ) \
+ { \
+ MakeArray3(a2, a3, a4); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters5( m, a1, a2, a3, a4, a5 ) \
+ { \
+ MakeArray4(a2, a3, a4, a5); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ { \
+ MakeArray5(a2, a3, a4, a5, a6); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ { \
+ MakeArray6(a2, a3, a4, a5, a6, a7); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ { \
+ MakeArray7(a2, a3, a4, a5, a6, a7, a8); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ { \
+ MakeArray8(a2, a3, a4, a5, a6, a7, a8, a9); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ { \
+ MakeArray9(a2, a3, a4, a5, a6, a7, a8, a9, a10); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ { \
+ MakeArray10(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ { \
+ MakeArray11(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ { \
+ MakeArray12(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ { \
+ MakeArray13(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ { \
+ MakeArray14(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#define CheckParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ { \
+ MakeArray15(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); \
+ AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
+#else /* DEBUG */
+#define CheckParameters1( m, a1 )
+#define CheckParameters2( m, a1, a2 )
+#define CheckParameters3( m, a1, a2, a3 )
+#define CheckParameters4( m, a1, a2, a3, a4 )
+#define CheckParameters5( m, a1, a2, a3, a4, a5 )
+#define CheckParameters6( m, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters7( m, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define CheckParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define CheckParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
+#define CheckParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 )
+#define CheckParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 )
+#define CheckParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define CheckParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 )
+#define CheckParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 )
+#define CheckParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 )
+#endif /* DEBUG */
+#else /* !_AMD64_ && !_X86_ */
+#define ValidateParms(x) { HRESULT _hr_ = HrValidateParametersV x; if (HR_FAILED(_hr_)) return (_hr_); }
+#define UlValidateParms(x) { HRESULT _hr_ = HrValidateParametersV x; if (HR_FAILED(_hr_)) return (ULONG)(_hr_); }
+#define CheckParms(x) AssertSz(HR_SUCCEEDED( HrValidateParametersV x ), "Parameter validation failed for method called by MAPI!")
+
+#define ValidateParameters1( m, a1 ) \
+ ValidateParms( ( m, a1 ) )
+#define ValidateParameters2( m, a1, a2 ) \
+ ValidateParms( ( m, a1, a2 ))
+#define ValidateParameters3( m, a1, a2, a3 ) \
+ ValidateParms( ( m, a1, a2, a3 ))
+#define ValidateParameters4( m, a1, a2, a3, a4 ) \
+ ValidateParms( ( m, a1, a2, a3, a4 ))
+#define ValidateParameters5( m, a1, a2, a3, a4, a5 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5 ))
+#define ValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6 ))
+#define ValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
+#define ValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
+#define ValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
+#define ValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
+#define ValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
+#define ValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
+#define ValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
+#define ValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
+#define ValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
+#define ValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
+
+#define UlValidateParameters1( m, a1 ) \
+ UlValidateParms( ( m, a1 ) )
+#define UlValidateParameters2( m, a1, a2 ) \
+ UlValidateParms( ( m, a1, a2 ))
+#define UlValidateParameters3( m, a1, a2, a3 ) \
+ UlValidateParms( ( m, a1, a2, a3 ))
+#define UlValidateParameters4( m, a1, a2, a3, a4 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4 ))
+#define UlValidateParameters5( m, a1, a2, a3, a4, a5 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5 ))
+#define UlValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6 ))
+#define UlValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
+#define UlValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
+#define UlValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
+#define UlValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
+#define UlValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
+#define UlValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
+#define UlValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
+#define UlValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
+#define UlValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
+#define UlValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
+
+#define CheckParameters1( m, a1 ) \
+ CheckParms( ( m, a1 ) )
+#define CheckParameters2( m, a1, a2 ) \
+ CheckParms( ( m, a1, a2 ))
+#define CheckParameters3( m, a1, a2, a3 ) \
+ CheckParms( ( m, a1, a2, a3 ))
+#define CheckParameters4( m, a1, a2, a3, a4 ) \
+ CheckParms( ( m, a1, a2, a3, a4 ))
+#define CheckParameters5( m, a1, a2, a3, a4, a5 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5 ))
+#define CheckParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6 ))
+#define CheckParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
+#define CheckParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
+#define CheckParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
+#define CheckParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
+#define CheckParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
+#define CheckParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
+#define CheckParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
+#define CheckParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
+#define CheckParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
+#define CheckParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
+
+#endif /* _AMD64_ || _X86_ */
+
+
+/*
+ * M A P I P A R A M E T E R V A L I D A T I O N M A C R O S
+ */
+
+
+/* IUnknown */
+
+#define Validate_IUnknown_QueryInterface( a1, a2, a3 ) \
+ ValidateParameters3( IUnknown_QueryInterface, a1, a2, a3 )
+#define UlValidate_IUnknown_QueryInterface( a1, a2, a3 ) \
+ UlValidateParameters3( IUnknown_QueryInterface, a1, a2, a3 )
+#define CheckParameters_IUnknown_QueryInterface( a1, a2, a3 ) \
+ CheckParameters3( IUnknown_QueryInterface, a1, a2, a3 )
+
+#define Validate_IUnknown_AddRef( a1 ) \
+ ValidateParameters1( IUnknown_AddRef, a1 )
+#define UlValidate_IUnknown_AddRef( a1 ) \
+ UlValidateParameters1( IUnknown_AddRef, a1 )
+#define CheckParameters_IUnknown_AddRef( a1 ) \
+ CheckParameters1( IUnknown_AddRef, a1 )
+
+#define Validate_IUnknown_Release( a1 ) \
+ ValidateParameters1( IUnknown_Release, a1 )
+#define UlValidate_IUnknown_Release( a1 ) \
+ UlValidateParameters1( IUnknown_Release, a1 )
+#define CheckParameters_IUnknown_Release( a1 ) \
+ CheckParameters1( IUnknown_Release, a1 )
+
+
+/* IMAPIProp */
+
+#define Validate_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IMAPIProp_SaveChanges( a1, a2 ) \
+ ValidateParameters2( IMAPIProp_SaveChanges, a1, a2 )
+#define UlValidate_IMAPIProp_SaveChanges( a1, a2 ) \
+ UlValidateParameters2( IMAPIProp_SaveChanges, a1, a2 )
+#define CheckParameters_IMAPIProp_SaveChanges( a1, a2 ) \
+ CheckParameters2( IMAPIProp_SaveChanges, a1, a2 )
+
+#define Validate_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPIProp_GetPropList( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
+#define UlValidate_IMAPIProp_GetPropList( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
+#define CheckParameters_IMAPIProp_GetPropList( a1, a2, a3 ) \
+ CheckParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
+
+#define Validate_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
+#define UlValidate_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
+
+#define Validate_IMAPIProp_DeleteProps( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
+#define UlValidate_IMAPIProp_DeleteProps( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
+#define CheckParameters_IMAPIProp_DeleteProps( a1, a2, a3 ) \
+ CheckParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
+
+#define Validate_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ ValidateParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
+#define UlValidate_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ UlValidateParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
+#define CheckParameters_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ CheckParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
+
+#define Validate_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ ValidateParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define UlValidate_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ UlValidateParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define CheckParameters_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ CheckParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
+
+#define Validate_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
+
+
+/* IMAPITable */
+
+#define Validate_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_Advise( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_Advise( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_Advise( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_Unadvise( a1, a2 ) \
+ ValidateParameters2( IMAPITable_Unadvise, a1, a2 )
+#define UlValidate_IMAPITable_Unadvise( a1, a2 ) \
+ UlValidateParameters2( IMAPITable_Unadvise, a1, a2 )
+#define CheckParameters_IMAPITable_Unadvise( a1, a2 ) \
+ CheckParameters2( IMAPITable_Unadvise, a1, a2 )
+
+#define Validate_IMAPITable_GetStatus( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_GetStatus, a1, a2, a3 )
+#define UlValidate_IMAPITable_GetStatus( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_GetStatus, a1, a2, a3 )
+#define CheckParameters_IMAPITable_GetStatus( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_GetStatus, a1, a2, a3 )
+
+#define Validate_IMAPITable_SetColumns( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_SetColumns, a1, a2, a3 )
+#define UlValidate_IMAPITable_SetColumns( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_SetColumns, a1, a2, a3 )
+#define CheckParameters_IMAPITable_SetColumns( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_SetColumns, a1, a2, a3 )
+
+#define Validate_IMAPITable_QueryColumns( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
+#define UlValidate_IMAPITable_QueryColumns( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
+#define CheckParameters_IMAPITable_QueryColumns( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
+
+#define Validate_IMAPITable_GetRowCount( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
+#define UlValidate_IMAPITable_GetRowCount( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
+#define CheckParameters_IMAPITable_GetRowCount( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
+
+#define Validate_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
+#define UlValidate_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
+#define CheckParameters_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
+
+#define Validate_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_FindRow( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_FindRow( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_FindRow( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_Restrict( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_Restrict, a1, a2, a3 )
+#define UlValidate_IMAPITable_Restrict( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_Restrict, a1, a2, a3 )
+#define CheckParameters_IMAPITable_Restrict( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_Restrict, a1, a2, a3 )
+
+#define Validate_IMAPITable_CreateBookmark( a1, a2 ) \
+ ValidateParameters2( IMAPITable_CreateBookmark, a1, a2 )
+#define UlValidate_IMAPITable_CreateBookmark( a1, a2 ) \
+ UlValidateParameters2( IMAPITable_CreateBookmark, a1, a2 )
+#define CheckParameters_IMAPITable_CreateBookmark( a1, a2 ) \
+ CheckParameters2( IMAPITable_CreateBookmark, a1, a2 )
+
+#define Validate_IMAPITable_FreeBookmark( a1, a2 ) \
+ ValidateParameters2( IMAPITable_FreeBookmark, a1, a2 )
+#define UlValidate_IMAPITable_FreeBookmark( a1, a2 ) \
+ UlValidateParameters2( IMAPITable_FreeBookmark, a1, a2 )
+#define CheckParameters_IMAPITable_FreeBookmark( a1, a2 ) \
+ CheckParameters2( IMAPITable_FreeBookmark, a1, a2 )
+
+#define Validate_IMAPITable_SortTable( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_SortTable, a1, a2, a3 )
+#define UlValidate_IMAPITable_SortTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_SortTable, a1, a2, a3 )
+#define CheckParameters_IMAPITable_SortTable( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_SortTable, a1, a2, a3 )
+
+#define Validate_IMAPITable_QuerySortOrder( a1, a2 ) \
+ ValidateParameters2( IMAPITable_QuerySortOrder, a1, a2 )
+#define UlValidate_IMAPITable_QuerySortOrder( a1, a2 ) \
+ UlValidateParameters2( IMAPITable_QuerySortOrder, a1, a2 )
+#define CheckParameters_IMAPITable_QuerySortOrder( a1, a2 ) \
+ CheckParameters2( IMAPITable_QuerySortOrder, a1, a2 )
+
+#define Validate_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_Abort( a1 ) \
+ ValidateParameters1( IMAPITable_Abort, a1 )
+#define UlValidate_IMAPITable_Abort( a1 ) \
+ UlValidateParameters1( IMAPITable_Abort, a1 )
+#define CheckParameters_IMAPITable_Abort( a1 ) \
+ CheckParameters1( IMAPITable_Abort, a1 )
+
+#define Validate_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
+
+
+/* IMAPIContainer */
+
+#define Validate_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
+#define UlValidate_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
+#define CheckParameters_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
+ CheckParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
+
+#define Validate_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
+#define UlValidate_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
+#define CheckParameters_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
+ CheckParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
+
+#define Validate_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
+#define UlValidate_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
+
+#define Validate_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
+
+
+/* IABContainer */
+
+#define Validate_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
+
+#define Validate_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
+#define UlValidate_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
+#define CheckParameters_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
+
+#define Validate_IABContainer_DeleteEntries( a1, a2, a3 ) \
+ ValidateParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
+#define UlValidate_IABContainer_DeleteEntries( a1, a2, a3 ) \
+ UlValidateParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
+#define CheckParameters_IABContainer_DeleteEntries( a1, a2, a3 ) \
+ CheckParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
+
+#define Validate_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
+#define UlValidate_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
+#define CheckParameters_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
+
+
+/* IDistList */
+
+#define Validate_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
+
+#define Validate_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
+#define UlValidate_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
+#define CheckParameters_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
+
+#define Validate_IDistList_DeleteEntries( a1, a2, a3 ) \
+ ValidateParameters3( IDistList_DeleteEntries, a1, a2, a3 )
+#define UlValidate_IDistList_DeleteEntries( a1, a2, a3 ) \
+ UlValidateParameters3( IDistList_DeleteEntries, a1, a2, a3 )
+#define CheckParameters_IDistList_DeleteEntries( a1, a2, a3 ) \
+ CheckParameters3( IDistList_DeleteEntries, a1, a2, a3 )
+
+#define Validate_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
+#define UlValidate_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
+#define CheckParameters_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
+
+
+/* IMAPIFolder */
+
+#define Validate_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
+#define UlValidate_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
+
+#define Validate_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ ValidateParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define UlValidate_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ UlValidateParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define CheckParameters_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ CheckParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+
+#define Validate_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
+#define UlValidate_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
+#define CheckParameters_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
+ CheckParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
+
+#define Validate_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
+#define UlValidate_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
+
+
+/* IMsgStore */
+
+#define Validate_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMsgStore_Unadvise( a1, a2 ) \
+ ValidateParameters2( IMsgStore_Unadvise, a1, a2 )
+#define UlValidate_IMsgStore_Unadvise( a1, a2 ) \
+ UlValidateParameters2( IMsgStore_Unadvise, a1, a2 )
+#define CheckParameters_IMsgStore_Unadvise( a1, a2 ) \
+ CheckParameters2( IMsgStore_Unadvise, a1, a2 )
+
+#define Validate_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
+#define UlValidate_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
+
+#define Validate_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
+ ValidateParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
+#define UlValidate_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
+#define CheckParameters_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
+ CheckParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
+
+#define Validate_IMsgStore_StoreLogoff( a1, a2 ) \
+ ValidateParameters2( IMsgStore_StoreLogoff, a1, a2 )
+#define UlValidate_IMsgStore_StoreLogoff( a1, a2 ) \
+ UlValidateParameters2( IMsgStore_StoreLogoff, a1, a2 )
+#define CheckParameters_IMsgStore_StoreLogoff( a1, a2 ) \
+ CheckParameters2( IMsgStore_StoreLogoff, a1, a2 )
+
+#define Validate_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
+#define UlValidate_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
+#define CheckParameters_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
+ CheckParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
+
+#define Validate_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
+ ValidateParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
+#define UlValidate_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
+ UlValidateParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
+#define CheckParameters_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
+ CheckParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
+
+#define Validate_IMsgStore_SetLockState( a1, a2, a3 ) \
+ ValidateParameters3( IMsgStore_SetLockState, a1, a2, a3 )
+#define UlValidate_IMsgStore_SetLockState( a1, a2, a3 ) \
+ UlValidateParameters3( IMsgStore_SetLockState, a1, a2, a3 )
+#define CheckParameters_IMsgStore_SetLockState( a1, a2, a3 ) \
+ CheckParameters3( IMsgStore_SetLockState, a1, a2, a3 )
+
+#define Validate_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
+#define UlValidate_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
+#define CheckParameters_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
+ CheckParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
+
+#define Validate_IMsgStore_NotifyNewMail( a1, a2 ) \
+ ValidateParameters2( IMsgStore_NotifyNewMail, a1, a2 )
+#define UlValidate_IMsgStore_NotifyNewMail( a1, a2 ) \
+ UlValidateParameters2( IMsgStore_NotifyNewMail, a1, a2 )
+#define CheckParameters_IMsgStore_NotifyNewMail( a1, a2 ) \
+ CheckParameters2( IMsgStore_NotifyNewMail, a1, a2 )
+
+
+/* IMessage */
+
+#define Validate_IMessage_GetAttachmentTable( a1, a2, a3 ) \
+ ValidateParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
+#define UlValidate_IMessage_GetAttachmentTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
+#define CheckParameters_IMessage_GetAttachmentTable( a1, a2, a3 ) \
+ CheckParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
+
+#define Validate_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
+#define UlValidate_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
+
+#define Validate_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
+#define UlValidate_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
+
+#define Validate_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
+#define UlValidate_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
+
+#define Validate_IMessage_GetRecipientTable( a1, a2, a3 ) \
+ ValidateParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
+#define UlValidate_IMessage_GetRecipientTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
+#define CheckParameters_IMessage_GetRecipientTable( a1, a2, a3 ) \
+ CheckParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
+
+#define Validate_IMessage_ModifyRecipients( a1, a2, a3 ) \
+ ValidateParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
+#define UlValidate_IMessage_ModifyRecipients( a1, a2, a3 ) \
+ UlValidateParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
+#define CheckParameters_IMessage_ModifyRecipients( a1, a2, a3 ) \
+ CheckParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
+
+#define Validate_IMessage_SubmitMessage( a1, a2 ) \
+ ValidateParameters2( IMessage_SubmitMessage, a1, a2 )
+#define UlValidate_IMessage_SubmitMessage( a1, a2 ) \
+ UlValidateParameters2( IMessage_SubmitMessage, a1, a2 )
+#define CheckParameters_IMessage_SubmitMessage( a1, a2 ) \
+ CheckParameters2( IMessage_SubmitMessage, a1, a2 )
+
+#define Validate_IMessage_SetReadFlag( a1, a2 ) \
+ ValidateParameters2( IMessage_SetReadFlag, a1, a2 )
+#define UlValidate_IMessage_SetReadFlag( a1, a2 ) \
+ UlValidateParameters2( IMessage_SetReadFlag, a1, a2 )
+#define CheckParameters_IMessage_SetReadFlag( a1, a2 ) \
+ CheckParameters2( IMessage_SetReadFlag, a1, a2 )
+
+
+/* IABProvider */
+
+#define Validate_IABProvider_Shutdown( a1, a2 ) \
+ ValidateParameters2( IABProvider_Shutdown, a1, a2 )
+#define UlValidate_IABProvider_Shutdown( a1, a2 ) \
+ UlValidateParameters2( IABProvider_Shutdown, a1, a2 )
+#define CheckParameters_IABProvider_Shutdown( a1, a2 ) \
+ CheckParameters2( IABProvider_Shutdown, a1, a2 )
+
+#define Validate_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ ValidateParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define UlValidate_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ UlValidateParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define CheckParameters_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ CheckParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+
+
+/* IABLogon */
+
+#define Validate_IABLogon_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IABLogon_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IABLogon_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IABLogon_Logoff( a1, a2 ) \
+ ValidateParameters2( IABLogon_Logoff, a1, a2 )
+#define UlValidate_IABLogon_Logoff( a1, a2 ) \
+ UlValidateParameters2( IABLogon_Logoff, a1, a2 )
+#define CheckParameters_IABLogon_Logoff( a1, a2 ) \
+ CheckParameters2( IABLogon_Logoff, a1, a2 )
+
+#define Validate_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IABLogon_Unadvise( a1, a2 ) \
+ ValidateParameters2( IABLogon_Unadvise, a1, a2 )
+#define UlValidate_IABLogon_Unadvise( a1, a2 ) \
+ UlValidateParameters2( IABLogon_Unadvise, a1, a2 )
+#define CheckParameters_IABLogon_Unadvise( a1, a2 ) \
+ CheckParameters2( IABLogon_Unadvise, a1, a2 )
+
+#define Validate_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+
+#define Validate_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ ValidateParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define UlValidate_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ UlValidateParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define CheckParameters_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ CheckParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
+
+#define Validate_IABLogon_GetOneOffTable( a1, a2, a3 ) \
+ ValidateParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
+#define UlValidate_IABLogon_GetOneOffTable( a1, a2, a3 ) \
+ UlValidateParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
+#define CheckParameters_IABLogon_GetOneOffTable( a1, a2, a3 ) \
+ CheckParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
+
+#define Validate_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
+ ValidateParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
+#define UlValidate_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
+#define CheckParameters_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
+ CheckParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
+
+
+/* IXPProvider */
+
+#define Validate_IXPProvider_Shutdown( a1, a2 ) \
+ ValidateParameters2( IXPProvider_Shutdown, a1, a2 )
+#define UlValidate_IXPProvider_Shutdown( a1, a2 ) \
+ UlValidateParameters2( IXPProvider_Shutdown, a1, a2 )
+#define CheckParameters_IXPProvider_Shutdown( a1, a2 ) \
+ CheckParameters2( IXPProvider_Shutdown, a1, a2 )
+
+#define Validate_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
+
+
+/* IXPLogon */
+
+#define Validate_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
+ ValidateParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
+#define UlValidate_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
+#define CheckParameters_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
+ CheckParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
+
+#define Validate_IXPLogon_TransportNotify( a1, a2, a3 ) \
+ ValidateParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
+#define UlValidate_IXPLogon_TransportNotify( a1, a2, a3 ) \
+ UlValidateParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
+#define CheckParameters_IXPLogon_TransportNotify( a1, a2, a3 ) \
+ CheckParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
+
+#define Validate_IXPLogon_Idle( a1, a2 ) \
+ ValidateParameters2( IXPLogon_Idle, a1, a2 )
+#define UlValidate_IXPLogon_Idle( a1, a2 ) \
+ UlValidateParameters2( IXPLogon_Idle, a1, a2 )
+#define CheckParameters_IXPLogon_Idle( a1, a2 ) \
+ CheckParameters2( IXPLogon_Idle, a1, a2 )
+
+#define Validate_IXPLogon_TransportLogoff( a1, a2 ) \
+ ValidateParameters2( IXPLogon_TransportLogoff, a1, a2 )
+#define UlValidate_IXPLogon_TransportLogoff( a1, a2 ) \
+ UlValidateParameters2( IXPLogon_TransportLogoff, a1, a2 )
+#define CheckParameters_IXPLogon_TransportLogoff( a1, a2 ) \
+ CheckParameters2( IXPLogon_TransportLogoff, a1, a2 )
+
+#define Validate_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
+#define UlValidate_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
+#define CheckParameters_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
+
+#define Validate_IXPLogon_EndMessage( a1, a2, a3 ) \
+ ValidateParameters3( IXPLogon_EndMessage, a1, a2, a3 )
+#define UlValidate_IXPLogon_EndMessage( a1, a2, a3 ) \
+ UlValidateParameters3( IXPLogon_EndMessage, a1, a2, a3 )
+#define CheckParameters_IXPLogon_EndMessage( a1, a2, a3 ) \
+ CheckParameters3( IXPLogon_EndMessage, a1, a2, a3 )
+
+#define Validate_IXPLogon_Poll( a1, a2 ) \
+ ValidateParameters2( IXPLogon_Poll, a1, a2 )
+#define UlValidate_IXPLogon_Poll( a1, a2 ) \
+ UlValidateParameters2( IXPLogon_Poll, a1, a2 )
+#define CheckParameters_IXPLogon_Poll( a1, a2 ) \
+ CheckParameters2( IXPLogon_Poll, a1, a2 )
+
+#define Validate_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
+ ValidateParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
+#define UlValidate_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
+#define CheckParameters_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
+ CheckParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
+
+#define Validate_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+
+#define Validate_IXPLogon_ValidateState( a1, a2, a3 ) \
+ ValidateParameters3( IXPLogon_ValidateState, a1, a2, a3 )
+#define UlValidate_IXPLogon_ValidateState( a1, a2, a3 ) \
+ UlValidateParameters3( IXPLogon_ValidateState, a1, a2, a3 )
+#define CheckParameters_IXPLogon_ValidateState( a1, a2, a3 ) \
+ CheckParameters3( IXPLogon_ValidateState, a1, a2, a3 )
+
+#define Validate_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
+#define UlValidate_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
+#define CheckParameters_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
+
+
+/* IMSProvider */
+
+#define Validate_IMSProvider_Shutdown( a1, a2 ) \
+ ValidateParameters2( IMSProvider_Shutdown, a1, a2 )
+#define UlValidate_IMSProvider_Shutdown( a1, a2 ) \
+ UlValidateParameters2( IMSProvider_Shutdown, a1, a2 )
+#define CheckParameters_IMSProvider_Shutdown( a1, a2 ) \
+ CheckParameters2( IMSProvider_Shutdown, a1, a2 )
+
+#define Validate_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ ValidateParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define UlValidate_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ UlValidateParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define CheckParameters_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ CheckParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+
+#define Validate_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ ValidateParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define UlValidate_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ UlValidateParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define CheckParameters_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ CheckParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+
+#define Validate_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
+
+
+/* IMSLogon */
+
+#define Validate_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IMSLogon_Logoff( a1, a2 ) \
+ ValidateParameters2( IMSLogon_Logoff, a1, a2 )
+#define UlValidate_IMSLogon_Logoff( a1, a2 ) \
+ UlValidateParameters2( IMSLogon_Logoff, a1, a2 )
+#define CheckParameters_IMSLogon_Logoff( a1, a2 ) \
+ CheckParameters2( IMSLogon_Logoff, a1, a2 )
+
+#define Validate_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMSLogon_Unadvise( a1, a2 ) \
+ ValidateParameters2( IMSLogon_Unadvise, a1, a2 )
+#define UlValidate_IMSLogon_Unadvise( a1, a2 ) \
+ UlValidateParameters2( IMSLogon_Unadvise, a1, a2 )
+#define CheckParameters_IMSLogon_Unadvise( a1, a2 ) \
+ CheckParameters2( IMSLogon_Unadvise, a1, a2 )
+
+#define Validate_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+
+
+/* IMAPIControl */
+
+#define Validate_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IMAPIControl_Activate( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIControl_Activate, a1, a2, a3 )
+#define UlValidate_IMAPIControl_Activate( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIControl_Activate, a1, a2, a3 )
+#define CheckParameters_IMAPIControl_Activate( a1, a2, a3 ) \
+ CheckParameters3( IMAPIControl_Activate, a1, a2, a3 )
+
+#define Validate_IMAPIControl_GetState( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIControl_GetState, a1, a2, a3 )
+#define UlValidate_IMAPIControl_GetState( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIControl_GetState, a1, a2, a3 )
+#define CheckParameters_IMAPIControl_GetState( a1, a2, a3 ) \
+ CheckParameters3( IMAPIControl_GetState, a1, a2, a3 )
+
+
+/* IMAPIStatus */
+
+#define Validate_IMAPIStatus_ValidateState( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
+#define UlValidate_IMAPIStatus_ValidateState( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
+#define CheckParameters_IMAPIStatus_ValidateState( a1, a2, a3 ) \
+ CheckParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
+
+#define Validate_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
+#define UlValidate_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
+#define CheckParameters_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
+ CheckParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
+
+#define Validate_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
+#define UlValidate_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
+
+#define Validate_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
+
+
+/* IStream */
+
+#define Validate_IStream_Read( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream__Read, a1, a2, a3, a4 )
+#define UlValidate_IStream_Read( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream__Read, a1, a2, a3, a4 )
+#define CheckParameters_IStream_Read( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream__Read, a1, a2, a3, a4 )
+
+#define Validate_IStream_Write( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream__Write, a1, a2, a3, a4 )
+#define UlValidate_IStream_Write( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream__Write, a1, a2, a3, a4 )
+#define CheckParameters_IStream_Write( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream__Write, a1, a2, a3, a4 )
+
+#define Validate_IStream_Seek( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream_Seek, a1, a2, a3, a4 )
+#define UlValidate_IStream_Seek( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream_Seek, a1, a2, a3, a4 )
+#define CheckParameters_IStream_Seek( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream_Seek, a1, a2, a3, a4 )
+
+#define Validate_IStream_SetSize( a1, a2 ) \
+ ValidateParameters2( IStream_SetSize, a1, a2 )
+#define UlValidate_IStream_SetSize( a1, a2 ) \
+ UlValidateParameters2( IStream_SetSize, a1, a2 )
+#define CheckParameters_IStream_SetSize( a1, a2 ) \
+ CheckParameters2( IStream_SetSize, a1, a2 )
+
+#define Validate_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
+#define UlValidate_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
+#define CheckParameters_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
+
+#define Validate_IStream_Commit( a1, a2 ) \
+ ValidateParameters2( IStream_Commit, a1, a2 )
+#define UlValidate_IStream_Commit( a1, a2 ) \
+ UlValidateParameters2( IStream_Commit, a1, a2 )
+#define CheckParameters_IStream_Commit( a1, a2 ) \
+ CheckParameters2( IStream_Commit, a1, a2 )
+
+#define Validate_IStream_Revert( a1 ) \
+ ValidateParameters1( IStream_Revert, a1 )
+#define UlValidate_IStream_Revert( a1 ) \
+ UlValidateParameters1( IStream_Revert, a1 )
+#define CheckParameters_IStream_Revert( a1 ) \
+ CheckParameters1( IStream_Revert, a1 )
+
+#define Validate_IStream_LockRegion( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream_LockRegion, a1, a2, a3, a4 )
+#define UlValidate_IStream_LockRegion( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream_LockRegion, a1, a2, a3, a4 )
+#define CheckParameters_IStream_LockRegion( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream_LockRegion, a1, a2, a3, a4 )
+
+#define Validate_IStream_UnlockRegion( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
+#define UlValidate_IStream_UnlockRegion( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
+#define CheckParameters_IStream_UnlockRegion( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
+
+#define Validate_IStream_Stat( a1, a2, a3 ) \
+ ValidateParameters3( IStream_Stat, a1, a2, a3 )
+#define UlValidate_IStream_Stat( a1, a2, a3 ) \
+ UlValidateParameters3( IStream_Stat, a1, a2, a3 )
+#define CheckParameters_IStream_Stat( a1, a2, a3 ) \
+ CheckParameters3( IStream_Stat, a1, a2, a3 )
+
+#define Validate_IStream_Clone( a1, a2 ) \
+ ValidateParameters2( IStream_Clone, a1, a2 )
+#define UlValidate_IStream_Clone( a1, a2 ) \
+ UlValidateParameters2( IStream_Clone, a1, a2 )
+#define CheckParameters_IStream_Clone( a1, a2 ) \
+ CheckParameters2( IStream_Clone, a1, a2 )
+
+
+/* IMAPIAdviseSink */
+
+#define Validate_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
+#define UlValidate_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
+#define CheckParameters_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
+ CheckParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
+
+#if defined(_AMD64_) || defined(_X86_)
+STDAPI HrValidateParameters( METHODS eMethod, LPVOID FAR *ppFirstArg );
+#elif defined(DOS) || defined(_MAC)
+STDAPIV HrValidateParametersV( METHODS eMethod, ... );
+STDAPIV HrValidateParametersValist( METHODS eMethod, va_list arglist );
+#else
+#error "Unknown Platform: MAPI is currently supported on Win32 and Win64"
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_VALIDATE */
+
+