1 /*
2  *	M A P I V A L . H
3  *
4  *	Macros used to validate parameters on standard MAPI object methods.
5  *	Used in conjunction with routines found in MAPIU.DLL.
6  *
7  *  Copyright (c) 2009 Microsoft Corporation. All Rights Reserved.
8  */
9 
10 #ifndef	_INC_VALIDATE
11 #define	_INC_VALIDATE
12 
13 #if _MSC_VER > 1000
14 #pragma once
15 #endif
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #ifndef MAPIUTIL_H
22 #include	<mapiutil.h>
23 #endif
24 #include	<stddef.h>
25 #include	<stdarg.h>
26 
27 
28 #define MAKE_ENUM(Method, Interface)	Interface##_##Method
29 
30 typedef enum _tagMethods
31 {
32 /* IUnknown */
33 	MAKE_ENUM(QueryInterface, IUnknown) = 0,
34 	MAKE_ENUM(AddRef, IUnknown),			/* For completness */
35 	MAKE_ENUM(Release, IUnknown),			/* For completness */
36 
37 /* IMAPIProps */
38 	MAKE_ENUM(GetLastError, IMAPIProp),
39 	MAKE_ENUM(SaveChanges, IMAPIProp),
40 	MAKE_ENUM(GetProps, IMAPIProp),
41 	MAKE_ENUM(GetPropList, IMAPIProp),
42 	MAKE_ENUM(OpenProperty, IMAPIProp),
43 	MAKE_ENUM(SetProps, IMAPIProp),
44 	MAKE_ENUM(DeleteProps, IMAPIProp),
45 	MAKE_ENUM(CopyTo, IMAPIProp),
46 	MAKE_ENUM(CopyProps, IMAPIProp),
47 	MAKE_ENUM(GetNamesFromIDs, IMAPIProp),
48 	MAKE_ENUM(GetIDsFromNames, IMAPIProp),
49 
50 /* IMAPITable */
51 	MAKE_ENUM(GetLastError, IMAPITable),
52 	MAKE_ENUM(Advise, IMAPITable),
53 	MAKE_ENUM(Unadvise, IMAPITable),
54 	MAKE_ENUM(GetStatus, IMAPITable),
55 	MAKE_ENUM(SetColumns, IMAPITable),
56 	MAKE_ENUM(QueryColumns, IMAPITable),
57 	MAKE_ENUM(GetRowCount, IMAPITable),
58 	MAKE_ENUM(SeekRow, IMAPITable),
59 	MAKE_ENUM(SeekRowApprox, IMAPITable),
60 	MAKE_ENUM(QueryPosition, IMAPITable),
61 	MAKE_ENUM(FindRow, IMAPITable),
62 	MAKE_ENUM(Restrict, IMAPITable),
63 	MAKE_ENUM(CreateBookmark, IMAPITable),
64 	MAKE_ENUM(FreeBookmark, IMAPITable),
65 	MAKE_ENUM(SortTable, IMAPITable),
66 	MAKE_ENUM(QuerySortOrder, IMAPITable),
67 	MAKE_ENUM(QueryRows, IMAPITable),
68 	MAKE_ENUM(Abort, IMAPITable),
69 	MAKE_ENUM(ExpandRow, IMAPITable),
70 	MAKE_ENUM(CollapseRow, IMAPITable),
71 	MAKE_ENUM(WaitForCompletion, IMAPITable),
72 	MAKE_ENUM(GetCollapseState, IMAPITable),
73 	MAKE_ENUM(SetCollapseState, IMAPITable),
74 
75 /* IMAPIContainer */
76 	MAKE_ENUM(GetContentsTable, IMAPIContainer),
77 	MAKE_ENUM(GetHierarchyTable, IMAPIContainer),
78 	MAKE_ENUM(OpenEntry, IMAPIContainer),
79 	MAKE_ENUM(SetSearchCriteria, IMAPIContainer),
80 	MAKE_ENUM(GetSearchCriteria, IMAPIContainer),
81 
82 /* IABContainer */
83 	MAKE_ENUM(CreateEntry, IABContainer),
84 	MAKE_ENUM(CopyEntries, IABContainer),
85 	MAKE_ENUM(DeleteEntries, IABContainer),
86 	MAKE_ENUM(ResolveNames, IABContainer),
87 
88 /* IDistList */
89 	MAKE_ENUM(CreateEntry, IDistList),
90 	MAKE_ENUM(CopyEntries, IDistList),
91 	MAKE_ENUM(DeleteEntries, IDistList),
92 	MAKE_ENUM(ResolveNames, IDistList),
93 
94 /* IMAPIFolder */
95 	MAKE_ENUM(CreateMessage, IMAPIFolder),
96 	MAKE_ENUM(CopyMessages, IMAPIFolder),
97 	MAKE_ENUM(DeleteMessages, IMAPIFolder),
98 	MAKE_ENUM(CreateFolder, IMAPIFolder),
99 	MAKE_ENUM(CopyFolder, IMAPIFolder),
100 	MAKE_ENUM(DeleteFolder, IMAPIFolder),
101 	MAKE_ENUM(SetReadFlags, IMAPIFolder),
102 	MAKE_ENUM(GetMessageStatus, IMAPIFolder),
103 	MAKE_ENUM(SetMessageStatus, IMAPIFolder),
104 	MAKE_ENUM(SaveContentsSort, IMAPIFolder),
105 	MAKE_ENUM(EmptyFolder, IMAPIFolder),
106 
107 /* IMsgStore */
108 	MAKE_ENUM(Advise, IMsgStore),
109 	MAKE_ENUM(Unadvise, IMsgStore),
110 	MAKE_ENUM(CompareEntryIDs, IMsgStore),
111 	MAKE_ENUM(OpenEntry, IMsgStore),
112 	MAKE_ENUM(SetReceiveFolder, IMsgStore),
113 	MAKE_ENUM(GetReceiveFolder, IMsgStore),
114 	MAKE_ENUM(GetReceiveFolderTable, IMsgStore),
115 	MAKE_ENUM(StoreLogoff, IMsgStore),
116 	MAKE_ENUM(AbortSubmit, IMsgStore),
117 	MAKE_ENUM(GetOutgoingQueue, IMsgStore),
118 	MAKE_ENUM(SetLockState, IMsgStore),
119 	MAKE_ENUM(FinishedMsg, IMsgStore),
120 	MAKE_ENUM(NotifyNewMail, IMsgStore),
121 
122 /* IMessage */
123 	MAKE_ENUM(GetAttachmentTable, IMessage),
124 	MAKE_ENUM(OpenAttach, IMessage),
125 	MAKE_ENUM(CreateAttach, IMessage),
126 	MAKE_ENUM(DeleteAttach, IMessage),
127 	MAKE_ENUM(GetRecipientTable, IMessage),
128 	MAKE_ENUM(ModifyRecipients, IMessage),
129 	MAKE_ENUM(SubmitMessage, IMessage),
130 	MAKE_ENUM(SetReadFlag, IMessage),
131 
132 
133 /* IABProvider */
134 	MAKE_ENUM(Shutdown, IABProvider),
135 	MAKE_ENUM(Logon, IABProvider),
136 
137 /* IABLogon */
138 	MAKE_ENUM(GetLastError, IABLogon),
139 	MAKE_ENUM(Logoff, IABLogon),
140 	MAKE_ENUM(OpenEntry, IABLogon),
141 	MAKE_ENUM(CompareEntryIDs, IABLogon),
142 	MAKE_ENUM(Advise, IABLogon),
143 	MAKE_ENUM(Unadvise, IABLogon),
144 	MAKE_ENUM(OpenStatusEntry, IABLogon),
145 	MAKE_ENUM(OpenTemplateID, IABLogon),
146 	MAKE_ENUM(GetOneOffTable, IABLogon),
147 	MAKE_ENUM(PrepareRecips, IABLogon),
148 
149 /* IXPProvider */
150 	MAKE_ENUM(Shutdown, IXPProvider),
151 	MAKE_ENUM(TransportLogon, IXPProvider),
152 
153 /* IXPLogon */
154 	MAKE_ENUM(AddressTypes, IXPLogon),
155 	MAKE_ENUM(RegisterOptions, IXPLogon),
156 	MAKE_ENUM(TransportNotify, IXPLogon),
157 	MAKE_ENUM(Idle, IXPLogon),
158 	MAKE_ENUM(TransportLogoff, IXPLogon),
159 	MAKE_ENUM(SubmitMessage, IXPLogon),
160 	MAKE_ENUM(EndMessage, IXPLogon),
161 	MAKE_ENUM(Poll, IXPLogon),
162 	MAKE_ENUM(StartMessage, IXPLogon),
163 	MAKE_ENUM(OpenStatusEntry, IXPLogon),
164 	MAKE_ENUM(ValidateState, IXPLogon),
165 	MAKE_ENUM(FlushQueues, IXPLogon),
166 
167 /* IMSProvider */
168 	MAKE_ENUM(Shutdown, IMSProvider),
169 	MAKE_ENUM(Logon, IMSProvider),
170 	MAKE_ENUM(SpoolerLogon, IMSProvider),
171 	MAKE_ENUM(CompareStoreIDs, IMSProvider),
172 
173 /* IMSLogon */
174 	MAKE_ENUM(GetLastError, IMSLogon),
175 	MAKE_ENUM(Logoff, IMSLogon),
176 	MAKE_ENUM(OpenEntry, IMSLogon),
177 	MAKE_ENUM(CompareEntryIDs, IMSLogon),
178 	MAKE_ENUM(Advise, IMSLogon),
179 	MAKE_ENUM(Unadvise, IMSLogon),
180 	MAKE_ENUM(OpenStatusEntry, IMSLogon),
181 
182 /* IMAPIControl */
183 	MAKE_ENUM(GetLastError, IMAPIControl),
184 	MAKE_ENUM(Activate, IMAPIControl),
185 	MAKE_ENUM(GetState, IMAPIControl),
186 
187 /* IMAPIStatus */
188 	MAKE_ENUM(ValidateState, IMAPIStatus),
189 	MAKE_ENUM(SettingsDialog, IMAPIStatus),
190 	MAKE_ENUM(ChangePassword, IMAPIStatus),
191 	MAKE_ENUM(FlushQueues, IMAPIStatus),
192 
193 /* IStream */
194 	MAKE_ENUM(_Read, IStream),
195 	MAKE_ENUM(_Write, IStream),
196 	MAKE_ENUM(Seek, IStream),
197 	MAKE_ENUM(SetSize, IStream),
198 	MAKE_ENUM(CopyTo, IStream),
199 	MAKE_ENUM(Commit, IStream),
200 	MAKE_ENUM(Revert, IStream),
201 	MAKE_ENUM(LockRegion, IStream),
202 	MAKE_ENUM(UnlockRegion, IStream),
203 	MAKE_ENUM(Stat, IStream),
204 	MAKE_ENUM(Clone, IStream),
205 
206 /* IMAPIAdviseSink */
207 	MAKE_ENUM(OnNotify, IMAPIAdviseSink),
208 
209 } METHODS;
210 
211 
212 /* Macro wrappers to hide the Validate function return handling */
213 #if defined(_AMD64_) || defined(_X86_)
214 #ifdef __cplusplus
215 
216 /* C++ methods can't take the address of the This pointer, so we must
217    use the first parameter instead */
218 
219 #define ValidateParameters(eMethod, First)				\
220 		{	HRESULT   _hr_;								\
221 			_hr_ = __CPPValidateParameters(eMethod, (LPVOID) &First);	\
222 			if (HR_FAILED(_hr_)) return (_hr_);	}
223 
224 #define UlValidateParameters(eMethod, First)				\
225 		{	HRESULT   _hr_;								\
226 			_hr_ = __CPPValidateParameters(eMethod, &First);	\
227 			if (HR_FAILED(_hr_)) return (ULONG) (_hr_);	}
228 
229 /* Methods called by MAPI should have correct parameters
230    - just assert in Debug to check */
231 #define CheckParameters(eMethod, First)				\
232 		AssertSz(HR_SUCCEEDED(__CPPValidateParameters(eMethod, &First)), "Parameter validation failed for method called by MAPI!")
233 
234 
235 #else /* __cplusplus */
236 
237 /* For methods that will be called by clients
238    - validate always */
239 
240 #define ValidateParameters(eMethod, ppThis)				\
241 		{	HRESULT   _hr_;								\
242 			_hr_ = __ValidateParameters(eMethod, ppThis);	\
243 			if (HR_FAILED(_hr_)) return (_hr_);	}
244 
245 #define UlValidateParameters(eMethod, ppThis)				\
246 		{	HRESULT   _hr_;								\
247 			_hr_ = __ValidateParameters(eMethod, ppThis);	\
248 			if (HR_FAILED(_hr_)) return (ULONG) (_hr_);	}
249 
250 /* Methods called by MAPI should have correct parameters
251    - just assert in Debug to check */
252 #define CheckParameters(eMethod, ppThis)				\
253 		AssertSz(HR_SUCCEEDED(__ValidateParameters(eMethod, ppThis)), "Parameter validation failed for method called by MAPI!")
254 
255 #endif /* __cplusplus */
256 #endif /* _X86_ || _AMD64_ */
257 
258 /* Prototypes for functions used to validate complex parameters.
259  */
260 #define FBadPropVal( lpPropVal)	(FAILED(ScCountProps( 1, lpPropVal, NULL)))
261 
262 #define FBadRgPropVal( lpPropVal, cValues) \
263 		(FAILED(ScCountProps( cValues, lpPropVal, NULL)))
264 
265 #define FBadAdrList( lpAdrList) \
266 		(   AssertSz(   (   offsetof( ADRLIST, cEntries) \
267 						 == offsetof( SRowSet, cRows)) \
268 					 && (   offsetof( ADRLIST, aEntries) \
269 						 == offsetof( SRowSet, aRow)) \
270 					 && (   offsetof( ADRENTRY, cValues) \
271 						 == offsetof( SRow, cValues)) \
272 					 && (   offsetof( ADRENTRY, rgPropVals) \
273 						 == offsetof( SRow, lpProps)) \
274 					, "ADRLIST doesn't match SRowSet") \
275 		 || FBadRowSet( (LPSRowSet) lpAdrList))
276 
277 STDAPI_(BOOL)
278 FBadRglpszW(__in LPWSTR FAR	*lppszW,
279 			 ULONG		cStrings);
280 
281 STDAPI_(BOOL)
282 FBadRowSet( LPSRowSet	lpRowSet);
283 
284 STDAPI_(BOOL)
285 FBadRglpNameID( LPMAPINAMEID FAR *	lppNameId,
286 				ULONG				cNames);
287 
288 STDAPI_(BOOL)
289 FBadEntryList( LPENTRYLIST	lpEntryList);
290 
291 
292 /* BAD_STANDARD_OBJ
293  *
294  * This macro insures that the object is a writable object of the correct size
295  * and that this method belongs to the object.
296  *
297  * NOTES ON USE!
298  *	This depends upon using the standard method of declaring the object
299  *	interface.
300  *
301  *	prefix is the method prefix you chose when declaring the object interface.
302  *	method is the standard method name of the calling method.
303  *	lpVtbl is the name of the lpVtbl element of your object.
304  */
305 #define BAD_STANDARD_OBJ( lpObj, prefix, method, lpVtbl) \
306 	(   IsBadWritePtr( (lpObj), sizeof(*lpObj)) \
307 	 || IsBadReadPtr( (void *) &(lpObj->lpVtbl->method), sizeof(LPVOID)) \
308 	 ||( ( LPVOID) (lpObj->lpVtbl->method) != (LPVOID) (prefix##method)))
309 
310 
311 #define FBadUnknown( lpObj ) \
312 	(	IsBadReadPtr( (lpObj), sizeof(LPVOID) ) \
313 	 ||	IsBadReadPtr( (lpObj)->lpVtbl, 3 * sizeof(LPUNKNOWN) ) \
314 	 ||	IsBadCodePtr( (FARPROC)(lpObj)->lpVtbl->QueryInterface ))
315 
316 /*
317  * IUnknown
318  */
319 
320 
321 /*
322  * QueryInterface
323  */
324 #define FBadQueryInterface( lpObj, riid, ppvObj)	\
325 	(   IsBadReadPtr( riid, sizeof(IID)) \
326 	 || IsBadWritePtr( ppvObj, sizeof(LPVOID)))
327 
328 
329 /*
330  * AddRef
331  *	No parameter validation required.
332  */
333 #define FBadAddRef( lpObj)	FALSE
334 
335 
336 /*
337  * Release
338  *	No parameter validation required.
339  */
340 #define FBadRelease( lpObj)	FALSE
341 
342 
343 /*
344  * GetLastError
345  */
346 #define FBadGetLastError( lpObj, hResult, ulFlags, lppMAPIError )\
347 	(IsBadWritePtr( lppMAPIError, sizeof(LPMAPIERROR)))
348 
349 /*
350  * IMAPIProp
351  */
352 
353 
354 /*
355  * SaveChanges
356  *	No parameter validation required.
357  */
358 #define FBadSaveChanges( lpObj, ulFlags)	FALSE
359 
360 
361 /*
362  * GetProps
363  */
364 #define FBadGetProps( lpObj, lpPTagA, lpcValues, lppPropArray) \
365 	(   (   lpPTagA \
366 		 && (   IsBadReadPtr( lpPTagA, sizeof(ULONG)) \
367 		 	 || IsBadReadPtr( lpPTagA, (UINT)(  (lpPTagA->cValues + 1) \
368 									          * sizeof(ULONG))))) \
369 	 || IsBadWritePtr( lpcValues, sizeof(ULONG)) \
370 	 || IsBadWritePtr( lppPropArray, sizeof(LPSPropValue)))
371 
372 
373 /*
374  * GetPropList
375  */
376 #define FBadGetPropList( lpObj, lppPTagA) \
377 	(IsBadWritePtr( lppPTagA, sizeof(LPSPropTagArray FAR *)))
378 
379 
380 /*
381  * OpenProperty
382  */
383 #define FBadOpenProperty( lpObj, ulPropTag, lpiid, ulInterfaceOptions, ulFlags \
384 						, lppUnk) \
385 	(   IsBadReadPtr( lpiid, sizeof(IID)) \
386 	 || IsBadWritePtr( lppUnk, sizeof (LPUNKNOWN FAR *)))
387 
388 
389 /*
390  * SetProps
391  */
392 #define FBadSetProps( lpObj, cValues, lpPropArray, lppProblems) \
393 	(   FBadRgPropVal( lpPropArray, (UINT) cValues) \
394 	 || (   lppProblems \
395 	 	 && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
396 
397 
398 /*
399  * DeleteProps
400  */
401 #define FBadDeleteProps( lpObj, lpPTagA, lppProblems) \
402 	(   (   !lpPTagA \
403 		 || (   IsBadReadPtr( lpPTagA, sizeof(ULONG)) \
404 		 	 || IsBadReadPtr( lpPTagA, (UINT)(  (lpPTagA->cValues + 1) \
405 									          * sizeof(ULONG))))) \
406 	 || (   lppProblems \
407 	 	 && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
408 
409 
410 /*
411  * CopyTo
412  */
413 #define FBadCopyTo( lpIPDAT, ciidExclude, rgiidExclude, lpExcludeProps \
414 				  , ulUIParam, lpProgress, lpInterface, lpDestObj \
415 				  , ulFlags, lppProblems) \
416 	(	(	ciidExclude \
417 		 && (  IsBadReadPtr( rgiidExclude, (UINT)(ciidExclude * sizeof(IID))))) \
418 	 || (   lpExcludeProps \
419 		 && (   IsBadReadPtr( lpExcludeProps, sizeof(ULONG)) \
420 		 	 || IsBadReadPtr( lpExcludeProps \
421 			 				, (UINT)(  (lpExcludeProps->cValues + 1) \
422 							         * sizeof(ULONG))))) \
423 	 || (lpProgress && FBadUnknown( lpProgress )) \
424      || (lpInterface && IsBadReadPtr( lpInterface, sizeof(IID))) \
425 	 || IsBadReadPtr( lpDestObj, sizeof(LPVOID)) \
426 	 || (   lppProblems \
427 	 	 && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
428 
429 
430 /*
431  * CopyProps
432  */
433 #define FBadCopyProps( lpIPDAT, lpPropTagArray \
434 					 , ulUIParam, lpProgress, lpInterface, lpDestObj \
435 					 , ulFlags, lppProblems) \
436 	(   (   lpPropTagArray \
437 		 && (   IsBadReadPtr( lpPropTagArray, sizeof(ULONG)) \
438 		 	 || IsBadReadPtr( lpPropTagArray \
439 			 				, (UINT)(  (lpPropTagArray->cValues + 1) \
440 							         * sizeof(ULONG))))) \
441 	 || (lpProgress && FBadUnknown( lpProgress )) \
442      || (lpInterface && IsBadReadPtr( lpInterface, sizeof(IID))) \
443 	 || IsBadReadPtr( lpDestObj, sizeof(LPVOID)) \
444 	 || (   lppProblems \
445 	 	 && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
446 
447 
448 
449 /*
450  * GetNamesFromIDs
451  */
452 #define FBadGetNamesFromIDs( lpIPDAT, lppPropTags, lpPropSetGuid, ulFlags, \
453 							 lpcPropNames, lpppPropNames) \
454 	(   IsBadReadPtr( lppPropTags, sizeof(LPSPropTagArray)) \
455 	 || ( lpPropSetGuid && IsBadReadPtr( lpPropSetGuid, sizeof(GUID))) \
456 	 || (   *lppPropTags \
457 		 && (   IsBadReadPtr( *lppPropTags, sizeof(ULONG)) \
458 		 	 || IsBadReadPtr( *lppPropTags \
459 			 				, (UINT)( ( ( *lppPropTags)->cValues + 1) \
460 							         * sizeof(ULONG))))) \
461 	 || IsBadWritePtr( lpcPropNames, sizeof (ULONG)) \
462 	 || IsBadWritePtr( lpppPropNames, sizeof (LPVOID FAR *)))
463 
464 
465 
466 /*
467  * GetNamesFromIDs
468  */
469 #define FBadGetIDsFromNames( lpIPDAT, cPropNames, lppPropNames, ulFlags \
470 						   , lppPropTags) \
471 	(   (cPropNames && FBadRglpNameID( lppPropNames, cPropNames)) \
472 	 || IsBadWritePtr( lppPropTags, sizeof(LPULONG FAR *)))
473 
474 
475 STDAPI_(ULONG)
476 FBadRestriction( LPSRestriction lpres );
477 
478 STDAPI_(ULONG)
479 FBadPropTag( ULONG ulPropTag );
480 
481 STDAPI_(ULONG)
482 FBadRow( LPSRow lprow );
483 
484 STDAPI_(ULONG)
485 FBadProp( LPSPropValue lpprop );
486 
487 STDAPI_(ULONG)
488 FBadSortOrderSet( LPSSortOrderSet lpsos );
489 
490 STDAPI_(ULONG)
491 FBadColumnSet( LPSPropTagArray lpptaCols );
492 
493 /* Validation function
494 
495 	The eMethod parameter tells us which internal validation to perform.
496 
497 	The ppThis parameter tells us where the stack is, so we can access the other
498 	parameters.
499 
500 	Becuase of this *magic* we MUST obtain the pointer to the This pointer in
501 	the method function.
502 
503 */
504 
505 #if defined(_WIN64) || defined(_WIN32)
506 #define BASED_STACK
507 #else
508 #error	"Unknown Platform: MAPI is currently supported on Win32 and Win64"
509 #endif
510 
511 #if defined(_WIN64) || defined(_WIN32)
512 HRESULT	 STDAPICALLTYPE
513 #else
514 #error	"Unknown Platform: MAPI is currently supported on Win32 and Win64"
515 #endif
516 
517 __CPPValidateParameters(METHODS eMethod, const LPVOID ppFirst);
518 
519 #if defined(_WIN64) || defined(_WIN32)
520 HRESULT	 STDAPICALLTYPE
521 #else
522 #error	"Unknown Platform: MAPI is currently supported on Win32 and Win64"
523 #endif
524 __ValidateParameters(METHODS eMethod, LPVOID ppThis);
525 
526 #ifdef _MAC
527 #define STDAPIVCALLTYPE         __cdecl
528 #define STDAPIV                 EXTERN_C HRESULT STDAPIVCALLTYPE
529 #define STDAPIV_(type)          EXTERN_C type STDAPIVCALLTYPE
530 #endif /* _MAC */
531 
532 /* Macro wrappers for platform independent validation */
533 
534 #if defined(_AMD64_) || defined(_X86_)
535 
536 #define ArgShiftN (1 + (sizeof(DWORD_PTR)>>2))
537 #define ArgSize(T) ((sizeof(T)+sizeof(DWORD_PTR)-1)>>ArgShiftN)
538 
539 #define MakeArg1(idx, a1) memcpy(__rgArgs+idx, &a1, ArgSize(a1)*sizeof(DWORD_PTR))
540 #define MakeArg2(idx, a1, a2) MakeArg1(idx, a1); MakeArg1(idx+ArgSize(a1), a2)
541 #define MakeArg3(idx, a1, a2, a3) MakeArg1(idx, a1); MakeArg2(idx+ArgSize(a1), a2, a3)
542 #define MakeArg4(idx, a1, a2, a3, a4) MakeArg1(idx, a1); MakeArg3(idx+ArgSize(a1), a2, a3, a4)
543 #define MakeArg5(idx, a1, a2, a3, a4, a5) MakeArg1(idx, a1); MakeArg4(idx+ArgSize(a1), a2, a3, a4, a5)
544 #define MakeArg6(idx, a1, a2, a3, a4, a5, a6) MakeArg1(idx, a1); MakeArg5(idx+ArgSize(a1), a2, a3, a4, a5, a6)
545 #define MakeArg7(idx, a1, a2, a3, a4, a5, a6, a7) MakeArg1(idx, a1); MakeArg6(idx+ArgSize(a1), a2, a3, a4, a5, a6, a7)
546 #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)
547 #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)
548 #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)
549 #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)
550 #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)
551 #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)
552 #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)
553 #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)
554 #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)
555 
556 #define MakeArray1(a1) \
557 	DWORD_PTR __rgArgs[ArgSize(a1)]; \
558 	MakeArg1(0, a1)
559 
560 #define MakeArray2(a1, a2) \
561 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2)]; \
562 	MakeArg2(0, a1, a2)
563 
564 #define MakeArray3(a1, a2, a3) \
565 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3)]; \
566 	MakeArg3(0, a1, a2, a3)
567 
568 #define MakeArray4(a1, a2, a3, a4) \
569 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4)]; \
570 	MakeArg4(0, a1, a2, a3, a4)
571 
572 #define MakeArray5(a1, a2, a3, a4, a5) \
573 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5)]; \
574 	MakeArg5(0, a1, a2, a3, a4, a5)
575 
576 #define MakeArray6(a1, a2, a3, a4, a5, a6) \
577 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6)]; \
578 	MakeArg6(0, a1, a2, a3, a4, a5, a6)
579 
580 #define MakeArray7(a1, a2, a3, a4, a5, a6, a7) \
581 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7)]; \
582 	MakeArg7(0, a1, a2, a3, a4, a5, a6, a7)
583 
584 #define MakeArray8(a1, a2, a3, a4, a5, a6, a7, a8) \
585 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8)]; \
586 	MakeArg8(0, a1, a2, a3, a4, a5, a6, a7, a8)
587 
588 #define MakeArray9(a1, a2, a3, a4, a5, a6, a7, a8, a9) \
589 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9)]; \
590 	MakeArg9(0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
591 
592 #define MakeArray10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \
593 	DWORD_PTR __rgArgs[ArgSize(a1) + ArgSize(a2) + ArgSize(a3) + ArgSize(a4) + ArgSize(a5) + ArgSize(a6) + ArgSize(a7) + ArgSize(a8) + ArgSize(a9) + ArgSize(a10)]; \
594 	MakeArg10(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
595 
596 #define MakeArray11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) \
597 	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)]; \
598 	MakeArg11(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
599 
600 #define MakeArray12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) \
601 	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)]; \
602 	MakeArg12(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
603 
604 #define MakeArray13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) \
605 	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)]; \
606 	MakeArg13(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
607 
608 #define MakeArray14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) \
609 	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)]; \
610 	MakeArg14(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
611 
612 #define MakeArray15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) \
613 	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)]; \
614 	MakeArg15(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
615 
616 #define MakeArray16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) \
617 	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)]; \
618 	MakeArg16(0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)
619 
620 
621 
622 #define ValidateParameters1( m, a1 )
623 #define ValidateParameters2( m, a1, a2 ) \
624 			{ HRESULT _hr_; \
625 			MakeArray1(a2); \
626 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
627 #define ValidateParameters3( m, a1, a2, a3 ) \
628 			{ HRESULT _hr_; \
629 			MakeArray2(a2, a3); \
630 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
631 #define ValidateParameters4( m, a1, a2, a3, a4 ) \
632 			{ HRESULT _hr_; \
633 			MakeArray3(a2, a3, a4); \
634 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
635 #define ValidateParameters5( m, a1, a2, a3, a4, a5 ) \
636 			{ HRESULT _hr_; \
637 			MakeArray4(a2, a3, a4, a5); \
638 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
639 #define ValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
640 			{ HRESULT _hr_; \
641 			MakeArray5(a2, a3, a4, a5, a6); \
642 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
643 #define ValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
644 			{ HRESULT _hr_; \
645 			MakeArray6(a2, a3, a4, a5, a6, a7); \
646 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
647 #define ValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
648 			{ HRESULT _hr_; \
649 			MakeArray7(a2, a3, a4, a5, a6, a7, a8); \
650 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
651 #define ValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
652 			{ HRESULT _hr_; \
653 			MakeArray8(a2, a3, a4, a5, a6, a7, a8, a9); \
654 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
655 #define ValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
656 			{ HRESULT _hr_; \
657 			MakeArray9(a2, a3, a4, a5, a6, a7, a8, a9, a10); \
658 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
659 #define ValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
660 			{ HRESULT _hr_; \
661 			MakeArray10(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); \
662 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
663 #define ValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
664 			{ HRESULT _hr_; \
665 			MakeArray11(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
666 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
667 #define ValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
668 			{ HRESULT _hr_; \
669 			MakeArray12(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); \
670 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
671 #define ValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
672 			{ HRESULT _hr_; \
673 			MakeArray13(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); \
674 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
675 #define ValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
676 			{ HRESULT _hr_; \
677 			MakeArray14(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); \
678 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
679 #define ValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
680 			{ HRESULT _hr_; \
681 			MakeArray15(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); \
682 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return (_hr_); }
683 
684 #define UlValidateParameters1( m, a1 )
685 #define UlValidateParameters2( m, a1, a2 ) \
686 			{ HRESULT _hr_; \
687 			MakeArray1(a2); \
688 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
689 #define UlValidateParameters3( m, a1, a2, a3 ) \
690 			{ HRESULT _hr_; \
691 			MakeArray2(a2, a3); \
692 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
693 #define UlValidateParameters4( m, a1, a2, a3, a4 ) \
694 			{ HRESULT _hr_; \
695 			MakeArray3(a2, a3, a4); \
696 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
697 #define UlValidateParameters5( m, a1, a2, a3, a4, a5 ) \
698 			{ HRESULT _hr_; \
699 			MakeArray4(a2, a3, a4, a5); \
700 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
701 #define UlValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
702 			{ HRESULT _hr_; \
703 			MakeArray5(a2, a3, a4, a5, a6); \
704 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
705 #define UlValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
706 			{ HRESULT _hr_; \
707 			MakeArray6(a2, a3, a4, a5, a6, a7); \
708 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
709 #define UlValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
710 			{ HRESULT _hr_; \
711 			MakeArray7(a2, a3, a4, a5, a6, a7, a8); \
712 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
713 #define UlValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
714 			{ HRESULT _hr_; \
715 			MakeArray8(a2, a3, a4, a5, a6, a7, a8, a9); \
716 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
717 #define UlValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
718 			{ HRESULT _hr_; \
719 			MakeArray9(a2, a3, a4, a5, a6, a7, a8, a9, a10); \
720 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
721 #define UlValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
722 			{ HRESULT _hr_; \
723 			MakeArray10(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); \
724 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
725 #define UlValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
726 			{ HRESULT _hr_; \
727 			MakeArray11(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
728 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
729 #define UlValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
730 			{ HRESULT _hr_; \
731 			MakeArray12(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); \
732 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
733 #define UlValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
734 			{ HRESULT _hr_; \
735 			MakeArray13(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); \
736 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
737 #define UlValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
738 			{ HRESULT _hr_; \
739 			MakeArray14(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); \
740 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
741 #define UlValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
742 			{ HRESULT _hr_; \
743 			MakeArray15(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); \
744 			_hr_ = HrValidateParameters(m, (void **)__rgArgs); if (HR_FAILED(_hr_)) return ((ULONG)_hr_); }
745 
746 #ifdef DEBUG
747 #define CheckParameters1( m, a1 )
748 #define CheckParameters2( m, a1, a2 ) \
749 			{ \
750 			MakeArray1(a2); \
751 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
752 #define CheckParameters3( m, a1, a2, a3 ) \
753 			{ \
754 			MakeArray2(a2, a3); \
755 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
756 #define CheckParameters4( m, a1, a2, a3, a4 ) \
757 			{ \
758 			MakeArray3(a2, a3, a4); \
759 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
760 #define CheckParameters5( m, a1, a2, a3, a4, a5 ) \
761 			{ \
762 			MakeArray4(a2, a3, a4, a5); \
763 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
764 #define CheckParameters6( m, a1, a2, a3, a4, a5, a6 ) \
765 			{ \
766 			MakeArray5(a2, a3, a4, a5, a6); \
767 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
768 #define CheckParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
769 			{ \
770 			MakeArray6(a2, a3, a4, a5, a6, a7); \
771 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
772 #define CheckParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
773 			{ \
774 			MakeArray7(a2, a3, a4, a5, a6, a7, a8); \
775 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
776 #define CheckParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
777 			{ \
778 			MakeArray8(a2, a3, a4, a5, a6, a7, a8, a9); \
779 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
780 #define CheckParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
781 			{ \
782 			MakeArray9(a2, a3, a4, a5, a6, a7, a8, a9, a10); \
783 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
784 #define CheckParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
785 			{ \
786 			MakeArray10(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); \
787 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
788 #define CheckParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
789 			{ \
790 			MakeArray11(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
791 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
792 #define CheckParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
793 			{ \
794 			MakeArray12(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); \
795 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
796 #define CheckParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
797 			{ \
798 			MakeArray13(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); \
799 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
800 #define CheckParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
801 			{ \
802 			MakeArray14(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); \
803 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
804 #define CheckParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
805 			{ \
806 			MakeArray15(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); \
807 			AssertSz(HR_SUCCEEDED( HrValidateParameters(m, (void **)__rgArgs)), "Parameter validation failed for method called by MAPI!"); }
808 #else /* DEBUG */
809 #define CheckParameters1( m, a1 )
810 #define CheckParameters2( m, a1, a2 )
811 #define CheckParameters3( m, a1, a2, a3 )
812 #define CheckParameters4( m, a1, a2, a3, a4 )
813 #define CheckParameters5( m, a1, a2, a3, a4, a5 )
814 #define CheckParameters6( m, a1, a2, a3, a4, a5, a6 )
815 #define CheckParameters7( m, a1, a2, a3, a4, a5, a6, a7 )
816 #define CheckParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 )
817 #define CheckParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
818 #define CheckParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
819 #define CheckParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 )
820 #define CheckParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 )
821 #define CheckParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
822 #define CheckParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 )
823 #define CheckParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 )
824 #define CheckParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 )
825 #endif /* DEBUG */
826 #else /* !_AMD64_ && !_X86_ */
827 #define ValidateParms(x)	{ HRESULT _hr_ = HrValidateParametersV x; if (HR_FAILED(_hr_)) return (_hr_); }
828 #define UlValidateParms(x)	{ HRESULT _hr_ = HrValidateParametersV x; if (HR_FAILED(_hr_)) return (ULONG)(_hr_); }
829 #define CheckParms(x) 		AssertSz(HR_SUCCEEDED( HrValidateParametersV x ), "Parameter validation failed for method called by MAPI!")
830 
831 #define ValidateParameters1( m, a1 ) \
832 			ValidateParms( ( m, a1 ) )
833 #define ValidateParameters2( m, a1, a2 )	\
834 			ValidateParms( ( m, a1, a2 ))
835 #define ValidateParameters3( m, a1, a2, a3 )	\
836 			ValidateParms( ( m, a1, a2, a3 ))
837 #define ValidateParameters4( m, a1, a2, a3, a4 ) \
838 			ValidateParms( ( m, a1, a2, a3, a4 ))
839 #define ValidateParameters5( m, a1, a2, a3, a4, a5 ) \
840 			ValidateParms( ( m, a1, a2, a3, a4, a5 ))
841 #define ValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
842 			ValidateParms( ( m, a1, a2, a3, a4, a5, a6 ))
843 #define ValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
844 			ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
845 #define ValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
846 			ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
847 #define ValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
848 			ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
849 #define ValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
850 			ValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
851 #define ValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
852 			ValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
853 #define ValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
854 			ValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
855 #define ValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
856 			ValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
857 #define ValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
858 			ValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
859 #define ValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
860 			ValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
861 #define ValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
862 			ValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
863 
864 #define UlValidateParameters1( m, a1 ) \
865 			UlValidateParms( ( m, a1 ) )
866 #define UlValidateParameters2( m, a1, a2 )	\
867 			UlValidateParms( ( m, a1, a2 ))
868 #define UlValidateParameters3( m, a1, a2, a3 )	\
869 			UlValidateParms( ( m, a1, a2, a3 ))
870 #define UlValidateParameters4( m, a1, a2, a3, a4 ) \
871 			UlValidateParms( ( m, a1, a2, a3, a4 ))
872 #define UlValidateParameters5( m, a1, a2, a3, a4, a5 ) \
873 			UlValidateParms( ( m, a1, a2, a3, a4, a5 ))
874 #define UlValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
875 			UlValidateParms( ( m, a1, a2, a3, a4, a5, a6 ))
876 #define UlValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
877 			UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
878 #define UlValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
879 			UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
880 #define UlValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
881 			UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
882 #define UlValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
883 			UlValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
884 #define UlValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
885 			UlValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
886 #define UlValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
887 			UlValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
888 #define UlValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
889 			UlValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
890 #define UlValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
891 			UlValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
892 #define UlValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
893 			UlValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
894 #define UlValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
895 			UlValidateParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
896 
897 #define CheckParameters1( m, a1 ) \
898 			CheckParms( ( m, a1 ) )
899 #define CheckParameters2( m, a1, a2 )	\
900 			CheckParms( ( m, a1, a2 ))
901 #define CheckParameters3( m, a1, a2, a3 )	\
902 			CheckParms( ( m, a1, a2, a3 ))
903 #define CheckParameters4( m, a1, a2, a3, a4 ) \
904 			CheckParms( ( m, a1, a2, a3, a4 ))
905 #define CheckParameters5( m, a1, a2, a3, a4, a5 ) \
906 			CheckParms( ( m, a1, a2, a3, a4, a5 ))
907 #define CheckParameters6( m, a1, a2, a3, a4, a5, a6 ) \
908 			CheckParms( ( m, a1, a2, a3, a4, a5, a6 ))
909 #define CheckParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
910 			CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
911 #define CheckParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
912 			CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
913 #define CheckParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
914 			CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
915 #define CheckParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
916 			CheckParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
917 #define CheckParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
918 			CheckParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
919 #define CheckParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
920 			CheckParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
921 #define CheckParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
922 			CheckParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
923 #define CheckParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
924 			CheckParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
925 #define CheckParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
926 			CheckParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
927 #define CheckParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
928 			CheckParms( (  m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
929 
930 #endif /* _AMD64_ || _X86_ */
931 
932 
933 /*
934  *  	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
935  */
936 
937 
938 /* IUnknown */
939 
940 #define Validate_IUnknown_QueryInterface( a1, a2, a3 ) \
941 			 ValidateParameters3( IUnknown_QueryInterface, a1, a2, a3 )
942 #define UlValidate_IUnknown_QueryInterface( a1, a2, a3 ) \
943 			 UlValidateParameters3( IUnknown_QueryInterface, a1, a2, a3 )
944 #define CheckParameters_IUnknown_QueryInterface( a1, a2, a3 ) \
945 			 CheckParameters3( IUnknown_QueryInterface, a1, a2, a3 )
946 
947 #define Validate_IUnknown_AddRef( a1 ) \
948 			 ValidateParameters1( IUnknown_AddRef, a1 )
949 #define UlValidate_IUnknown_AddRef( a1 ) \
950 			 UlValidateParameters1( IUnknown_AddRef, a1 )
951 #define CheckParameters_IUnknown_AddRef( a1 ) \
952 			 CheckParameters1( IUnknown_AddRef, a1 )
953 
954 #define Validate_IUnknown_Release( a1 ) \
955 			 ValidateParameters1( IUnknown_Release, a1 )
956 #define UlValidate_IUnknown_Release( a1 ) \
957 			 UlValidateParameters1( IUnknown_Release, a1 )
958 #define CheckParameters_IUnknown_Release( a1 ) \
959 			 CheckParameters1( IUnknown_Release, a1 )
960 
961 
962 /* IMAPIProp */
963 
964 #define Validate_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
965 			 ValidateParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
966 #define UlValidate_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
967 			 UlValidateParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
968 #define CheckParameters_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
969 			 CheckParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
970 
971 #define Validate_IMAPIProp_SaveChanges( a1, a2 ) \
972 			 ValidateParameters2( IMAPIProp_SaveChanges, a1, a2 )
973 #define UlValidate_IMAPIProp_SaveChanges( a1, a2 ) \
974 			 UlValidateParameters2( IMAPIProp_SaveChanges, a1, a2 )
975 #define CheckParameters_IMAPIProp_SaveChanges( a1, a2 ) \
976 			 CheckParameters2( IMAPIProp_SaveChanges, a1, a2 )
977 
978 #define Validate_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
979 			 ValidateParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
980 #define UlValidate_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
981 			 UlValidateParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
982 #define CheckParameters_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
983 			 CheckParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
984 
985 #define Validate_IMAPIProp_GetPropList( a1, a2, a3 ) \
986 			 ValidateParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
987 #define UlValidate_IMAPIProp_GetPropList( a1, a2, a3 ) \
988 			 UlValidateParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
989 #define CheckParameters_IMAPIProp_GetPropList( a1, a2, a3 ) \
990 			 CheckParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
991 
992 #define Validate_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
993 			 ValidateParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
994 #define UlValidate_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
995 			 UlValidateParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
996 #define CheckParameters_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
997 			 CheckParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
998 
999 #define Validate_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
1000 			 ValidateParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
1001 #define UlValidate_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
1002 			 UlValidateParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
1003 #define CheckParameters_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
1004 			 CheckParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
1005 
1006 #define Validate_IMAPIProp_DeleteProps( a1, a2, a3 ) \
1007 			 ValidateParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
1008 #define UlValidate_IMAPIProp_DeleteProps( a1, a2, a3 ) \
1009 			 UlValidateParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
1010 #define CheckParameters_IMAPIProp_DeleteProps( a1, a2, a3 ) \
1011 			 CheckParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
1012 
1013 #define Validate_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
1014 			 ValidateParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
1015 #define UlValidate_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
1016 			 UlValidateParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
1017 #define CheckParameters_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
1018 			 CheckParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
1019 
1020 #define Validate_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
1021 			 ValidateParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
1022 #define UlValidate_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
1023 			 UlValidateParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
1024 #define CheckParameters_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
1025 			 CheckParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
1026 
1027 #define Validate_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
1028 			 ValidateParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
1029 #define UlValidate_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
1030 			 UlValidateParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
1031 #define CheckParameters_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
1032 			 CheckParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
1033 
1034 #define Validate_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
1035 			 ValidateParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
1036 #define UlValidate_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
1037 			 UlValidateParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
1038 #define CheckParameters_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
1039 			 CheckParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
1040 
1041 
1042 /* IMAPITable */
1043 
1044 #define Validate_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
1045 			 ValidateParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
1046 #define UlValidate_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
1047 			 UlValidateParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
1048 #define CheckParameters_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
1049 			 CheckParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
1050 
1051 #define Validate_IMAPITable_Advise( a1, a2, a3, a4 ) \
1052 			 ValidateParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
1053 #define UlValidate_IMAPITable_Advise( a1, a2, a3, a4 ) \
1054 			 UlValidateParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
1055 #define CheckParameters_IMAPITable_Advise( a1, a2, a3, a4 ) \
1056 			 CheckParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
1057 
1058 #define Validate_IMAPITable_Unadvise( a1, a2 ) \
1059 			 ValidateParameters2( IMAPITable_Unadvise, a1, a2 )
1060 #define UlValidate_IMAPITable_Unadvise( a1, a2 ) \
1061 			 UlValidateParameters2( IMAPITable_Unadvise, a1, a2 )
1062 #define CheckParameters_IMAPITable_Unadvise( a1, a2 ) \
1063 			 CheckParameters2( IMAPITable_Unadvise, a1, a2 )
1064 
1065 #define Validate_IMAPITable_GetStatus( a1, a2, a3 ) \
1066 			 ValidateParameters3( IMAPITable_GetStatus, a1, a2, a3 )
1067 #define UlValidate_IMAPITable_GetStatus( a1, a2, a3 ) \
1068 			 UlValidateParameters3( IMAPITable_GetStatus, a1, a2, a3 )
1069 #define CheckParameters_IMAPITable_GetStatus( a1, a2, a3 ) \
1070 			 CheckParameters3( IMAPITable_GetStatus, a1, a2, a3 )
1071 
1072 #define Validate_IMAPITable_SetColumns( a1, a2, a3 ) \
1073 			 ValidateParameters3( IMAPITable_SetColumns, a1, a2, a3 )
1074 #define UlValidate_IMAPITable_SetColumns( a1, a2, a3 ) \
1075 			 UlValidateParameters3( IMAPITable_SetColumns, a1, a2, a3 )
1076 #define CheckParameters_IMAPITable_SetColumns( a1, a2, a3 ) \
1077 			 CheckParameters3( IMAPITable_SetColumns, a1, a2, a3 )
1078 
1079 #define Validate_IMAPITable_QueryColumns( a1, a2, a3 ) \
1080 			 ValidateParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
1081 #define UlValidate_IMAPITable_QueryColumns( a1, a2, a3 ) \
1082 			 UlValidateParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
1083 #define CheckParameters_IMAPITable_QueryColumns( a1, a2, a3 ) \
1084 			 CheckParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
1085 
1086 #define Validate_IMAPITable_GetRowCount( a1, a2, a3 ) \
1087 			 ValidateParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
1088 #define UlValidate_IMAPITable_GetRowCount( a1, a2, a3 ) \
1089 			 UlValidateParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
1090 #define CheckParameters_IMAPITable_GetRowCount( a1, a2, a3 ) \
1091 			 CheckParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
1092 
1093 #define Validate_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
1094 			 ValidateParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
1095 #define UlValidate_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
1096 			 UlValidateParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
1097 #define CheckParameters_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
1098 			 CheckParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
1099 
1100 #define Validate_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
1101 			 ValidateParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
1102 #define UlValidate_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
1103 			 UlValidateParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
1104 #define CheckParameters_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
1105 			 CheckParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
1106 
1107 #define Validate_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
1108 			 ValidateParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
1109 #define UlValidate_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
1110 			 UlValidateParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
1111 #define CheckParameters_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
1112 			 CheckParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
1113 
1114 #define Validate_IMAPITable_FindRow( a1, a2, a3, a4 ) \
1115 			 ValidateParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
1116 #define UlValidate_IMAPITable_FindRow( a1, a2, a3, a4 ) \
1117 			 UlValidateParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
1118 #define CheckParameters_IMAPITable_FindRow( a1, a2, a3, a4 ) \
1119 			 CheckParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
1120 
1121 #define Validate_IMAPITable_Restrict( a1, a2, a3 ) \
1122 			 ValidateParameters3( IMAPITable_Restrict, a1, a2, a3 )
1123 #define UlValidate_IMAPITable_Restrict( a1, a2, a3 ) \
1124 			 UlValidateParameters3( IMAPITable_Restrict, a1, a2, a3 )
1125 #define CheckParameters_IMAPITable_Restrict( a1, a2, a3 ) \
1126 			 CheckParameters3( IMAPITable_Restrict, a1, a2, a3 )
1127 
1128 #define Validate_IMAPITable_CreateBookmark( a1, a2 ) \
1129 			 ValidateParameters2( IMAPITable_CreateBookmark, a1, a2 )
1130 #define UlValidate_IMAPITable_CreateBookmark( a1, a2 ) \
1131 			 UlValidateParameters2( IMAPITable_CreateBookmark, a1, a2 )
1132 #define CheckParameters_IMAPITable_CreateBookmark( a1, a2 ) \
1133 			 CheckParameters2( IMAPITable_CreateBookmark, a1, a2 )
1134 
1135 #define Validate_IMAPITable_FreeBookmark( a1, a2 ) \
1136 			 ValidateParameters2( IMAPITable_FreeBookmark, a1, a2 )
1137 #define UlValidate_IMAPITable_FreeBookmark( a1, a2 ) \
1138 			 UlValidateParameters2( IMAPITable_FreeBookmark, a1, a2 )
1139 #define CheckParameters_IMAPITable_FreeBookmark( a1, a2 ) \
1140 			 CheckParameters2( IMAPITable_FreeBookmark, a1, a2 )
1141 
1142 #define Validate_IMAPITable_SortTable( a1, a2, a3 ) \
1143 			 ValidateParameters3( IMAPITable_SortTable, a1, a2, a3 )
1144 #define UlValidate_IMAPITable_SortTable( a1, a2, a3 ) \
1145 			 UlValidateParameters3( IMAPITable_SortTable, a1, a2, a3 )
1146 #define CheckParameters_IMAPITable_SortTable( a1, a2, a3 ) \
1147 			 CheckParameters3( IMAPITable_SortTable, a1, a2, a3 )
1148 
1149 #define Validate_IMAPITable_QuerySortOrder( a1, a2 ) \
1150 			 ValidateParameters2( IMAPITable_QuerySortOrder, a1, a2 )
1151 #define UlValidate_IMAPITable_QuerySortOrder( a1, a2 ) \
1152 			 UlValidateParameters2( IMAPITable_QuerySortOrder, a1, a2 )
1153 #define CheckParameters_IMAPITable_QuerySortOrder( a1, a2 ) \
1154 			 CheckParameters2( IMAPITable_QuerySortOrder, a1, a2 )
1155 
1156 #define Validate_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
1157 			 ValidateParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
1158 #define UlValidate_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
1159 			 UlValidateParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
1160 #define CheckParameters_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
1161 			 CheckParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
1162 
1163 #define Validate_IMAPITable_Abort( a1 ) \
1164 			 ValidateParameters1( IMAPITable_Abort, a1 )
1165 #define UlValidate_IMAPITable_Abort( a1 ) \
1166 			 UlValidateParameters1( IMAPITable_Abort, a1 )
1167 #define CheckParameters_IMAPITable_Abort( a1 ) \
1168 			 CheckParameters1( IMAPITable_Abort, a1 )
1169 
1170 #define Validate_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
1171 			 ValidateParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
1172 #define UlValidate_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
1173 			 UlValidateParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
1174 #define CheckParameters_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
1175 			 CheckParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
1176 
1177 #define Validate_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
1178 			 ValidateParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
1179 #define UlValidate_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
1180 			 UlValidateParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
1181 #define CheckParameters_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
1182 			 CheckParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
1183 
1184 #define Validate_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
1185 			 ValidateParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
1186 #define UlValidate_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
1187 			 UlValidateParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
1188 #define CheckParameters_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
1189 			 CheckParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
1190 
1191 #define Validate_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
1192 			 ValidateParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
1193 #define UlValidate_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
1194 			 UlValidateParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
1195 #define CheckParameters_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
1196 			 CheckParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
1197 
1198 #define Validate_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
1199 			 ValidateParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
1200 #define UlValidate_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
1201 			 UlValidateParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
1202 #define CheckParameters_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
1203 			 CheckParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
1204 
1205 
1206 /* IMAPIContainer */
1207 
1208 #define Validate_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
1209 			 ValidateParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
1210 #define UlValidate_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
1211 			 UlValidateParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
1212 #define CheckParameters_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
1213 			 CheckParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
1214 
1215 #define Validate_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
1216 			 ValidateParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
1217 #define UlValidate_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
1218 			 UlValidateParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
1219 #define CheckParameters_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
1220 			 CheckParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
1221 
1222 #define Validate_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1223 			 ValidateParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1224 #define UlValidate_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1225 			 UlValidateParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1226 #define CheckParameters_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1227 			 CheckParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1228 
1229 #define Validate_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
1230 			 ValidateParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
1231 #define UlValidate_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
1232 			 UlValidateParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
1233 #define CheckParameters_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
1234 			 CheckParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
1235 
1236 #define Validate_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
1237 			 ValidateParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
1238 #define UlValidate_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
1239 			 UlValidateParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
1240 #define CheckParameters_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
1241 			 CheckParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
1242 
1243 
1244 /* IABContainer */
1245 
1246 #define Validate_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
1247 			 ValidateParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
1248 #define UlValidate_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
1249 			 UlValidateParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
1250 #define CheckParameters_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
1251 			 CheckParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
1252 
1253 #define Validate_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
1254 			 ValidateParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
1255 #define UlValidate_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
1256 			 UlValidateParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
1257 #define CheckParameters_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
1258 			 CheckParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
1259 
1260 #define Validate_IABContainer_DeleteEntries( a1, a2, a3 ) \
1261 			 ValidateParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
1262 #define UlValidate_IABContainer_DeleteEntries( a1, a2, a3 ) \
1263 			 UlValidateParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
1264 #define CheckParameters_IABContainer_DeleteEntries( a1, a2, a3 ) \
1265 			 CheckParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
1266 
1267 #define Validate_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
1268 			 ValidateParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
1269 #define UlValidate_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
1270 			 UlValidateParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
1271 #define CheckParameters_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
1272 			 CheckParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
1273 
1274 
1275 /* IDistList */
1276 
1277 #define Validate_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
1278 			 ValidateParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
1279 #define UlValidate_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
1280 			 UlValidateParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
1281 #define CheckParameters_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
1282 			 CheckParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
1283 
1284 #define Validate_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
1285 			 ValidateParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
1286 #define UlValidate_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
1287 			 UlValidateParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
1288 #define CheckParameters_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
1289 			 CheckParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
1290 
1291 #define Validate_IDistList_DeleteEntries( a1, a2, a3 ) \
1292 			 ValidateParameters3( IDistList_DeleteEntries, a1, a2, a3 )
1293 #define UlValidate_IDistList_DeleteEntries( a1, a2, a3 ) \
1294 			 UlValidateParameters3( IDistList_DeleteEntries, a1, a2, a3 )
1295 #define CheckParameters_IDistList_DeleteEntries( a1, a2, a3 ) \
1296 			 CheckParameters3( IDistList_DeleteEntries, a1, a2, a3 )
1297 
1298 #define Validate_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
1299 			 ValidateParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
1300 #define UlValidate_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
1301 			 UlValidateParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
1302 #define CheckParameters_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
1303 			 CheckParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
1304 
1305 
1306 /* IMAPIFolder */
1307 
1308 #define Validate_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
1309 			 ValidateParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
1310 #define UlValidate_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
1311 			 UlValidateParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
1312 #define CheckParameters_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
1313 			 CheckParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
1314 
1315 #define Validate_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
1316 			 ValidateParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
1317 #define UlValidate_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
1318 			 UlValidateParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
1319 #define CheckParameters_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
1320 			 CheckParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
1321 
1322 #define Validate_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
1323 			 ValidateParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
1324 #define UlValidate_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
1325 			 UlValidateParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
1326 #define CheckParameters_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
1327 			 CheckParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
1328 
1329 #define Validate_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
1330 			 ValidateParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
1331 #define UlValidate_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
1332 			 UlValidateParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
1333 #define CheckParameters_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
1334 			 CheckParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
1335 
1336 #define Validate_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
1337 			 ValidateParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
1338 #define UlValidate_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
1339 			 UlValidateParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
1340 #define CheckParameters_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
1341 			 CheckParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
1342 
1343 #define Validate_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
1344 			 ValidateParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
1345 #define UlValidate_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
1346 			 UlValidateParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
1347 #define CheckParameters_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
1348 			 CheckParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
1349 
1350 #define Validate_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
1351 			 ValidateParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
1352 #define UlValidate_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
1353 			 UlValidateParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
1354 #define CheckParameters_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
1355 			 CheckParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
1356 
1357 #define Validate_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
1358 			 ValidateParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
1359 #define UlValidate_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
1360 			 UlValidateParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
1361 #define CheckParameters_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
1362 			 CheckParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
1363 
1364 #define Validate_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
1365 			 ValidateParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
1366 #define UlValidate_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
1367 			 UlValidateParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
1368 #define CheckParameters_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
1369 			 CheckParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
1370 
1371 #define Validate_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
1372 			 ValidateParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
1373 #define UlValidate_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
1374 			 UlValidateParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
1375 #define CheckParameters_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
1376 			 CheckParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
1377 
1378 #define Validate_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
1379 			 ValidateParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
1380 #define UlValidate_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
1381 			 UlValidateParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
1382 #define CheckParameters_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
1383 			 CheckParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
1384 
1385 
1386 /* IMsgStore */
1387 
1388 #define Validate_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
1389 			 ValidateParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
1390 #define UlValidate_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
1391 			 UlValidateParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
1392 #define CheckParameters_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
1393 			 CheckParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
1394 
1395 #define Validate_IMsgStore_Unadvise( a1, a2 ) \
1396 			 ValidateParameters2( IMsgStore_Unadvise, a1, a2 )
1397 #define UlValidate_IMsgStore_Unadvise( a1, a2 ) \
1398 			 UlValidateParameters2( IMsgStore_Unadvise, a1, a2 )
1399 #define CheckParameters_IMsgStore_Unadvise( a1, a2 ) \
1400 			 CheckParameters2( IMsgStore_Unadvise, a1, a2 )
1401 
1402 #define Validate_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1403 			 ValidateParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1404 #define UlValidate_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1405 			 UlValidateParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1406 #define CheckParameters_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1407 			 CheckParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1408 
1409 #define Validate_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1410 			 ValidateParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1411 #define UlValidate_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1412 			 UlValidateParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1413 #define CheckParameters_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1414 			 CheckParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1415 
1416 #define Validate_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
1417 			 ValidateParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
1418 #define UlValidate_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
1419 			 UlValidateParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
1420 #define CheckParameters_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
1421 			 CheckParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
1422 
1423 #define Validate_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
1424 			 ValidateParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
1425 #define UlValidate_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
1426 			 UlValidateParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
1427 #define CheckParameters_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
1428 			 CheckParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
1429 
1430 #define Validate_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
1431 			 ValidateParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
1432 #define UlValidate_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
1433 			 UlValidateParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
1434 #define CheckParameters_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
1435 			 CheckParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
1436 
1437 #define Validate_IMsgStore_StoreLogoff( a1, a2 ) \
1438 			 ValidateParameters2( IMsgStore_StoreLogoff, a1, a2 )
1439 #define UlValidate_IMsgStore_StoreLogoff( a1, a2 ) \
1440 			 UlValidateParameters2( IMsgStore_StoreLogoff, a1, a2 )
1441 #define CheckParameters_IMsgStore_StoreLogoff( a1, a2 ) \
1442 			 CheckParameters2( IMsgStore_StoreLogoff, a1, a2 )
1443 
1444 #define Validate_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
1445 			 ValidateParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
1446 #define UlValidate_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
1447 			 UlValidateParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
1448 #define CheckParameters_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
1449 			 CheckParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
1450 
1451 #define Validate_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
1452 			 ValidateParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
1453 #define UlValidate_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
1454 			 UlValidateParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
1455 #define CheckParameters_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
1456 			 CheckParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
1457 
1458 #define Validate_IMsgStore_SetLockState( a1, a2, a3 ) \
1459 			 ValidateParameters3( IMsgStore_SetLockState, a1, a2, a3 )
1460 #define UlValidate_IMsgStore_SetLockState( a1, a2, a3 ) \
1461 			 UlValidateParameters3( IMsgStore_SetLockState, a1, a2, a3 )
1462 #define CheckParameters_IMsgStore_SetLockState( a1, a2, a3 ) \
1463 			 CheckParameters3( IMsgStore_SetLockState, a1, a2, a3 )
1464 
1465 #define Validate_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
1466 			 ValidateParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
1467 #define UlValidate_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
1468 			 UlValidateParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
1469 #define CheckParameters_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
1470 			 CheckParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
1471 
1472 #define Validate_IMsgStore_NotifyNewMail( a1, a2 ) \
1473 			 ValidateParameters2( IMsgStore_NotifyNewMail, a1, a2 )
1474 #define UlValidate_IMsgStore_NotifyNewMail( a1, a2 ) \
1475 			 UlValidateParameters2( IMsgStore_NotifyNewMail, a1, a2 )
1476 #define CheckParameters_IMsgStore_NotifyNewMail( a1, a2 ) \
1477 			 CheckParameters2( IMsgStore_NotifyNewMail, a1, a2 )
1478 
1479 
1480 /* IMessage */
1481 
1482 #define Validate_IMessage_GetAttachmentTable( a1, a2, a3 ) \
1483 			 ValidateParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
1484 #define UlValidate_IMessage_GetAttachmentTable( a1, a2, a3 ) \
1485 			 UlValidateParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
1486 #define CheckParameters_IMessage_GetAttachmentTable( a1, a2, a3 ) \
1487 			 CheckParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
1488 
1489 #define Validate_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
1490 			 ValidateParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
1491 #define UlValidate_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
1492 			 UlValidateParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
1493 #define CheckParameters_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
1494 			 CheckParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
1495 
1496 #define Validate_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
1497 			 ValidateParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
1498 #define UlValidate_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
1499 			 UlValidateParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
1500 #define CheckParameters_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
1501 			 CheckParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
1502 
1503 #define Validate_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
1504 			 ValidateParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
1505 #define UlValidate_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
1506 			 UlValidateParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
1507 #define CheckParameters_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
1508 			 CheckParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
1509 
1510 #define Validate_IMessage_GetRecipientTable( a1, a2, a3 ) \
1511 			 ValidateParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
1512 #define UlValidate_IMessage_GetRecipientTable( a1, a2, a3 ) \
1513 			 UlValidateParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
1514 #define CheckParameters_IMessage_GetRecipientTable( a1, a2, a3 ) \
1515 			 CheckParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
1516 
1517 #define Validate_IMessage_ModifyRecipients( a1, a2, a3 ) \
1518 			 ValidateParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
1519 #define UlValidate_IMessage_ModifyRecipients( a1, a2, a3 ) \
1520 			 UlValidateParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
1521 #define CheckParameters_IMessage_ModifyRecipients( a1, a2, a3 ) \
1522 			 CheckParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
1523 
1524 #define Validate_IMessage_SubmitMessage( a1, a2 ) \
1525 			 ValidateParameters2( IMessage_SubmitMessage, a1, a2 )
1526 #define UlValidate_IMessage_SubmitMessage( a1, a2 ) \
1527 			 UlValidateParameters2( IMessage_SubmitMessage, a1, a2 )
1528 #define CheckParameters_IMessage_SubmitMessage( a1, a2 ) \
1529 			 CheckParameters2( IMessage_SubmitMessage, a1, a2 )
1530 
1531 #define Validate_IMessage_SetReadFlag( a1, a2 ) \
1532 			 ValidateParameters2( IMessage_SetReadFlag, a1, a2 )
1533 #define UlValidate_IMessage_SetReadFlag( a1, a2 ) \
1534 			 UlValidateParameters2( IMessage_SetReadFlag, a1, a2 )
1535 #define CheckParameters_IMessage_SetReadFlag( a1, a2 ) \
1536 			 CheckParameters2( IMessage_SetReadFlag, a1, a2 )
1537 
1538 
1539 /* IABProvider */
1540 
1541 #define Validate_IABProvider_Shutdown( a1, a2 ) \
1542 			 ValidateParameters2( IABProvider_Shutdown, a1, a2 )
1543 #define UlValidate_IABProvider_Shutdown( a1, a2 ) \
1544 			 UlValidateParameters2( IABProvider_Shutdown, a1, a2 )
1545 #define CheckParameters_IABProvider_Shutdown( a1, a2 ) \
1546 			 CheckParameters2( IABProvider_Shutdown, a1, a2 )
1547 
1548 #define Validate_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
1549 			 ValidateParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
1550 #define UlValidate_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
1551 			 UlValidateParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
1552 #define CheckParameters_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
1553 			 CheckParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
1554 
1555 
1556 /* IABLogon */
1557 
1558 #define Validate_IABLogon_GetLastError( a1, a2, a3, a4 ) \
1559 			 ValidateParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
1560 #define UlValidate_IABLogon_GetLastError( a1, a2, a3, a4 ) \
1561 			 UlValidateParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
1562 #define CheckParameters_IABLogon_GetLastError( a1, a2, a3, a4 ) \
1563 			 CheckParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
1564 
1565 #define Validate_IABLogon_Logoff( a1, a2 ) \
1566 			 ValidateParameters2( IABLogon_Logoff, a1, a2 )
1567 #define UlValidate_IABLogon_Logoff( a1, a2 ) \
1568 			 UlValidateParameters2( IABLogon_Logoff, a1, a2 )
1569 #define CheckParameters_IABLogon_Logoff( a1, a2 ) \
1570 			 CheckParameters2( IABLogon_Logoff, a1, a2 )
1571 
1572 #define Validate_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1573 			 ValidateParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1574 #define UlValidate_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1575 			 UlValidateParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1576 #define CheckParameters_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1577 			 CheckParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1578 
1579 #define Validate_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1580 			 ValidateParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1581 #define UlValidate_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1582 			 UlValidateParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1583 #define CheckParameters_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1584 			 CheckParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1585 
1586 #define Validate_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
1587 			 ValidateParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
1588 #define UlValidate_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
1589 			 UlValidateParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
1590 #define CheckParameters_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
1591 			 CheckParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
1592 
1593 #define Validate_IABLogon_Unadvise( a1, a2 ) \
1594 			 ValidateParameters2( IABLogon_Unadvise, a1, a2 )
1595 #define UlValidate_IABLogon_Unadvise( a1, a2 ) \
1596 			 UlValidateParameters2( IABLogon_Unadvise, a1, a2 )
1597 #define CheckParameters_IABLogon_Unadvise( a1, a2 ) \
1598 			 CheckParameters2( IABLogon_Unadvise, a1, a2 )
1599 
1600 #define Validate_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1601 			 ValidateParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1602 #define UlValidate_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1603 			 UlValidateParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1604 #define CheckParameters_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1605 			 CheckParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1606 
1607 #define Validate_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
1608 			 ValidateParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
1609 #define UlValidate_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
1610 			 UlValidateParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
1611 #define CheckParameters_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
1612 			 CheckParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
1613 
1614 #define Validate_IABLogon_GetOneOffTable( a1, a2, a3 ) \
1615 			 ValidateParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
1616 #define UlValidate_IABLogon_GetOneOffTable( a1, a2, a3 ) \
1617 			 UlValidateParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
1618 #define CheckParameters_IABLogon_GetOneOffTable( a1, a2, a3 ) \
1619 			 CheckParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
1620 
1621 #define Validate_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
1622 			 ValidateParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
1623 #define UlValidate_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
1624 			 UlValidateParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
1625 #define CheckParameters_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
1626 			 CheckParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
1627 
1628 
1629 /* IXPProvider */
1630 
1631 #define Validate_IXPProvider_Shutdown( a1, a2 ) \
1632 			 ValidateParameters2( IXPProvider_Shutdown, a1, a2 )
1633 #define UlValidate_IXPProvider_Shutdown( a1, a2 ) \
1634 			 UlValidateParameters2( IXPProvider_Shutdown, a1, a2 )
1635 #define CheckParameters_IXPProvider_Shutdown( a1, a2 ) \
1636 			 CheckParameters2( IXPProvider_Shutdown, a1, a2 )
1637 
1638 #define Validate_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
1639 			 ValidateParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
1640 #define UlValidate_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
1641 			 UlValidateParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
1642 #define CheckParameters_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
1643 			 CheckParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
1644 
1645 
1646 /* IXPLogon */
1647 
1648 #define Validate_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
1649 			 ValidateParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
1650 #define UlValidate_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
1651 			 UlValidateParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
1652 #define CheckParameters_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
1653 			 CheckParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
1654 
1655 #define Validate_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
1656 			 ValidateParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
1657 #define UlValidate_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
1658 			 UlValidateParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
1659 #define CheckParameters_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
1660 			 CheckParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
1661 
1662 #define Validate_IXPLogon_TransportNotify( a1, a2, a3 ) \
1663 			 ValidateParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
1664 #define UlValidate_IXPLogon_TransportNotify( a1, a2, a3 ) \
1665 			 UlValidateParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
1666 #define CheckParameters_IXPLogon_TransportNotify( a1, a2, a3 ) \
1667 			 CheckParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
1668 
1669 #define Validate_IXPLogon_Idle( a1, a2 ) \
1670 			 ValidateParameters2( IXPLogon_Idle, a1, a2 )
1671 #define UlValidate_IXPLogon_Idle( a1, a2 ) \
1672 			 UlValidateParameters2( IXPLogon_Idle, a1, a2 )
1673 #define CheckParameters_IXPLogon_Idle( a1, a2 ) \
1674 			 CheckParameters2( IXPLogon_Idle, a1, a2 )
1675 
1676 #define Validate_IXPLogon_TransportLogoff( a1, a2 ) \
1677 			 ValidateParameters2( IXPLogon_TransportLogoff, a1, a2 )
1678 #define UlValidate_IXPLogon_TransportLogoff( a1, a2 ) \
1679 			 UlValidateParameters2( IXPLogon_TransportLogoff, a1, a2 )
1680 #define CheckParameters_IXPLogon_TransportLogoff( a1, a2 ) \
1681 			 CheckParameters2( IXPLogon_TransportLogoff, a1, a2 )
1682 
1683 #define Validate_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
1684 			 ValidateParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
1685 #define UlValidate_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
1686 			 UlValidateParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
1687 #define CheckParameters_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
1688 			 CheckParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
1689 
1690 #define Validate_IXPLogon_EndMessage( a1, a2, a3 ) \
1691 			 ValidateParameters3( IXPLogon_EndMessage, a1, a2, a3 )
1692 #define UlValidate_IXPLogon_EndMessage( a1, a2, a3 ) \
1693 			 UlValidateParameters3( IXPLogon_EndMessage, a1, a2, a3 )
1694 #define CheckParameters_IXPLogon_EndMessage( a1, a2, a3 ) \
1695 			 CheckParameters3( IXPLogon_EndMessage, a1, a2, a3 )
1696 
1697 #define Validate_IXPLogon_Poll( a1, a2 ) \
1698 			 ValidateParameters2( IXPLogon_Poll, a1, a2 )
1699 #define UlValidate_IXPLogon_Poll( a1, a2 ) \
1700 			 UlValidateParameters2( IXPLogon_Poll, a1, a2 )
1701 #define CheckParameters_IXPLogon_Poll( a1, a2 ) \
1702 			 CheckParameters2( IXPLogon_Poll, a1, a2 )
1703 
1704 #define Validate_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
1705 			 ValidateParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
1706 #define UlValidate_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
1707 			 UlValidateParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
1708 #define CheckParameters_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
1709 			 CheckParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
1710 
1711 #define Validate_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1712 			 ValidateParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1713 #define UlValidate_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1714 			 UlValidateParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1715 #define CheckParameters_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1716 			 CheckParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1717 
1718 #define Validate_IXPLogon_ValidateState( a1, a2, a3 ) \
1719 			 ValidateParameters3( IXPLogon_ValidateState, a1, a2, a3 )
1720 #define UlValidate_IXPLogon_ValidateState( a1, a2, a3 ) \
1721 			 UlValidateParameters3( IXPLogon_ValidateState, a1, a2, a3 )
1722 #define CheckParameters_IXPLogon_ValidateState( a1, a2, a3 ) \
1723 			 CheckParameters3( IXPLogon_ValidateState, a1, a2, a3 )
1724 
1725 #define Validate_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
1726 			 ValidateParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
1727 #define UlValidate_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
1728 			 UlValidateParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
1729 #define CheckParameters_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
1730 			 CheckParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
1731 
1732 
1733 /* IMSProvider */
1734 
1735 #define Validate_IMSProvider_Shutdown( a1, a2 ) \
1736 			 ValidateParameters2( IMSProvider_Shutdown, a1, a2 )
1737 #define UlValidate_IMSProvider_Shutdown( a1, a2 ) \
1738 			 UlValidateParameters2( IMSProvider_Shutdown, a1, a2 )
1739 #define CheckParameters_IMSProvider_Shutdown( a1, a2 ) \
1740 			 CheckParameters2( IMSProvider_Shutdown, a1, a2 )
1741 
1742 #define Validate_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
1743 			 ValidateParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
1744 #define UlValidate_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
1745 			 UlValidateParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
1746 #define CheckParameters_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
1747 			 CheckParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
1748 
1749 #define Validate_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
1750 			 ValidateParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
1751 #define UlValidate_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
1752 			 UlValidateParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
1753 #define CheckParameters_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
1754 			 CheckParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
1755 
1756 #define Validate_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1757 			 ValidateParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
1758 #define UlValidate_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1759 			 UlValidateParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
1760 #define CheckParameters_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1761 			 CheckParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
1762 
1763 
1764 /* IMSLogon */
1765 
1766 #define Validate_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
1767 			 ValidateParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
1768 #define UlValidate_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
1769 			 UlValidateParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
1770 #define CheckParameters_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
1771 			 CheckParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
1772 
1773 #define Validate_IMSLogon_Logoff( a1, a2 ) \
1774 			 ValidateParameters2( IMSLogon_Logoff, a1, a2 )
1775 #define UlValidate_IMSLogon_Logoff( a1, a2 ) \
1776 			 UlValidateParameters2( IMSLogon_Logoff, a1, a2 )
1777 #define CheckParameters_IMSLogon_Logoff( a1, a2 ) \
1778 			 CheckParameters2( IMSLogon_Logoff, a1, a2 )
1779 
1780 #define Validate_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1781 			 ValidateParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1782 #define UlValidate_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1783 			 UlValidateParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1784 #define CheckParameters_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
1785 			 CheckParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
1786 
1787 #define Validate_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1788 			 ValidateParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1789 #define UlValidate_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1790 			 UlValidateParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1791 #define CheckParameters_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
1792 			 CheckParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
1793 
1794 #define Validate_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
1795 			 ValidateParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
1796 #define UlValidate_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
1797 			 UlValidateParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
1798 #define CheckParameters_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
1799 			 CheckParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
1800 
1801 #define Validate_IMSLogon_Unadvise( a1, a2 ) \
1802 			 ValidateParameters2( IMSLogon_Unadvise, a1, a2 )
1803 #define UlValidate_IMSLogon_Unadvise( a1, a2 ) \
1804 			 UlValidateParameters2( IMSLogon_Unadvise, a1, a2 )
1805 #define CheckParameters_IMSLogon_Unadvise( a1, a2 ) \
1806 			 CheckParameters2( IMSLogon_Unadvise, a1, a2 )
1807 
1808 #define Validate_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1809 			 ValidateParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1810 #define UlValidate_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1811 			 UlValidateParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1812 #define CheckParameters_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
1813 			 CheckParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
1814 
1815 
1816 /* IMAPIControl */
1817 
1818 #define Validate_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
1819 			 ValidateParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
1820 #define UlValidate_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
1821 			 UlValidateParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
1822 #define CheckParameters_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
1823 			 CheckParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
1824 
1825 #define Validate_IMAPIControl_Activate( a1, a2, a3 ) \
1826 			 ValidateParameters3( IMAPIControl_Activate, a1, a2, a3 )
1827 #define UlValidate_IMAPIControl_Activate( a1, a2, a3 ) \
1828 			 UlValidateParameters3( IMAPIControl_Activate, a1, a2, a3 )
1829 #define CheckParameters_IMAPIControl_Activate( a1, a2, a3 ) \
1830 			 CheckParameters3( IMAPIControl_Activate, a1, a2, a3 )
1831 
1832 #define Validate_IMAPIControl_GetState( a1, a2, a3 ) \
1833 			 ValidateParameters3( IMAPIControl_GetState, a1, a2, a3 )
1834 #define UlValidate_IMAPIControl_GetState( a1, a2, a3 ) \
1835 			 UlValidateParameters3( IMAPIControl_GetState, a1, a2, a3 )
1836 #define CheckParameters_IMAPIControl_GetState( a1, a2, a3 ) \
1837 			 CheckParameters3( IMAPIControl_GetState, a1, a2, a3 )
1838 
1839 
1840 /* IMAPIStatus */
1841 
1842 #define Validate_IMAPIStatus_ValidateState( a1, a2, a3 ) \
1843 			 ValidateParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
1844 #define UlValidate_IMAPIStatus_ValidateState( a1, a2, a3 ) \
1845 			 UlValidateParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
1846 #define CheckParameters_IMAPIStatus_ValidateState( a1, a2, a3 ) \
1847 			 CheckParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
1848 
1849 #define Validate_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
1850 			 ValidateParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
1851 #define UlValidate_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
1852 			 UlValidateParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
1853 #define CheckParameters_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
1854 			 CheckParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
1855 
1856 #define Validate_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
1857 			 ValidateParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
1858 #define UlValidate_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
1859 			 UlValidateParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
1860 #define CheckParameters_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
1861 			 CheckParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
1862 
1863 #define Validate_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
1864 			 ValidateParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
1865 #define UlValidate_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
1866 			 UlValidateParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
1867 #define CheckParameters_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
1868 			 CheckParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
1869 
1870 
1871 /* IStream */
1872 
1873 #define Validate_IStream_Read( a1, a2, a3, a4 ) \
1874 			 ValidateParameters4( IStream__Read, a1, a2, a3, a4 )
1875 #define UlValidate_IStream_Read( a1, a2, a3, a4 ) \
1876 			 UlValidateParameters4( IStream__Read, a1, a2, a3, a4 )
1877 #define CheckParameters_IStream_Read( a1, a2, a3, a4 ) \
1878 			 CheckParameters4( IStream__Read, a1, a2, a3, a4 )
1879 
1880 #define Validate_IStream_Write( a1, a2, a3, a4 ) \
1881 			 ValidateParameters4( IStream__Write, a1, a2, a3, a4 )
1882 #define UlValidate_IStream_Write( a1, a2, a3, a4 ) \
1883 			 UlValidateParameters4( IStream__Write, a1, a2, a3, a4 )
1884 #define CheckParameters_IStream_Write( a1, a2, a3, a4 ) \
1885 			 CheckParameters4( IStream__Write, a1, a2, a3, a4 )
1886 
1887 #define Validate_IStream_Seek( a1, a2, a3, a4 ) \
1888 			 ValidateParameters4( IStream_Seek, a1, a2, a3, a4 )
1889 #define UlValidate_IStream_Seek( a1, a2, a3, a4 ) \
1890 			 UlValidateParameters4( IStream_Seek, a1, a2, a3, a4 )
1891 #define CheckParameters_IStream_Seek( a1, a2, a3, a4 ) \
1892 			 CheckParameters4( IStream_Seek, a1, a2, a3, a4 )
1893 
1894 #define Validate_IStream_SetSize( a1, a2 ) \
1895 			 ValidateParameters2( IStream_SetSize, a1, a2 )
1896 #define UlValidate_IStream_SetSize( a1, a2 ) \
1897 			 UlValidateParameters2( IStream_SetSize, a1, a2 )
1898 #define CheckParameters_IStream_SetSize( a1, a2 ) \
1899 			 CheckParameters2( IStream_SetSize, a1, a2 )
1900 
1901 #define Validate_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
1902 			 ValidateParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
1903 #define UlValidate_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
1904 			 UlValidateParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
1905 #define CheckParameters_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
1906 			 CheckParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
1907 
1908 #define Validate_IStream_Commit( a1, a2 ) \
1909 			 ValidateParameters2( IStream_Commit, a1, a2 )
1910 #define UlValidate_IStream_Commit( a1, a2 ) \
1911 			 UlValidateParameters2( IStream_Commit, a1, a2 )
1912 #define CheckParameters_IStream_Commit( a1, a2 ) \
1913 			 CheckParameters2( IStream_Commit, a1, a2 )
1914 
1915 #define Validate_IStream_Revert( a1 ) \
1916 			 ValidateParameters1( IStream_Revert, a1 )
1917 #define UlValidate_IStream_Revert( a1 ) \
1918 			 UlValidateParameters1( IStream_Revert, a1 )
1919 #define CheckParameters_IStream_Revert( a1 ) \
1920 			 CheckParameters1( IStream_Revert, a1 )
1921 
1922 #define Validate_IStream_LockRegion( a1, a2, a3, a4 ) \
1923 			 ValidateParameters4( IStream_LockRegion, a1, a2, a3, a4 )
1924 #define UlValidate_IStream_LockRegion( a1, a2, a3, a4 ) \
1925 			 UlValidateParameters4( IStream_LockRegion, a1, a2, a3, a4 )
1926 #define CheckParameters_IStream_LockRegion( a1, a2, a3, a4 ) \
1927 			 CheckParameters4( IStream_LockRegion, a1, a2, a3, a4 )
1928 
1929 #define Validate_IStream_UnlockRegion( a1, a2, a3, a4 ) \
1930 			 ValidateParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
1931 #define UlValidate_IStream_UnlockRegion( a1, a2, a3, a4 ) \
1932 			 UlValidateParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
1933 #define CheckParameters_IStream_UnlockRegion( a1, a2, a3, a4 ) \
1934 			 CheckParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
1935 
1936 #define Validate_IStream_Stat( a1, a2, a3 ) \
1937 			 ValidateParameters3( IStream_Stat, a1, a2, a3 )
1938 #define UlValidate_IStream_Stat( a1, a2, a3 ) \
1939 			 UlValidateParameters3( IStream_Stat, a1, a2, a3 )
1940 #define CheckParameters_IStream_Stat( a1, a2, a3 ) \
1941 			 CheckParameters3( IStream_Stat, a1, a2, a3 )
1942 
1943 #define Validate_IStream_Clone( a1, a2 ) \
1944 			 ValidateParameters2( IStream_Clone, a1, a2 )
1945 #define UlValidate_IStream_Clone( a1, a2 ) \
1946 			 UlValidateParameters2( IStream_Clone, a1, a2 )
1947 #define CheckParameters_IStream_Clone( a1, a2 ) \
1948 			 CheckParameters2( IStream_Clone, a1, a2 )
1949 
1950 
1951 /* IMAPIAdviseSink */
1952 
1953 #define Validate_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
1954 			 ValidateParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
1955 #define UlValidate_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
1956 			 UlValidateParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
1957 #define CheckParameters_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
1958 			 CheckParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
1959 
1960 #if defined(_AMD64_) || defined(_X86_)
1961 STDAPI	HrValidateParameters( METHODS eMethod, LPVOID FAR *ppFirstArg );
1962 #elif defined(DOS) || defined(_MAC)
1963 STDAPIV	HrValidateParametersV( METHODS eMethod, ... );
1964 STDAPIV HrValidateParametersValist( METHODS eMethod, va_list arglist );
1965 #else
1966 #error	"Unknown Platform: MAPI is currently supported on Win32 and Win64"
1967 #endif
1968 
1969 #ifdef __cplusplus
1970 }
1971 #endif
1972 
1973 #endif	/* _INC_VALIDATE */
1974 
1975 
1976