[PSDK] disable SAL for WIDL as well
[reactos.git] / reactos / sdk / include / psdk / sal.h
1 /*
2 * sal.h
3 *
4 * Standard Annotation Language (SAL) definitions
5 *
6 * This file is part of the ReactOS PSDK package.
7 *
8 * Contributors:
9 * Timo Kreuzer (timo.kreuzer@reactos.org)
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #pragma once
24 #define __ATTR_SAL
25 #define _SAL_VERSION 20
26
27 /* HACK: gcc's C++ headers conflict with oldstyle macros */
28 #if !defined(__cplusplus) || !defined(__GNUC__)
29 #include <sal_old.h>
30 #endif
31
32 /* Disable expansion for MIDL and RC */
33 #if defined(MIDL_PASS) || defined(__midl) || defined(__WIDL__) || defined(RC_INVOKED) // [
34 #undef _PREFAST_
35 #endif // ]
36
37 /* Check for deprecated use of declspecs for sal */
38 #if defined(_USE_DECLSPECS_FOR_SAL) && _USE_DECLSPECS_FOR_SAL // [
39 #pragma message("declspecs for sal are deprecated.")
40 #ifdef _PREFAST_ // [
41 #error Support for _USE_DECLSPECS_FOR_SAL is dropped
42 #endif // ] _PREFAST_
43 #endif // ] _USE_DECLSPECS_FOR_SAL
44
45 #undef _USE_DECLSPECS_FOR_SAL
46 #undef _USE_ATTRIBUTES_FOR_SAL
47 #define _USE_DECLSPECS_FOR_SAL 0
48 #define _USE_ATTRIBUTES_FOR_SAL 1
49
50 #ifdef _PREFAST_ // [
51
52 #if _MSC_VER < 1610 // [
53 #error broken
54 #endif // ]
55
56 #pragma warning(disable:6320) /* Disable warning about SEH filter */
57 #pragma warning(disable:28247) /* Duplicated model file annotations */
58 #pragma warning(disable:28251) /* Inconsistent annotation */
59 #ifndef _M_IX86 // [
60 #pragma warning(disable:28110 28111 28161 28162) /* Floating point save */
61 #endif // ]
62
63 /******************************************************************************/
64 //#include "codeanalysis\sourceannotations.h"
65
66 #if !defined(_W64)
67 #if !defined(__midl) && (defined(_X86_) || defined(_M_IX86))
68 #define _W64 __w64
69 #else
70 #define _W64
71 #endif
72 #endif
73
74 #ifndef _SIZE_T_DEFINED
75 #ifdef _WIN64
76 typedef unsigned __int64 size_t;
77 #else
78 typedef _W64 unsigned int size_t;
79 #endif
80 #define _SIZE_T_DEFINED
81 #endif
82
83 #ifndef _WCHAR_T_DEFINED
84 typedef unsigned short wchar_t;
85 #define _WCHAR_T_DEFINED
86 #endif
87
88 #pragma push_macro("_SA")
89 #pragma push_macro("_REPEATABLE")
90 #pragma push_macro("_SRC_ANNO")
91 #pragma push_macro("_SRC_ANNO_REPEATABLE")
92 #pragma push_macro("_CPLUSPLUSONLY")
93
94 #ifdef __cplusplus
95 namespace vc_attributes {
96 #define _SA(id) id
97 #define _REPEATABLE [repeatable]
98 #define _CPLUSPLUSONLY(x) x
99 #else // !__cplusplus
100 #define _SA(id) SA_##id
101 #define _REPEATABLE
102 #define _CPLUSPLUSONLY(x)
103 #endif // !__cplusplus
104
105 #define _SRC_ANNO(x) [source_annotation_attribute(_SA(All))] struct x
106 #define _SRC_ANNO_REPEATABLE(x) _REPEATABLE _SRC_ANNO(x)
107
108 typedef enum _SA(YesNoMaybe)
109 {
110 _SA(No) = 0x0fff0001,
111 _SA(Maybe) = 0x0fff0010,
112 _SA(Yes) = 0x0fff0100
113 } _SA(YesNoMaybe);
114
115 typedef enum _SA(AccessType)
116 {
117 _SA(NoAccess) = 0,
118 _SA(Read) = 1,
119 _SA(Write) = 2,
120 _SA(ReadWrite) = 3
121 } _SA(AccessType);
122
123 #ifndef SAL_NO_ATTRIBUTE_DECLARATIONS
124
125 _SRC_ANNO_REPEATABLE(PreAttribute)
126 {
127 _CPLUSPLUSONLY(PreAttribute();)
128 unsigned int Deref;
129 _SA(YesNoMaybe) Valid;
130 _SA(YesNoMaybe) Null;
131 _SA(YesNoMaybe) Tainted;
132 _SA(AccessType) Access;
133 unsigned int Notref;
134 size_t ValidElementsConst;
135 size_t ValidBytesConst;
136 const wchar_t* ValidElements;
137 const wchar_t* ValidBytes;
138 const wchar_t* ValidElementsLength;
139 const wchar_t* ValidBytesLength;
140 size_t WritableElementsConst;
141 size_t WritableBytesConst;
142 const wchar_t* WritableElements;
143 const wchar_t* WritableBytes;
144 const wchar_t* WritableElementsLength;
145 const wchar_t* WritableBytesLength;
146 size_t ElementSizeConst;
147 const wchar_t* ElementSize;
148 _SA(YesNoMaybe) NullTerminated;
149 const wchar_t* Condition;
150 };
151
152 _SRC_ANNO_REPEATABLE(PostAttribute)
153 {
154 _CPLUSPLUSONLY(PostAttribute();)
155 unsigned int Deref;
156 _SA(YesNoMaybe) Valid;
157 _SA(YesNoMaybe) Null;
158 _SA(YesNoMaybe) Tainted;
159 _SA(AccessType) Access;
160 unsigned int Notref;
161 size_t ValidElementsConst;
162 size_t ValidBytesConst;
163 const wchar_t* ValidElements;
164 const wchar_t* ValidBytes;
165 const wchar_t* ValidElementsLength;
166 const wchar_t* ValidBytesLength;
167 size_t WritableElementsConst;
168 size_t WritableBytesConst;
169 const wchar_t* WritableElements;
170 const wchar_t* WritableBytes;
171 const wchar_t* WritableElementsLength;
172 const wchar_t* WritableBytesLength;
173 size_t ElementSizeConst;
174 const wchar_t* ElementSize;
175 _SA(YesNoMaybe) NullTerminated;
176 _SA(YesNoMaybe) MustCheck;
177 const wchar_t* Condition;
178 };
179
180 _SRC_ANNO(FormatStringAttribute)
181 {
182 _CPLUSPLUSONLY(FormatStringAttribute();)
183 const wchar_t* Style;
184 const wchar_t* UnformattedAlternative;
185 };
186
187 _SRC_ANNO_REPEATABLE(InvalidCheckAttribute)
188 {
189 _CPLUSPLUSONLY(InvalidCheckAttribute();)
190 long Value;
191 };
192
193 _SRC_ANNO(SuccessAttribute)
194 {
195 _CPLUSPLUSONLY(SuccessAttribute();)
196 const wchar_t* Condition;
197 };
198
199 _SRC_ANNO_REPEATABLE(PreBoundAttribute)
200 {
201 _CPLUSPLUSONLY(PreBoundAttribute();)
202 unsigned int Deref;
203 };
204
205 _SRC_ANNO_REPEATABLE(PostBoundAttribute)
206 {
207 _CPLUSPLUSONLY(PostBoundAttribute();)
208 unsigned int Deref;
209 };
210
211 _SRC_ANNO_REPEATABLE(PreRangeAttribute)
212 {
213 _CPLUSPLUSONLY(PreRangeAttribute();)
214 unsigned int Deref;
215 const char* MinVal;
216 const char* MaxVal;
217 };
218
219 _SRC_ANNO_REPEATABLE(PostRangeAttribute)
220 {
221 _CPLUSPLUSONLY(PostRangeAttribute();)
222 unsigned int Deref;
223 const char* MinVal;
224 const char* MaxVal;
225 };
226
227 _SRC_ANNO_REPEATABLE(DerefAttribute)
228 {
229 _CPLUSPLUSONLY(DerefAttribute();)
230 int unused;
231 };
232
233 _SRC_ANNO_REPEATABLE(NotrefAttribute)
234 {
235 _CPLUSPLUSONLY(NotrefAttribute();)
236 int unused;
237 };
238
239 _SRC_ANNO_REPEATABLE(AnnotesAttribute)
240 {
241 _CPLUSPLUSONLY(AnnotesAttribute();)
242 wchar_t *Name;
243 wchar_t *p1;
244 wchar_t *p2;
245 wchar_t *p3;
246 wchar_t *p4;
247 wchar_t *p5;
248 wchar_t *p6;
249 wchar_t *p7;
250 wchar_t *p8;
251 wchar_t *p9;
252 };
253
254 _SRC_ANNO_REPEATABLE(AtAttribute)
255 {
256 _CPLUSPLUSONLY(AtAttribute();)
257 wchar_t *p1;
258 };
259
260 _SRC_ANNO_REPEATABLE(AtBufferAttribute)
261 {
262 _CPLUSPLUSONLY(AtBufferAttribute();)
263 wchar_t *p1;
264 wchar_t *p2;
265 wchar_t *p3;
266 };
267
268 _SRC_ANNO_REPEATABLE(WhenAttribute)
269 {
270 _CPLUSPLUSONLY(WhenAttribute();)
271 wchar_t *p1;
272 };
273
274 _SRC_ANNO_REPEATABLE(TypefixAttribute)
275 {
276 _CPLUSPLUSONLY(TypefixAttribute();)
277 wchar_t *p1;
278 };
279
280 _SRC_ANNO_REPEATABLE(ContextAttribute)
281 {
282 _CPLUSPLUSONLY(ContextAttribute();)
283 wchar_t *p1;
284 };
285
286 _SRC_ANNO_REPEATABLE(ExceptAttribute)
287 {
288 _CPLUSPLUSONLY(ExceptAttribute();)
289 int unused;
290 };
291
292 _SRC_ANNO_REPEATABLE(PreOpAttribute)
293 {
294 _CPLUSPLUSONLY(PreOpAttribute();)
295 int unused;
296 };
297
298 _SRC_ANNO_REPEATABLE(PostOpAttribute)
299 {
300 _CPLUSPLUSONLY(PostOpAttribute();)
301 int unused;
302 };
303
304 _SRC_ANNO_REPEATABLE(BeginAttribute)
305 {
306 _CPLUSPLUSONLY(BeginAttribute();)
307 int unused;
308 };
309
310 _SRC_ANNO_REPEATABLE(EndAttribute)
311 {
312 _CPLUSPLUSONLY(EndAttribute();)
313 int unused;
314 };
315
316 #endif // !SAL_NO_ATTRIBUTE_DECLARATIONS
317
318 #pragma pop_macro("_CPLUSPLUSONLY")
319 #pragma pop_macro("_SRC_ANNO_REPEATABLE")
320 #pragma pop_macro("_SRC_ANNO")
321 #pragma pop_macro("_REPEATABLE")
322 #pragma pop_macro("_SA")
323
324 #ifdef __cplusplus
325 }; // namespace vc_attributes
326
327 #define SA_All All
328 #define SA_Class Class
329 #define SA_Constructor Constructor
330 #define SA_Delegate Delegate
331 #define SA_Enum Enum
332 #define SA_Event Event
333 #define SA_Field Field
334 #define SA_GenericParameter GenericParameter
335 #define SA_Interface Interface
336 #define SA_Method Method
337 #define SA_Module Module
338 #define SA_Parameter Parameter
339 #define SA_Property Property
340 #define SA_ReturnValue ReturnValue
341 #define SA_Struct Struct
342 #define SA_Typedef Typedef
343
344 #define _vc_attributes_(x) ::vc_attributes::x
345 typedef ::vc_attributes::YesNoMaybe SA_YesNoMaybe;
346 const ::vc_attributes::YesNoMaybe SA_Yes = ::vc_attributes::Yes;
347 const ::vc_attributes::YesNoMaybe SA_No = ::vc_attributes::No;
348 const ::vc_attributes::YesNoMaybe SA_Maybe = ::vc_attributes::Maybe;
349 typedef ::vc_attributes::AccessType SA_AccessType;
350 const ::vc_attributes::AccessType SA_NoAccess = ::vc_attributes::NoAccess;
351 const ::vc_attributes::AccessType SA_Read = ::vc_attributes::Read;
352 const ::vc_attributes::AccessType SA_Write = ::vc_attributes::Write;
353 const ::vc_attributes::AccessType SA_ReadWrite = ::vc_attributes::ReadWrite;
354
355 #else // !__cplusplus
356
357 #define _vc_attributes_(x) struct x
358 typedef struct PreAttribute PreAttribute;
359 typedef struct PostAttribute PostAttribute;
360
361 #endif // !__cplusplus
362
363 #if !defined(__cplusplus) || !defined(SAL_NO_ATTRIBUTE_DECLARATIONS)
364 typedef _vc_attributes_(PreAttribute) SA_Pre;
365 typedef _vc_attributes_(PostAttribute) SA_Post;
366 typedef _vc_attributes_(FormatStringAttribute) SA_FormatString;
367 typedef _vc_attributes_(InvalidCheckAttribute) SA_InvalidCheck;
368 typedef _vc_attributes_(SuccessAttribute) SA_Success;
369 typedef _vc_attributes_(PreBoundAttribute) SA_PreBound;
370 typedef _vc_attributes_(PostBoundAttribute) SA_PostBound;
371 typedef _vc_attributes_(PreRangeAttribute) SA_PreRange;
372 typedef _vc_attributes_(PostRangeAttribute) SA_PostRange;
373 typedef _vc_attributes_(DerefAttribute) SAL_deref;
374 typedef _vc_attributes_(NotrefAttribute) SAL_notref;
375 typedef _vc_attributes_(PreOpAttribute) SAL_pre;
376 typedef _vc_attributes_(PostOpAttribute) SAL_post;
377 typedef _vc_attributes_(ExceptAttribute) SAL_except;
378 typedef _vc_attributes_(AtAttribute) SAL_at;
379 typedef _vc_attributes_(AtBufferAttribute) SAL_at_buffer;
380 typedef _vc_attributes_(WhenAttribute) SAL_when;
381 typedef _vc_attributes_(BeginAttribute) SAL_begin;
382 typedef _vc_attributes_(EndAttribute) SAL_end;
383 typedef _vc_attributes_(TypefixAttribute) SAL_typefix;
384 typedef _vc_attributes_(AnnotesAttribute) SAL_annotes;
385 typedef _vc_attributes_(ContextAttribute) SAL_context;
386 #endif
387
388 #ifdef _MANAGED
389 #ifdef CODE_ANALYSIS
390 #define SA_SUPPRESS_MESSAGE(category, id, ...) [::System::Diagnostics::CodeAnalysis::SuppressMessage(category, id, __VA_ARGS__)]
391 #define CA_SUPPRESS_MESSAGE(...) [System::Diagnostics::CodeAnalysis::SuppressMessage(__VA_ARGS__)]
392 #define CA_GLOBAL_SUPPRESS_MESSAGE(...) [assembly:System::Diagnostics::CodeAnalysis::SuppressMessage(__VA_ARGS__)]
393 #else // !CODE_ANALYSIS
394 #define SA_SUPPRESS_MESSAGE(category, id, ...)
395 #define CA_SUPPRESS_MESSAGE(...)
396 #define CA_GLOBAL_SUPPRESS_MESSAGE(...)
397 #endif // !CODE_ANALYSIS
398 #endif // _MANAGED
399
400 /******************************************************************************/
401
402 enum __SAL_YesNo {_SAL_notpresent, _SAL_no, _SAL_maybe, _SAL_yes, _SAL_default};
403
404 #define _SA_SPECSTRIZE(x) #x
405
406 #define _SA_annotes0(n) [SAL_annotes(Name=#n)]
407 #define _SA_annotes1(n,pp1) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1))]
408 #define _SA_annotes2(n,pp1,pp2) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1), p2=_SA_SPECSTRIZE(pp2))]
409 #define _SA_annotes3(n,pp1,pp2,pp3) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1), p2=_SA_SPECSTRIZE(pp2), p3=_SA_SPECSTRIZE(pp3))]
410
411 #define _SAL2_NAME(Name) _SA_annotes3(SAL_name, #Name, "", "2")
412 #define _SAL11_NAME(Name) _SA_annotes3(SAL_name, #Name, "", "1.1")
413
414 #define _Pre_ [SAL_pre]
415 #define _Post_ [SAL_post]
416 #define _Deref_impl_ [SAL_deref]
417 #define _Notref_impl_ [SAL_notref]
418 #define __inner_exceptthat [SAL_except]
419 #define __inner_typefix(ctype) [SAL_typefix(p1=_SA_SPECSTRIZE(ctype))]
420 #define _Group_(annos) [SAL_begin] annos [SAL_end]
421 #define _When_(expr, annos) [SAL_when(p1=_SA_SPECSTRIZE(expr))] _Group_(annos)
422 #define _At_(target, annos) [SAL_at(p1=_SA_SPECSTRIZE(target))] _Group_(annos)
423 #define _At_buffer_(target, iter, bound, annos) [SAL_at_buffer(p1=_SA_SPECSTRIZE(target), p2=_SA_SPECSTRIZE(iter), p3=_SA_SPECSTRIZE(bound))] [SAL_begin] annos [SAL_end]
424 #define _On_failure_(annos) [SAL_context(p1="SAL_failed")] _Group_(_Post_ _Group_(annos))
425 #define _Always_(annos) _Group_(annos) _On_failure_(annos)
426
427 #define _Analysis_mode_impl_(mode) _SAL2_NAME(_Analysis_mode_impl) _Group_([SAL_annotes(Name="SAL_analysisMode", p1=_SA_SPECSTRIZE(mode))])
428 #define _Analysis_mode_(mode) typedef _Analysis_mode_impl_(mode) int __prefast_analysis_mode_flag__COUNTER__;
429
430 #define _Analysis_noreturn_ _SAL2_NAME(_Analysis_noreturn_) [SAL_annotes(Name="SAL_terminates")]
431 #define _Analysis_assume_(expr) __assume(expr)
432 #define __analysis_assume(expr) __assume(expr)
433
434 #define _Check_return_ _SAL2_NAME(_Check_return_) [SA_Post(MustCheck=SA_Yes)]
435 #define _COM_Outptr_ _SAL2_NAME(_COM_Outptr_) _Group_(_Outptr_ _On_failure_(_Deref_post_null_))
436 #define _COM_Outptr_opt_ _SAL2_NAME(_COM_Outptr_opt_) _Group_(_Outptr_opt_ _On_failure_(_Deref_post_null_))
437 #define _COM_Outptr_opt_result_maybenull_ _SAL2_NAME(_COM_Outptr_opt_result_maybenull_) _Group_(_Outptr_opt_result_maybenull_ _On_failure_(_Deref_post_null_))
438 #define _COM_Outptr_result_maybenull_ _SAL2_NAME(_COM_Outptr_result_maybenull_) _Group_(_Outptr_opt_result_maybenull_ _On_failure_(_Deref_post_null_))
439 #define _Const_ _SAL2_NAME(_Const_) [SA_Pre(Access=SA_Read,Notref=1)]
440 #define _Deref_in_bound_ _SAL2_NAME(_Deref_in_bound_) [SA_PreBound(Deref=1)]
441 //#define _Deref_in_range_(lb,ub)
442 //#define _Deref_inout_bound_
443 //#define _Deref_inout_z_
444 //#define _Deref_inout_z_bytecap_c_(size)
445 //#define _Deref_inout_z_cap_c_(size)
446 //#define _Deref_opt_out_
447 //#define _Deref_opt_out_opt_
448 //#define _Deref_opt_out_opt_z_
449 //#define _Deref_opt_out_z_
450 #define _Deref_out_ _SAL2_NAME(_Deref_out_) _Group_(_Out_ _Deref_post_valid_)
451 //#define _Deref_out_bound_
452 //#define _Deref_out_opt_
453 //#define _Deref_out_opt_z_
454 #define _Deref_out_range_(lb,ub) _SAL2_NAME(_Deref_out_range_) _Group_(_Post_ [SAL_notref] [SAL_deref] [SAL_annotes(Name="SAL_range", p1=_SA_SPECSTRIZE(lb), p2=_SA_SPECSTRIZE(ub))])
455 #define _Deref_out_z_ _SAL11_NAME(_Deref_out_z_) _Group_(_Out_ _Deref_post_z_)
456 //#define _Deref_out_z_bytecap_c_(size)
457 //#define _Deref_out_z_cap_c_(size)
458 #define _Deref_post_bytecap_(size) _SAL11_NAME(_Deref_post_bytecap_) _Group_([SA_Post(Deref=1,Null=SA_No,Notref=1)] [SA_Post(Deref=1,WritableBytes="\n" _SA_SPECSTRIZE(size))])
459 //#define _Deref_post_bytecap_c_(size)
460 //#define _Deref_post_bytecap_x_(size)
461 #define _Deref_post_bytecount_(size) _SAL11_NAME(_Deref_post_bytecount_) _Group_([SA_Post(Deref=1,Null=SA_No,Notref=1)] [SA_Post(Deref=1,ValidBytes="\n"#size)] [SA_Post(Valid=SA_Yes)])
462 //#define _Deref_post_bytecount_c_(size)
463 //#define _Deref_post_bytecount_x_(size)
464 //#define _Deref_post_cap_(size)
465 //#define _Deref_post_cap_c_(size)
466 //#define _Deref_post_cap_x_(size)
467 //#define _Deref_post_count_(size)
468 //#define _Deref_post_count_c_(size)
469 //#define _Deref_post_count_x_(size)
470 //#define _Deref_post_maybenull_
471 //#define _Deref_post_notnull_
472 #define _Deref_post_null_ _SAL11_NAME(_Deref_post_null_) _Group_([SA_Post(Deref=1,Null=SA_Yes,Notref=1)] )
473 //#define _Deref_post_opt_bytecap_(size)
474 //#define _Deref_post_opt_bytecap_c_(size)
475 //#define _Deref_post_opt_bytecap_x_(size)
476 //#define _Deref_post_opt_bytecount_(size)
477 //#define _Deref_post_opt_bytecount_c_(size)
478 //#define _Deref_post_opt_bytecount_x_(size)
479 //#define _Deref_post_opt_cap_(size)
480 //#define _Deref_post_opt_cap_c_(size)
481 //#define _Deref_post_opt_cap_x_(size)
482 //#define _Deref_post_opt_count_(size)
483 //#define _Deref_post_opt_count_c_(size)
484 //#define _Deref_post_opt_count_x_(size)
485 #define _Deref_post_opt_valid_ _SAL11_NAME(_Deref_post_opt_valid_) _Group_([SA_Post(Deref=1,Null=SA_Maybe,Notref=1)] [SA_Post(Valid=SA_Yes)])
486 //#define _Deref_post_opt_valid_bytecap_(size)
487 //#define _Deref_post_opt_valid_bytecap_c_(size)
488 //#define _Deref_post_opt_valid_bytecap_x_(size)
489 //#define _Deref_post_opt_valid_cap_(size)
490 //#define _Deref_post_opt_valid_cap_c_(size)
491 //#define _Deref_post_opt_valid_cap_x_(size)
492 #define _Deref_post_opt_z_ _SAL11_NAME(_Deref_post_opt_z_) _Group_([SA_Post(Deref=1,Null=SA_Maybe,Notref=1)] [SA_Post(Deref=1,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
493 //#define _Deref_post_opt_z_bytecap_(size)
494 //#define _Deref_post_opt_z_bytecap_c_(size)
495 //#define _Deref_post_opt_z_bytecap_x_(size)
496 //#define _Deref_post_opt_z_cap_(size)
497 //#define _Deref_post_opt_z_cap_c_(size)
498 //#define _Deref_post_opt_z_cap_x_(size)
499 #define _Deref_post_valid_ _SAL2_NAME(_Deref_post_valid_) _Group_([SA_Post(Deref=1,Null=SA_No,Notref=1)] [SA_Post(Valid=SA_Yes)])
500 //#define _Deref_post_valid_bytecap_(size)
501 //#define _Deref_post_valid_bytecap_c_(size)
502 //#define _Deref_post_valid_bytecap_x_(size)
503 //#define _Deref_post_valid_cap_(size)
504 //#define _Deref_post_valid_cap_c_(size)
505 //#define _Deref_post_valid_cap_x_(size)
506 #define _Deref_post_z_ _SAL11_NAME(_Deref_post_z_) _Group_([SA_Post(Deref=1,Null=SA_No,Notref=1)] [SA_Post(Deref=1,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
507 //#define _Deref_post_z_bytecap_(size)
508 //#define _Deref_post_z_bytecap_c_(size)
509 //#define _Deref_post_z_bytecap_x_(size)
510 //#define _Deref_post_z_cap_(size)
511 //#define _Deref_post_z_cap_c_(size)
512 //#define _Deref_post_z_cap_x_(size)
513 //#define _Deref_pre_bytecap_(size)
514 //#define _Deref_pre_bytecap_c_(size)
515 //#define _Deref_pre_bytecap_x_(size)
516 #define _Deref_pre_bytecount_(size) _SAL11_NAME(_Deref_pre_bytecount_) _Group_([SA_Pre(Deref=1,Null=SA_No,Notref=1)] [SA_Pre(Deref=1,ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
517 //#define _Deref_pre_bytecount_c_(size)
518 //#define _Deref_pre_bytecount_x_(size)
519 //#define _Deref_pre_cap_(size)
520 //#define _Deref_pre_cap_c_(size)
521 //#define _Deref_pre_cap_x_(size)
522 //#define _Deref_pre_count_(size)
523 //#define _Deref_pre_count_c_(size)
524 //#define _Deref_pre_count_x_(size)
525 //#define _Deref_pre_invalid_
526 //#define _Deref_pre_maybenull_
527 //#define _Deref_pre_notnull_
528 //#define _Deref_pre_null_
529 #define _Deref_pre_opt_bytecap_(size) _SAL11_NAME(_Pre_opt_bytecap_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size))])
530 //#define _Deref_pre_opt_bytecap_c_(size)
531 //#define _Deref_pre_opt_bytecap_x_(size)
532 //#define _Deref_pre_opt_bytecount_(size)
533 //#define _Deref_pre_opt_bytecount_c_(size)
534 //#define _Deref_pre_opt_bytecount_x_(size)
535 //#define _Deref_pre_opt_cap_(size)
536 //#define _Deref_pre_opt_cap_c_(size)
537 //#define _Deref_pre_opt_cap_x_(size)
538 //#define _Deref_pre_opt_count_(size)
539 //#define _Deref_pre_opt_count_c_(size)
540 //#define _Deref_pre_opt_count_x_(size)
541 #define _Deref_pre_opt_valid_ _SAL11_NAME(_Deref_pre_opt_valid_) _Group_([SA_Pre(Deref=1,Null=SA_Maybe,Notref=1)] [SA_Pre(Valid=SA_Yes)])
542 //#define _Deref_pre_opt_valid_bytecap_(size)
543 //#define _Deref_pre_opt_valid_bytecap_c_(size)
544 //#define _Deref_pre_opt_valid_bytecap_x_(size)
545 //#define _Deref_pre_opt_valid_cap_(size)
546 //#define _Deref_pre_opt_valid_cap_c_(size)
547 //#define _Deref_pre_opt_valid_cap_x_(size)
548 #define _Deref_pre_opt_z_ _SAL11_NAME(_Deref_pre_opt_z_) _Group_([SA_Pre(Deref=1,Null=SA_Maybe,Notref=1)] [SA_Pre(Deref=1,NullTerminated=SA_Yes)] [SA_Pre(Valid=SA_Yes)])
549 //#define _Deref_pre_opt_z_bytecap_(size)
550 //#define _Deref_pre_opt_z_bytecap_c_(size)
551 //#define _Deref_pre_opt_z_bytecap_x_(size)
552 //#define _Deref_pre_opt_z_cap_(size)
553 //#define _Deref_pre_opt_z_cap_c_(size)
554 //#define _Deref_pre_opt_z_cap_x_(size)
555 #define _Deref_pre_readonly_ _SAL2_NAME(_Deref_pre_readonly_) _Group_([SA_Pre(Deref=1,Access=SA_Read,Notref=1)])
556 //#define _Deref_pre_valid_
557 //#define _Deref_pre_valid_bytecap_(size)
558 //#define _Deref_pre_valid_bytecap_c_(size)
559 //#define _Deref_pre_valid_bytecap_x_(size)
560 //#define _Deref_pre_valid_cap_(size)
561 //#define _Deref_pre_valid_cap_c_(size)
562 //#define _Deref_pre_valid_cap_x_(size)
563 //#define _Deref_pre_writeonly_
564 #define _Deref_pre_z_ _SAL11_NAME(_Deref_pre_z_) _Group_([SA_Pre(Deref=1,Null=SA_No,Notref=1)] [SA_Pre(Deref=1,NullTerminated=SA_Yes)] [SA_Pre(Valid=SA_Yes)])
565 //#define _Deref_pre_z_bytecap_(size)
566 //#define _Deref_pre_z_bytecap_c_(size)
567 //#define _Deref_pre_z_bytecap_x_(size)
568 //#define _Deref_pre_z_cap_(size)
569 //#define _Deref_pre_z_cap_c_(size)
570 //#define _Deref_pre_z_cap_x_(size)
571 //#define _Deref_prepost_bytecap_(size)
572 //#define _Deref_prepost_bytecap_x_(size)
573 //#define _Deref_prepost_bytecount_(size)
574 //#define _Deref_prepost_bytecount_x_(size)
575 //#define _Deref_prepost_cap_(size)
576 //#define _Deref_prepost_cap_x_(size)
577 //#define _Deref_prepost_count_(size)
578 //#define _Deref_prepost_count_x_(size)
579 //#define _Deref_prepost_opt_bytecap_(size)
580 //#define _Deref_prepost_opt_bytecap_x_(size)
581 //#define _Deref_prepost_opt_bytecount_(size)
582 //#define _Deref_prepost_opt_bytecount_x_(size)
583 //#define _Deref_prepost_opt_cap_(size)
584 //#define _Deref_prepost_opt_cap_x_(size)
585 //#define _Deref_prepost_opt_count_(size)
586 //#define _Deref_prepost_opt_count_x_(size)
587 #define _Deref_prepost_opt_valid_ _SAL11_NAME(_Deref_prepost_opt_valid_) _Group_(_Deref_pre_opt_valid_ _Deref_post_opt_valid_)
588 //#define _Deref_prepost_opt_valid_bytecap_(size)
589 //#define _Deref_prepost_opt_valid_bytecap_x_(size)
590 //#define _Deref_prepost_opt_valid_cap_(size)
591 //#define _Deref_prepost_opt_valid_cap_x_(size)
592 #define _Deref_prepost_opt_z_ _SAL11_NAME(_Deref_prepost_opt_z_) _Group_(_Deref_pre_opt_z_ _Deref_post_opt_z_)
593 //#define _Deref_prepost_opt_z_bytecap_(size)
594 //#define _Deref_prepost_opt_z_cap_(size)
595 //#define _Deref_prepost_valid_
596 //#define _Deref_prepost_valid_bytecap_(size)
597 //#define _Deref_prepost_valid_bytecap_x_(size)
598 //#define _Deref_prepost_valid_cap_(size)
599 //#define _Deref_prepost_valid_cap_x_(size)
600 #define _Deref_prepost_z_ _SAL11_NAME(_Deref_prepost_z_) _Group_(_Deref_pre_z_ _Deref_post_z_)
601 //#define _Deref_prepost_z_bytecap_(size)
602 //#define _Deref_prepost_z_cap_(size)
603 //#define _Deref_ret_bound_
604 //#define _Deref_ret_opt_z_
605 //#define _Deref_ret_range_(lb,ub)
606 //#define _Deref_ret_z_
607 //#define _Deref2_pre_readonly_
608 //#define _Enum_is_bitflag_
609 #define _Field_range_(min,max) _SAL2_NAME(_Field_range_) _Group_(_SA_annotes2(SAL_range,min,max))
610 #define _Field_size_(size) _SAL2_NAME(_Field_size_) _Group_(_Notnull_ _Writable_elements_(size))
611 #define _Field_size_opt_(size) _SAL2_NAME(_Field_size_opt_) _Group_(_Maybenull_ _Writable_elements_(size))
612 #define _Field_size_bytes_(size) _SAL2_NAME(_Field_size_bytes_) _Group_(_Notnull_ _Writable_bytes_(size))
613 //#define _Field_size_bytes_full_(size)
614 //#define _Field_size_bytes_full_opt_(size)
615 #define _Field_size_bytes_opt_(size) _SAL2_NAME(_Field_size_bytes_opt_) _Group_(_Maybenull_ _Writable_bytes_(size))
616 #define _Field_size_bytes_part_(size,count) _SAL2_NAME(_Field_size_bytes_part_) _Group_(_Notnull_ _Writable_bytes_(size) _Readable_bytes_(count))
617 #define _Field_size_bytes_part_opt_(size, count) _SAL2_NAME(_Field_size_bytes_part_opt_) _Group_(_Maybenull_ _Writable_bytes_(size) _Readable_bytes_(count))
618 //#define _Field_size_full_(size)
619 //#define _Field_size_full_opt_(size)
620 #define _Field_size_part_(size,count) _SAL2_NAME(_Field_size_part_) _Group_(_Notnull_ _Writable_elements_(size) _Readable_elements_(count))
621 //#define _Field_size_part_opt_(size, count)
622 //#define _Field_z_
623 #define _Function_class_(x) _SA_annotes1(SAL_functionClassNew, _SA_SPECSTRIZE(x))
624 #define _In_ _SAL2_NAME(_In_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(Valid=SA_Yes)] [SA_Pre(Deref=1,Access=SA_Read,Notref=1)])
625 //#define _In_bound_
626 #define _In_bytecount_(size) _SAL11_NAME(_In_bytecount_) _Group_(_Pre_bytecount_(size) _Deref_pre_readonly_)
627 //#define _In_bytecount_c_(size)
628 //#define _In_bytecount_x_(size)
629 #define _In_count_(size) _SAL11_NAME(_In_count_) _Group_(_Pre_count_(size) _Deref_pre_readonly_)
630 #define _In_count_c_(size) _SAL11_NAME(_In_count_c_) _Group_(_Pre_count_c_(size) _Deref_pre_readonly_)
631 //#define _In_count_x_(size)
632 //#define _In_defensive_(annotes)
633 #define _In_opt_ _SAL2_NAME(_In_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(Valid=SA_Yes)] _Deref_pre_readonly_)
634 #define _In_opt_bytecount_(size) _SAL11_NAME(_In_opt_bytecount_) _Group_(_Pre_opt_bytecount_(size) _Deref_pre_readonly_)
635 //#define _In_opt_bytecount_c_(size)
636 //#define _In_opt_bytecount_x_(size)
637 //#define _In_opt_count_(size)
638 //#define _In_opt_count_c_(size)
639 //#define _In_opt_count_x_(size)
640 //#define _In_opt_ptrdiff_count_(size)
641 #define _In_opt_z_ _SAL2_NAME(_In_opt_z_) _Group_(_In_opt_ [SA_Pre(NullTerminated=SA_Yes)])
642 //#define _In_opt_z_bytecount_(size)
643 //#define _In_opt_z_bytecount_c_(size)
644 #define _In_opt_z_count_(size) _SAL11_NAME(_In_opt_z_count_) _Group_(_Pre_opt_z_ _Pre_opt_count_(size) _Deref_pre_readonly_)
645 //#define _In_opt_z_count_c_(size)
646 //#define _In_ptrdiff_count_(size)
647 #define _In_range_(lb,ub) _SAL2_NAME(_In_range_) _Group_([SAL_pre] [SAL_annotes(Name="SAL_range", p1=_SA_SPECSTRIZE(lb), p2=_SA_SPECSTRIZE(ub))])
648 #define _In_reads_(size) _SAL2_NAME(_In_reads_) _Group_(_Pre_count_(size) _Deref_pre_readonly_)
649 #define _In_reads_bytes_(size) _SAL2_NAME(_In_reads_bytes_) _Group_(_Pre_bytecount_(size) _Deref_pre_readonly_)
650 #define _In_reads_bytes_opt_(size) _SAL2_NAME(_In_reads_bytes_opt_) _Group_(_Pre_opt_bytecount_(size) _Deref_pre_readonly_)
651 #define _In_reads_opt_(size) _SAL2_NAME(_In_reads_opt_) _Group_(_Pre_opt_count_(size) _Deref_pre_readonly_)
652 //#define _In_reads_opt_z_(size)
653 #define _In_reads_or_z_(size) _SAL2_NAME(_In_reads_or_z_) _Group_(_In_ _When_(_String_length_(_Curr_) < (size), _Pre_z_) _When_(_String_length_(_Curr_) >= (size), [SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(size))]))
654 //#define _In_reads_to_ptr_(ptr)
655 //#define _In_reads_to_ptr_opt_(ptr)
656 //#define _In_reads_to_ptr_opt_z_(ptr)
657 //#define _In_reads_to_ptr_z_(ptr)
658 #define _In_reads_z_(size) _SAL2_NAME(_In_reads_z_) _Group_(_In_reads_(size) _Pre_z_)
659 #define _In_z_ _SAL2_NAME(_In_z_) _Group_(_In_ [SA_Pre(NullTerminated=SA_Yes)])
660 #define _In_z_bytecount_(size) _SAL11_NAME(_In_z_bytecount_) _Group_(_Pre_z_ _Pre_bytecount_(size) _Deref_pre_readonly_)
661 //#define _In_z_bytecount_c_(size)
662 #define _In_z_count_(size) _SAL11_NAME(_In_z_count_) _Group_(_Pre_z_ _Pre_count_(size) _Deref_pre_readonly_)
663 //#define _In_z_count_c_(size)
664 #define _Inout_ _SAL2_NAME(_Inout_) _Group_(_Prepost_valid_)
665 #define _Inout_bytecap_(size) _SAL11_NAME(_Inout_bytecap_) _Group_(_Pre_valid_bytecap_(size) _Post_valid_)
666 //#define _Inout_bytecap_c_(size)
667 //#define _Inout_bytecap_x_(size)
668 #define _Inout_bytecount_(size) _SAL11_NAME(_Inout_bytecount_) _Group_(_Prepost_bytecount_(size))
669 //#define _Inout_bytecount_c_(size)
670 //#define _Inout_bytecount_x_(size)
671 //#define _Inout_cap_(size)
672 //#define _Inout_cap_c_(size)
673 //#define _Inout_cap_x_(size)
674 //#define _Inout_count_(size)
675 //#define _Inout_count_c_(size)
676 //#define _Inout_count_x_(size)
677 //#define _Inout_defensive_(annotes)
678 #define _Inout_opt_ _SAL2_NAME(_Inout_opt_) _Group_(_Prepost_opt_valid_)
679 //#define _Inout_opt_bytecap_(size)
680 //#define _Inout_opt_bytecap_c_(size)
681 //#define _Inout_opt_bytecap_x_(size)
682 //#define _Inout_opt_bytecount_(size)
683 //#define _Inout_opt_bytecount_c_(size)
684 //#define _Inout_opt_bytecount_x_(size)
685 //#define _Inout_opt_cap_(size)
686 //#define _Inout_opt_cap_c_(size)
687 //#define _Inout_opt_cap_x_(size)
688 //#define _Inout_opt_count_(size)
689 //#define _Inout_opt_count_c_(size)
690 //#define _Inout_opt_count_x_(size)
691 //#define _Inout_opt_ptrdiff_count_(size)
692 #define _Inout_opt_z_ _SAL2_NAME(_Inout_opt_z_) _Group_(_Prepost_opt_z_)
693 //#define _Inout_opt_z_bytecap_(size)
694 //#define _Inout_opt_z_bytecap_c_(size)
695 //#define _Inout_opt_z_bytecap_x_(size)
696 //#define _Inout_opt_z_bytecount_(size)
697 //#define _Inout_opt_z_bytecount_c_(size)
698 //#define _Inout_opt_z_cap_(size)
699 //#define _Inout_opt_z_cap_c_(size)
700 //#define _Inout_opt_z_cap_x_(size)
701 //#define _Inout_opt_z_count_(size)
702 //#define _Inout_opt_z_count_c_(size)
703 //#define _Inout_ptrdiff_count_(size)
704 #define _Inout_updates_(size) _SAL2_NAME(_Inout_updates_) _Group_(_Pre_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] )
705 //#define _Inout_updates_all_(size)
706 //#define _Inout_updates_all_opt_(size)
707 #define _Inout_updates_bytes_(size) _SAL2_NAME(_Inout_updates_bytes_) _Group_(_Pre_bytecap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] )
708 //#define _Inout_updates_bytes_all_(size)
709 //#define _Inout_updates_bytes_all_opt_(size)
710 #define _Inout_updates_bytes_opt_(size) _SAL2_NAME(_Inout_updates_bytes_opt_) _Group_(_Pre_opt_bytecap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)])
711 #define _Inout_updates_bytes_to_(size,count) _SAL2_NAME(_Inout_updates_bytes_to_) _Group_(_Out_writes_bytes_to_(size,count) [SA_Pre(Valid=SA_Yes)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(count))])
712 #define _Inout_updates_bytes_to_opt_(size,count) _SAL2_NAME(_Inout_updates_bytes_to_opt_) _Group_(_Out_writes_bytes_to_opt_(size,count) [SA_Pre(Valid=SA_Yes)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(count))])
713 #define _Inout_updates_opt_(size) _SAL2_NAME(_Inout_updates_opt_) _Group_(_Pre_opt_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)])
714 #define _Inout_updates_opt_z_(size) _SAL2_NAME(_Inout_updates_opt_z_) _Group_(_Pre_opt_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Post(NullTerminated=SA_Yes)])
715 #define _Inout_updates_to_(size,count) _SAL2_NAME(_Inout_updates_to_) _Group_(_Out_writes_to_(size,count) [SA_Pre(Valid=SA_Yes)] [SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(count))])
716 //#define _Inout_updates_to_opt_(size,count)
717 #define _Inout_updates_z_(size) _SAL2_NAME(_Inout_updates_z_) _Group_(_Pre_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Post(NullTerminated=SA_Yes)])
718 #define _Inout_z_ _SAL2_NAME(_Inout_z_) _Group_(_Prepost_z_)
719 //#define _Inout_z_bytecap_(size)
720 //#define _Inout_z_bytecap_c_(size)
721 //#define _Inout_z_bytecap_x_(size)
722 //#define _Inout_z_bytecount_(size)
723 //#define _Inout_z_bytecount_c_(size)
724 //#define _Inout_z_cap_(size)
725 //#define _Inout_z_cap_c_(size)
726 //#define _Inout_z_cap_x_(size)
727 //#define _Inout_z_count_(size)
728 //#define _Inout_z_count_c_(size)
729 #define _Interlocked_operand_ [SAL_pre] [SAL_annotes(Name="SAL_interlocked")]
730 #define _Literal_ _SAL2_NAME(_Literal_) _Group_([SAL_pre] [SAL_annotes(Name="SAL_constant", p1="__yes")])
731 #define _Maybenull_ [SAL_annotes(Name="SAL_null", p1="__maybe")]
732 #define _Maybevalid_ [SAL_annotes(Name="SAL_valid", p1="__maybe")]
733 #define _Maybe_raises_SEH_exception_ _SAL2_NAME(_Maybe_raises_SEH_exception_) _Group_(_Pre_ [SAL_annotes(Name="SAL_inTry", p1="__yes")])
734 #define _Must_inspect_result_ _SAL2_NAME(_Must_inspect_result_) _Group_(_Post_ [SAL_annotes(Name="SAL_mustInspect")] [SA_Post(MustCheck=SA_Yes)])
735 #define _Notliteral_ _SAL2_NAME(_Notliteral_) _Group_([SAL_pre] [SAL_annotes(Name="SAL_constant", p1="__no")] )
736 #define _Notnull_ [SAL_annotes(Name="SAL_null", p1="__no")]
737 //#define _Notref_
738 //#define _Notvalid_
739 #define _Null_ [SAL_annotes(Name="SAL_null", p1="__yes")]
740 #define _Null_terminated_ _SAL2_NAME(_Null_terminated_) _Group_([SAL_annotes(Name="SAL_nullTerminated", p1="__yes")])
741 #define _NullNull_terminated_ _SAL2_NAME(_NullNull_terminated_) _Group_([SAL_annotes(Name="SAL_nullTerminated", p1="__yes")] [SAL_annotes(Name="SAL_readableTo", p1="inexpressibleCount(\"NullNull terminated string\")")])
742 //#define _On_failure_(annos)
743 #define _Out_ _SAL2_NAME(_Out_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)])
744 //#define _Out_bound_
745 #define _Out_bytecap_(size) _SAL11_NAME(_Out_bytecap_) _Group_(_Pre_bytecap_(size) [SA_Post(Valid=SA_Yes)])
746 //#define _Out_bytecap_c_(size)
747 //#define _Out_bytecap_post_bytecount_(cap,count)
748 //#define _Out_bytecap_x_(size)
749 //#define _Out_bytecapcount_(capcount)
750 //#define _Out_bytecapcount_x_(capcount)
751 #define _Out_cap_(size) _SAL11_NAME(_Out_cap_) _Group_(_Pre_cap_(size) [SA_Post(Valid=SA_Yes)])
752 //#define _Out_cap_c_(size)
753 //#define _Out_cap_m_(mult,size)
754 //#define _Out_cap_post_count_(cap,count)
755 //#define _Out_cap_x_(size)
756 //#define _Out_capcount_(capcount)
757 //#define _Out_capcount_x_(capcount)
758 //#define _Out_defensive_(annotes)
759 #define _Out_opt_ _SAL2_NAME(_Out_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)])
760 #define _Out_opt_bytecap_(size) _SAL11_NAME(_Out_opt_bytecap_) _Group_(_Pre_opt_bytecap_(size) [SA_Post(Valid=SA_Yes)])
761 //#define _Out_opt_bytecap_c_(size)
762 //#define _Out_opt_bytecap_post_bytecount_(cap,count)
763 //#define _Out_opt_bytecap_x_(size)
764 //#define _Out_opt_bytecapcount_(capcount)
765 //#define _Out_opt_bytecapcount_x_(capcount)
766 #define _Out_opt_cap_(size) _SAL11_NAME(_Out_opt_cap_) _Group_(_Pre_opt_cap_(size) [SA_Post(Valid=SA_Yes)])
767 //#define _Out_opt_cap_c_(size)
768 //#define _Out_opt_cap_m_(mult,size)
769 //#define _Out_opt_cap_post_count_(cap,count)
770 //#define _Out_opt_cap_x_(size)
771 //#define _Out_opt_capcount_(capcount)
772 //#define _Out_opt_capcount_x_(capcount)
773 //#define _Out_opt_ptrdiff_cap_(size)
774 #define _Out_opt_z_bytecap_(size) _SAL11_NAME(_Out_opt_z_bytecap_) _Group_(_Pre_opt_bytecap_(size) [SA_Post(Valid=SA_Yes)] _Post_z_)
775 //#define _Out_opt_z_bytecap_c_(size)
776 //#define _Out_opt_z_bytecap_post_bytecount_(cap,count)
777 //#define _Out_opt_z_bytecap_x_(size)
778 //#define _Out_opt_z_bytecapcount_(capcount)
779 //#define _Out_opt_z_cap_(size)
780 //#define _Out_opt_z_cap_c_(size)
781 //#define _Out_opt_z_cap_m_(mult,size)
782 //#define _Out_opt_z_cap_post_count_(cap,count)
783 //#define _Out_opt_z_cap_x_(size)
784 //#define _Out_opt_z_capcount_(capcount)
785 //#define _Out_ptrdiff_cap_(size)
786 #define _Out_range_(lb,ub) _SAL2_NAME(_Out_range_) _Group_(_Post_ _SA_annotes2(SAL_range, lb, ub))
787 #define _Out_writes_(size) _SAL2_NAME(_Out_writes_) _Group_(_Pre_cap_(size) [SA_Post(Valid=SA_Yes)])
788 #define _Out_writes_all_(size) _SAL2_NAME(_Out_writes_all_) _Group_(_Out_writes_to_(_Old_(size), _Old_(size)))
789 #define _Out_writes_all_opt_(size) _SAL2_NAME(_Out_writes_all_opt_) _Group_(_Out_writes_to_opt_(_Old_(size), _Old_(size)))
790 #define _Out_writes_bytes_(size) _SAL2_NAME(_Out_writes_bytes_) _Group_(_Pre_bytecap_(size) [SA_Post(Valid=SA_Yes)])
791 #define _Out_writes_bytes_all_(size) _SAL2_NAME(_Out_writes_bytes_all_) _Group_(_Out_writes_bytes_to_(_Old_(size), _Old_(size)))
792 #define _Out_writes_bytes_all_opt_(size) _SAL2_NAME(_Out_writes_bytes_all_opt_) _Group_(_Out_writes_bytes_to_opt_(_Old_(size), _Old_(size)))
793 #define _Out_writes_bytes_opt_(size) _SAL2_NAME(_Out_writes_bytes_opt_) _Group_(_Pre_opt_bytecap_(size) [SA_Post(Valid=SA_Yes)])
794 #define _Out_writes_bytes_to_(size,count) _SAL2_NAME(_Out_writes_bytes_to_) _Group_(_Pre_bytecap_(size) [SA_Post(Valid=SA_Yes)] _Post_bytecount_(count))
795 #define _Out_writes_bytes_to_opt_(size,count) _SAL2_NAME(_Out_writes_bytes_to_opt_) _Group_(_Pre_opt_bytecap_(size) [SA_Post(Valid=SA_Yes)] _Post_bytecount_(count) )
796 #define _Out_writes_opt_(size) _SAL2_NAME(_Out_writes_opt_) _Group_(_Pre_opt_cap_(size) [SA_Post(Valid=SA_Yes)])
797 #define _Out_writes_opt_z_(size) _SAL2_NAME(_Out_writes_opt_z_) _Group_(_Pre_opt_cap_(size) [SA_Post(Valid=SA_Yes)] _Post_z_)
798 #define _Out_writes_to_(size,count) _SAL2_NAME(_Out_writes_to_) _Group_(_Pre_cap_(size) [SA_Post(Valid=SA_Yes)] _Post_count_(count))
799 #define _Out_writes_to_opt_(size,count) _SAL2_NAME(_Out_writes_to_opt_) _Group_(_Pre_opt_cap_(size) [SA_Post(Valid=SA_Yes)] _Post_count_(count))
800 //#define _Out_writes_to_ptr_(ptr)
801 //#define _Out_writes_to_ptr_opt_(ptr)
802 //#define _Out_writes_to_ptr_opt_z_(ptr)
803 //#define _Out_writes_to_ptr_z_(ptr)
804 #define _Out_writes_z_(size) _SAL2_NAME(_Out_writes_z_) _Group_(_Pre_cap_(size) [SA_Post(Valid=SA_Yes)] _Post_z_)
805 #define _Out_z_bytecap_(size) _SAL11_NAME(_Out_z_bytecap_) _Group_(_Pre_bytecap_(size) [SA_Post(Valid=SA_Yes)] _Post_z_)
806 //#define _Out_z_bytecap_c_(size)
807 #define _Out_z_bytecap_post_bytecount_(cap,count) _SAL11_NAME(_Out_z_bytecap_post_bytecount_) _Group_(_Pre_bytecap_(cap) [SA_Post(Valid=SA_Yes)] _Post_z_bytecount_(count))
808 //#define _Out_z_bytecap_x_(size)
809 //#define _Out_z_bytecapcount_(capcount)
810 //#define _Out_z_cap_(size)
811 //#define _Out_z_cap_c_(size)
812 //#define _Out_z_cap_m_(mult,size)
813 //#define _Out_z_cap_post_count_(cap,count)
814 //#define _Out_z_cap_x_(size)
815 //#define _Out_z_capcount_(capcount)
816 #define _Outptr_ _SAL2_NAME(_Outptr_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,ValidElements="\n""1")])
817 #define _Outptr_opt_ _SAL2_NAME(_Outptr_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,ValidElements="\n""1")])
818 #define _Outptr_opt_result_buffer_(size) _SAL2_NAME(_Outptr_opt_result_buffer_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableElements="\n" _SA_SPECSTRIZE(size))])
819 //#define _Outptr_opt_result_buffer_all_(size)
820 //#define _Outptr_opt_result_buffer_all_maybenull_(size)
821 //#define _Outptr_opt_result_buffer_maybenull_(size)
822 //#define _Outptr_opt_result_buffer_to_(size, count)
823 //#define _Outptr_opt_result_buffer_to_maybenull_(size, count)
824 #define _Outptr_opt_result_bytebuffer_(size) _SAL2_NAME(_Outptr_opt_result_bytebuffer_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableBytes="\n" _SA_SPECSTRIZE(size))])
825 //#define _Outptr_opt_result_bytebuffer_all_(size)
826 #define _Outptr_opt_result_bytebuffer_all_maybenull_(size) _SAL2_NAME(_Outptr_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,ValidBytes="\n" _SA_SPECSTRIZE(size))])
827 //#define _Outptr_opt_result_bytebuffer_maybenull_(size)
828 //#define _Outptr_opt_result_bytebuffer_to_(size, count)
829 //#define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count)
830 #define _Outptr_opt_result_maybenull_ _SAL2_NAME(_Outptr_opt_result_maybenull_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,ValidElements="\n""1")])
831 //#define _Outptr_opt_result_maybenull_z_
832 //#define _Outptr_opt_result_nullonfailure_
833 //#define _Outptr_opt_result_z_
834 #define _Outptr_result_buffer_(size) _SAL2_NAME(_Outptr_result_buffer_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableElements="\n" _SA_SPECSTRIZE(size))] )
835 //#define _Outptr_result_buffer_all_(size)
836 //#define _Outptr_result_buffer_all_maybenull_(size)
837 #define _Outptr_result_buffer_maybenull_(size) _SAL2_NAME(_Outptr_result_buffer_maybenull_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,WritableElements="\n" _SA_SPECSTRIZE(size))])
838 //#define _Outptr_result_buffer_to_(size, count)
839 //#define _Outptr_result_buffer_to_maybenull_(size, count)
840 #define _Outptr_result_bytebuffer_(size) _SAL2_NAME(_Outptr_result_bytebuffer_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableBytes="\n" _SA_SPECSTRIZE(size))])
841 //#define _Outptr_result_bytebuffer_all_(size)
842 //#define _Outptr_result_bytebuffer_all_maybenull_(size)
843 #define _Outptr_result_bytebuffer_maybenull_(size) _SAL2_NAME(_Outptr_result_bytebuffer_maybenull_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,WritableBytes="\n" _SA_SPECSTRIZE(size))])
844 #define _Outptr_result_bytebuffer_to_(size, count) _SAL2_NAME(_Outptr_result_bytebuffer_to_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableBytes="\n" _SA_SPECSTRIZE(size), ValidBytes="\n" _SA_SPECSTRIZE(count))])
845 //#define _Outptr_result_bytebuffer_to_maybenull_(size, count)
846 #define _Outptr_result_maybenull_ _SAL2_NAME(_Outptr_result_maybenull_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,ValidElements="\n""1")] )
847 #define _Outptr_result_maybenull_z_ _SAL2_NAME(_Outptr_result_maybenull_z_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] _Deref_post_opt_z_)
848 #define _Outptr_result_nullonfailure_ _SAL2_NAME(_Outptr_result_nullonfailure_) _Group_(_Outptr_ [SAL_context(p1="SAL_failed")] _Group_([SAL_post] _Deref_post_null_) )
849 #define _Outptr_result_z_ _SAL2_NAME(_Outptr_result_z_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] _Deref_post_z_)
850 //#define _Outref_
851 //#define _Outref_result_buffer_(size)
852 //#define _Outref_result_buffer_all_(size)
853 //#define _Outref_result_buffer_all_maybenull_(size)
854 //#define _Outref_result_buffer_maybenull_(size)
855 //#define _Outref_result_buffer_to_(size, count)
856 //#define _Outref_result_buffer_to_maybenull_(size, count)
857 //#define _Outref_result_bytebuffer_(size)
858 //#define _Outref_result_bytebuffer_all_(size)
859 //#define _Outref_result_bytebuffer_all_maybenull_(size)
860 //#define _Outref_result_bytebuffer_maybenull_(size)
861 //#define _Outref_result_bytebuffer_to_(size, count)
862 //#define _Outref_result_bytebuffer_to_maybenull_(size, count)
863 //#define _Outref_result_maybenull_
864 //#define _Outref_result_nullonfailure_
865 #define _Points_to_data_ _SAL2_NAME(_Points_to_data_) _Group_([SAL_pre] [SAL_at(p1="*_Curr_")] _Group_([SAL_annotes(Name="SAL_mayBePointer", p1="__no")]) )
866 #define _Post_bytecap_(size) _SAL11_NAME(_Post_bytecap_) _Group_([SA_Post(WritableBytes="\n" _SA_SPECSTRIZE(size))])
867 #define _Post_bytecount_(size) _SAL11_NAME(_Post_bytecount_) _Group_([SA_Post(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
868 //#define _Post_bytecount_c_(size)
869 //#define _Post_bytecount_x_(size)
870 //#define _Post_cap_(size)
871 #define _Post_count_(size) _SAL11_NAME(_Post_count_) _Group_([SA_Post(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)] )
872 //#define _Post_count_c_(size)
873 //#define _Post_count_x_(size)
874 //#define _Post_defensive_
875 #define _Post_equal_to_(expr) _SAL2_NAME(_Post_equal_to_) _Group_(_Out_range_(==,expr))
876 #define _Post_invalid_ _SAL2_NAME(_Post_invalid_) _Group_([SA_Post(Deref=1,Valid=SA_No)])
877 #define _Post_maybenull_ _SAL2_NAME(_Post_maybenull_) _Group_([SA_Post(Null=SA_Maybe)])
878 #define _Post_maybez_ _SAL11_NAME(_Post_maybez_) _Group_([SA_Post(NullTerminated=SA_Maybe)])
879 #define _Post_notnull_ _SAL2_NAME(_Post_notnull_) _Group_([SA_Post(Null=SA_No)])
880 #define _Post_null_ _SAL2_NAME(_Post_null_) _Group_([SA_Post(Null=SA_Yes)])
881 #define _Post_ptr_invalid_ _SAL2_NAME(_Post_ptr_invalid_) _Group_([SA_Post(Valid=SA_No)])
882 #define _Post_readable_byte_size_(size) _SAL2_NAME(_Post_readable_byte_size_) _Group_([SA_Post(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
883 #define _Post_readable_size_(size) _SAL2_NAME(_Post_readable_size_) _Group_([SA_Post(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
884 #define _Post_satisfies_(cond) _SAL2_NAME(_Post_satisfies_) _Group_([SAL_post] [SAL_annotes(Name="SAL_satisfies", p1=_SA_SPECSTRIZE(cond))])
885 #define _Post_valid_ _SAL2_NAME(_Post_valid_) _Group_([SA_Post(Valid=SA_Yes)])
886 #define _Post_writable_byte_size_(size) _SAL2_NAME(_Post_writable_byte_size_) _Group_([SA_Post(WritableBytes="\n" _SA_SPECSTRIZE(size))] )
887 //#define _Post_writable_size_(size)
888 #define _Post_z_ _SAL2_NAME(_Post_z_) _Group_([SA_Post(NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
889 #define _Post_z_bytecount_(size) _SAL11_NAME(_Post_z_bytecount_) _Group_([SA_Post(NullTerminated=SA_Yes,ValidBytes="\n" _SA_SPECSTRIZE(size) )] [SA_Post(Valid=SA_Yes)])
890 //#define _Post_z_bytecount_c_(size)
891 //#define _Post_z_bytecount_x_(size)
892 //#define _Post_z_count_(size)
893 //#define _Post_z_count_c_(size)
894 //#define _Post_z_count_x_(size)
895 #define _Pre_bytecap_(size) _SAL11_NAME(_Pre_bytecap_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size) )])
896 //#define _Pre_bytecap_c_(size)
897 //#define _Pre_bytecap_x_(size)
898 #define _Pre_bytecount_(size) _SAL11_NAME(_Pre_bytecount_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
899 //#define _Pre_bytecount_c_(size)
900 //#define _Pre_bytecount_x_(size)
901 #define _Pre_cap_(size) _SAL11_NAME(_Pre_cap_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElements="\n" _SA_SPECSTRIZE(size) )])
902 //#define _Pre_cap_c_(size)
903 //#define _Pre_cap_c_one_
904 //#define _Pre_cap_for_(param)
905 //#define _Pre_cap_m_(mult,size)
906 //#define _Pre_cap_x_(size)
907 #define _Pre_count_(size) _SAL11_NAME(_Pre_count_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)])
908 #define _Pre_count_c_(size) _SAL11_NAME(_Pre_count_c_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(ValidElementsConst=size)] [SA_Pre(Valid=SA_Yes)])
909 //#define _Pre_count_x_(size)
910 //#define _Pre_defensive_
911 //#define _Pre_equal_to_(expr)
912 //#define _Pre_invalid_
913 #define _Pre_maybenull_ _SAL2_NAME(_Pre_maybenull_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)])
914 #define _Pre_notnull_ _SAL2_NAME(_Pre_notnull_) _Group_([SA_Pre(Null=SA_No,Notref=1)])
915 //#define _Pre_null_
916 #define _Pre_opt_bytecap_(size) _SAL11_NAME(_Pre_opt_bytecap_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size))] )
917 //#define _Pre_opt_bytecap_c_(size)
918 //#define _Pre_opt_bytecap_x_(size)
919 #define _Pre_opt_bytecount_(size) _SAL11_NAME(_Pre_opt_bytecount_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
920 //#define _Pre_opt_bytecount_c_(size)
921 //#define _Pre_opt_bytecount_x_(size)
922 #define _Pre_opt_cap_(size) _SAL11_NAME(_Pre_opt_cap_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElements="\n" _SA_SPECSTRIZE(size))] )
923 //#define _Pre_opt_cap_c_(size)
924 //#define _Pre_opt_cap_c_one_
925 //#define _Pre_opt_cap_for_(param)
926 //#define _Pre_opt_cap_m_(mult,size)
927 //#define _Pre_opt_cap_x_(size)
928 #define _Pre_opt_count_(size) _SAL11_NAME(_Pre_opt_count_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
929 //#define _Pre_opt_count_c_(size)
930 //#define _Pre_opt_count_x_(size)
931 //#define _Pre_opt_ptrdiff_cap_(ptr)
932 //#define _Pre_opt_ptrdiff_count_(ptr)
933 #define _Pre_opt_valid_ _SAL2_NAME(_Pre_opt_valid_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(Valid=SA_Yes)])
934 //#define _Pre_opt_valid_bytecap_(size)
935 //#define _Pre_opt_valid_bytecap_c_(size)
936 //#define _Pre_opt_valid_bytecap_x_(size)
937 //#define _Pre_opt_valid_cap_(size)
938 //#define _Pre_opt_valid_cap_c_(size)
939 //#define _Pre_opt_valid_cap_x_(size)
940 #define _Pre_opt_z_ _SAL11_NAME(_Pre_opt_z_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Pre(Valid=SA_Yes)])
941 //#define _Pre_opt_z_bytecap_(size)
942 //#define _Pre_opt_z_bytecap_c_(size)
943 //#define _Pre_opt_z_bytecap_x_(size)
944 //#define _Pre_opt_z_cap_(size)
945 //#define _Pre_opt_z_cap_c_(size)
946 //#define _Pre_opt_z_cap_x_(size)
947 //#define _Pre_ptrdiff_cap_(ptr)
948 //#define _Pre_ptrdiff_count_(ptr)
949 //#define _Pre_readable_byte_size_(size)
950 #define _Pre_readable_size_(size) _SAL2_NAME(_Pre_readable_size_) _Group_([SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
951 //#define _Pre_readonly_
952 #define _Pre_satisfies_(cond) _SAL2_NAME(_Pre_satisfies_) _Group_([SAL_pre] [SAL_annotes(Name="SAL_satisfies", p1=_SA_SPECSTRIZE(cond))])
953 #define _Pre_unknown_ _SAL2_NAME(_Pre_unknown_) _Group_([SA_Pre(Valid=SA_Maybe)])
954 #define _Pre_valid_ _SAL2_NAME(_Pre_valid_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(Valid=SA_Yes)] )
955 #define _Pre_valid_bytecap_(size) _SAL11_NAME(_Pre_valid_bytecap_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
956 //#define _Pre_valid_bytecap_c_(size)
957 //#define _Pre_valid_bytecap_x_(size)
958 //#define _Pre_valid_cap_(size)
959 //#define _Pre_valid_cap_c_(size)
960 //#define _Pre_valid_cap_x_(size)
961 //#define _Pre_writable_byte_size_(size)
962 //#define _Pre_writable_size_(size)
963 //#define _Pre_writeonly_
964 #define _Pre_z_ _SAL2_NAME(_Pre_z_) _Group_([SA_Pre(NullTerminated=SA_Yes)] [SA_Pre(Valid=SA_Yes)])
965 //#define _Pre_z_bytecap_(size)
966 //#define _Pre_z_bytecap_c_(size)
967 //#define _Pre_z_bytecap_x_(size)
968 //#define _Pre_z_cap_(size)
969 //#define _Pre_z_cap_c_(size)
970 //#define _Pre_z_cap_x_(size)
971 #define _Prepost_bytecount_(size) _SAL11_NAME(_Prepost_bytecount_) _Group_(_Pre_bytecount_(size) _Post_bytecount_(size))
972 //#define _Prepost_bytecount_c_(size)
973 //#define _Prepost_bytecount_x_(size)
974 //#define _Prepost_count_(size)
975 //#define _Prepost_count_c_(size)
976 //#define _Prepost_count_x_(size)
977 //#define _Prepost_opt_bytecount_(size)
978 //#define _Prepost_opt_bytecount_c_(size)
979 //#define _Prepost_opt_bytecount_x_(size)
980 //#define _Prepost_opt_count_(size)
981 //#define _Prepost_opt_count_c_(size)
982 //#define _Prepost_opt_count_x_(size)
983 #define _Prepost_opt_valid_ _SAL2_NAME(_Prepost_opt_valid_) _Group_(_Pre_opt_valid_ _Post_valid_)
984 #define _Prepost_opt_z_ _SAL11_NAME(_Prepost_opt_z_) _Group_(_Pre_opt_z_ _Post_z_)
985 #define _Prepost_valid_ _SAL11_NAME(_Prepost_valid_) _Group_(_Pre_valid_ _Post_valid_)
986 #define _Prepost_z_ _SAL2_NAME(_Prepost_z_) _Group_(_Pre_z_ _Post_z_)
987 #define _Printf_format_string_ _SAL2_NAME(_Printf_format_string_) _Group_([SA_FormatString(Style="printf")] )
988 //#define _Raises_SEH_exception_
989 #define _Readable_bytes_(size) _SAL2_NAME(_Readable_bytes_) _Group_(_SA_annotes1(SAL_readableTo, byteCount(size)))
990 #define _Readable_elements_(size) _SAL2_NAME(_Readable_elements_) _Group_([SAL_annotes(Name="SAL_readableTo", p1="elementCount(size)")])
991 #define _Reserved_ _SAL2_NAME(_Reserved_) _Group_([SA_Pre(Null=SA_Yes)])
992 //#define _Result_nullonfailure_
993 //#define _Result_zeroonfailure_
994 #define __inner_callback [SAL_annotes(Name="__callback")]
995 //#define _Ret_
996 //#define _Ret_bound_
997 //#define _Ret_bytecap_(size)
998 //#define _Ret_bytecap_c_(size)
999 //#define _Ret_bytecap_x_(size)
1000 //#define _Ret_bytecount_(size)
1001 //#define _Ret_bytecount_c_(size)
1002 //#define _Ret_bytecount_x_(size)
1003 //#define _Ret_cap_(size)
1004 //#define _Ret_cap_c_(size)
1005 //#define _Ret_cap_x_(size)
1006 //#define _Ret_count_(size)
1007 //#define _Ret_count_c_(size)
1008 //#define _Ret_count_x_(size)
1009 #define _Ret_maybenull_ _SAL2_NAME(_Ret_maybenull_) _Group_([SA_Post(Null=SA_Maybe)])
1010 //#define _Ret_maybenull_z_
1011 #define _Ret_notnull_ _SAL2_NAME(_Ret_notnull_) _Group_([SA_Post(Null=SA_No)])
1012 //#define _Ret_null_
1013 #define _Ret_opt_ _Ret_opt_valid_
1014 #define _Ret_opt_bytecap_(size) _SAL11_NAME(_Ret_opt_bytecap_) _Group_([SA_Post(Null=SA_Maybe,Notref=1)] [SA_Post(WritableBytes="\n" _SA_SPECSTRIZE(size))])
1015 //#define _Ret_opt_bytecap_c_(size)
1016 //#define _Ret_opt_bytecap_x_(size)
1017 #define _Ret_opt_bytecount_(size) _SAL11_NAME(_Ret_opt_bytecount_) _Group_([SA_Post(Null=SA_Maybe,Notref=1)] [SA_Post(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
1018 //#define _Ret_opt_bytecount_c_(size)
1019 //#define _Ret_opt_bytecount_x_(size)
1020 //#define _Ret_opt_cap_(size)
1021 //#define _Ret_opt_cap_c_(size)
1022 //#define _Ret_opt_cap_x_(size)
1023 //#define _Ret_opt_count_(size)
1024 //#define _Ret_opt_count_c_(size)
1025 //#define _Ret_opt_count_x_(size)
1026 #define _Ret_opt_valid_ _SAL11_NAME(_Ret_opt_valid_) _Group_([SA_Post(Null=SA_Maybe,Notref=1)] [SA_Post(Valid=SA_Yes)])
1027 #define _Ret_opt_z_ _SAL11_NAME(_Ret_opt_z_) _Group_([SA_Post(Null=SA_Maybe,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)] )
1028 //#define _Ret_opt_z_bytecap_(size)
1029 //#define _Ret_opt_z_bytecount_(size)
1030 //#define _Ret_opt_z_cap_(size)
1031 //#define _Ret_opt_z_count_(size)
1032 #define _Ret_range_(lb,ub) _SAL2_NAME(_Ret_range_) _Group_([SAL_post] [SAL_annotes(Name="SAL_range", p1=_SA_SPECSTRIZE(lb), p2=_SA_SPECSTRIZE(ub))] )
1033 //#define _Ret_valid_
1034 //#define _Ret_writes_(size)
1035 //#define _Ret_writes_bytes_(size)
1036 //#define _Ret_writes_bytes_maybenull_(size)
1037 //#define _Ret_writes_bytes_to_(size,count)
1038 //#define _Ret_writes_bytes_to_maybenull_(size,count)
1039 //#define _Ret_writes_maybenull_(size)
1040 #define _Ret_writes_maybenull_z_(size) _SAL2_NAME(_Ret_writes_maybenull_z_) _Group_([SA_Post(Null=SA_Maybe,ValidElements="\n" _SA_SPECSTRIZE(size),NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
1041 //#define _Ret_writes_to_(size,count)
1042 //#define _Ret_writes_to_maybenull_(size,count)
1043 //#define _Ret_writes_z_(size)
1044 #define _Ret_z_ _SAL2_NAME(_Ret_z_) _Group_([SA_Post(Null=SA_No,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
1045 //#define _Ret_z_bytecap_(size)
1046 //#define _Ret_z_bytecount_(size)
1047 //#define _Ret_z_cap_(size)
1048 //#define _Ret_z_count_(size)
1049 #define _Return_type_success_(expr) _SAL2_NAME(_Return_type_success_) _Group_([SA_Success(Condition=_SA_SPECSTRIZE(expr))])
1050 #define _Scanf_format_string_ _SAL2_NAME(_Scanf_format_string_) _Group_([SA_FormatString(Style="scanf")])
1051 #define _Scanf_s_format_string_ _SAL2_NAME(_Scanf_s_format_string_) _Group_([SA_FormatString(Style="scanf_s")])
1052 #define _Strict_type_match_ _SAL2_NAME(_Strict_type_match_) _Group_([SAL_annotes(Name="SAL_strictType2")])
1053 #define _Struct_size_bytes_(size) _SAL2_NAME(_Struct_size_bytes_) _Group_(_Writable_bytes_(byteCount(size)))
1054 #define _Success_(expr) _SAL2_NAME(_Success_) _Group_([SA_Success(Condition=_SA_SPECSTRIZE(expr))])
1055 #define _Unchanged_(expr) _SAL2_NAME(_Unchanged_) _Group_([SAL_at(p1=_SA_SPECSTRIZE(expr))] _Group_(_Post_equal_to_(expr) _Const_))
1056 //#define _Use_decl_annotations_
1057 #define _Valid_ [SAL_annotes(Name="SAL_valid", p1="__yes")]
1058 #define _Writable_bytes_(size) _SAL2_NAME(_Writable_bytes_) _Group_(_SA_annotes1(SAL_writableTo, byteCount(size)))
1059 #define _Writable_elements_(size) _SAL2_NAME(_Writable_elements_) _Group_(_SA_annotes1(SAL_writableTo, elementCount(size)))
1060
1061 #define __In_impl_ [SA_Pre(Valid=SA_Yes)] [SA_Pre(Deref=1, Notref=1, Access=SA_Read)]
1062 #define __AuToQuOtE _SA_annotes0(SAL_AuToQuOtE)
1063
1064 #define __ANNOTATION(fun) _SA_annotes0(SAL_annotation) void __SA_##fun
1065 __ANNOTATION(SAL_useHeader(void));
1066 __ANNOTATION(SAL_bound(void));
1067 __ANNOTATION(SAL_allocator(void));
1068 __ANNOTATION(SAL_file_parser(__AuToQuOtE __In_impl_ char *, __In_impl_ char *));
1069 __ANNOTATION(SAL_source_code_content(__In_impl_ char *));
1070 __ANNOTATION(SAL_analysisHint(__AuToQuOtE __In_impl_ char *));
1071 __ANNOTATION(SAL_untrusted_data_source(__AuToQuOtE __In_impl_ char *));
1072 __ANNOTATION(SAL_untrusted_data_source_this(__AuToQuOtE __In_impl_ char *));
1073 __ANNOTATION(SAL_validated(__AuToQuOtE __In_impl_ char *));
1074 __ANNOTATION(SAL_validated_this(__AuToQuOtE __In_impl_ char *));
1075 __ANNOTATION(SAL_encoded(void));
1076 __ANNOTATION(SAL_adt(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *));
1077 __ANNOTATION(SAL_add_adt_property(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *));
1078 __ANNOTATION(SAL_remove_adt_property(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *));
1079 __ANNOTATION(SAL_transfer_adt_property_from(__AuToQuOtE __In_impl_ char *));
1080 __ANNOTATION(SAL_post_type(__AuToQuOtE __In_impl_ char *));
1081 __ANNOTATION(SAL_volatile(void));
1082 __ANNOTATION(SAL_nonvolatile(void));
1083 __ANNOTATION(SAL_entrypoint(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *));
1084 __ANNOTATION(SAL_blocksOn(__In_impl_ void*));
1085 __ANNOTATION(SAL_mustInspect(void));
1086 __ANNOTATION(SAL_TypeName(__AuToQuOtE __In_impl_ char *));
1087 __ANNOTATION(SAL_interlocked(void);)
1088 #pragma warning (suppress: 28227 28241)
1089 __ANNOTATION(SAL_name(__In_impl_ char *, __In_impl_ char *, __In_impl_ char *);)
1090
1091 #define __PRIMOP(type, fun) _SA_annotes0(SAL_primop) type __SA_##fun;
1092 __PRIMOP(char *, _Macro_value_(__In_impl_ char *));
1093 __PRIMOP(int, _Macro_defined_(__In_impl_ char *));
1094 __PRIMOP(char *, _Strstr_(__In_impl_ char *, __In_impl_ char *));
1095
1096 __ANNOTATION(SAL_functionClassNew(__In_impl_ char*);)
1097 __PRIMOP(int, _In_function_class_(__In_impl_ char*);)
1098
1099 #define _In_function_class_(x) _In_function_class_(#x)
1100 #define _Called_from_function_class_(x) _In_function_class_(x)
1101
1102 #else // ] [ !_PREFAST_
1103
1104 /* Dummys */
1105 #define __inner_exceptthat
1106 #define __inner_typefix(ctype)
1107 #define _Always_(annos)
1108 #define _Analysis_mode_(mode)
1109 #define _Analysis_noreturn_
1110 #define _Analysis_assume_(expr) ((void)0)
1111 #define __analysis_assume(expr) ((void)0)
1112 #define _At_(target, annos)
1113 #define _At_buffer_(target, iter, bound, annos)
1114 #define _Check_return_
1115 #define _COM_Outptr_
1116 #define _COM_Outptr_opt_
1117 #define _COM_Outptr_opt_result_maybenull_
1118 #define _COM_Outptr_result_maybenull_
1119 #define _Const_
1120 #define _Deref_in_bound_
1121 #define _Deref_in_range_(lb,ub)
1122 #define _Deref_inout_bound_
1123 #define _Deref_inout_z_
1124 #define _Deref_inout_z_bytecap_c_(size)
1125 #define _Deref_inout_z_cap_c_(size)
1126 #define _Deref_opt_out_
1127 #define _Deref_opt_out_opt_
1128 #define _Deref_opt_out_opt_z_
1129 #define _Deref_opt_out_z_
1130 #define _Deref_out_
1131 #define _Deref_out_bound_
1132 #define _Deref_out_opt_
1133 #define _Deref_out_opt_z_
1134 #define _Deref_out_range_(lb,ub)
1135 #define _Deref_out_z_
1136 #define _Deref_out_z_bytecap_c_(size)
1137 #define _Deref_out_z_cap_c_(size)
1138 #define _Deref_post_bytecap_(size)
1139 #define _Deref_post_bytecap_c_(size)
1140 #define _Deref_post_bytecap_x_(size)
1141 #define _Deref_post_bytecount_(size)
1142 #define _Deref_post_bytecount_c_(size)
1143 #define _Deref_post_bytecount_x_(size)
1144 #define _Deref_post_cap_(size)
1145 #define _Deref_post_cap_c_(size)
1146 #define _Deref_post_cap_x_(size)
1147 #define _Deref_post_count_(size)
1148 #define _Deref_post_count_c_(size)
1149 #define _Deref_post_count_x_(size)
1150 #define _Deref_post_maybenull_
1151 #define _Deref_post_notnull_
1152 #define _Deref_post_null_
1153 #define _Deref_post_opt_bytecap_(size)
1154 #define _Deref_post_opt_bytecap_c_(size)
1155 #define _Deref_post_opt_bytecap_x_(size)
1156 #define _Deref_post_opt_bytecount_(size)
1157 #define _Deref_post_opt_bytecount_c_(size)
1158 #define _Deref_post_opt_bytecount_x_(size)
1159 #define _Deref_post_opt_cap_(size)
1160 #define _Deref_post_opt_cap_c_(size)
1161 #define _Deref_post_opt_cap_x_(size)
1162 #define _Deref_post_opt_count_(size)
1163 #define _Deref_post_opt_count_c_(size)
1164 #define _Deref_post_opt_count_x_(size)
1165 #define _Deref_post_opt_valid_
1166 #define _Deref_post_opt_valid_bytecap_(size)
1167 #define _Deref_post_opt_valid_bytecap_c_(size)
1168 #define _Deref_post_opt_valid_bytecap_x_(size)
1169 #define _Deref_post_opt_valid_cap_(size)
1170 #define _Deref_post_opt_valid_cap_c_(size)
1171 #define _Deref_post_opt_valid_cap_x_(size)
1172 #define _Deref_post_opt_z_
1173 #define _Deref_post_opt_z_bytecap_(size)
1174 #define _Deref_post_opt_z_bytecap_c_(size)
1175 #define _Deref_post_opt_z_bytecap_x_(size)
1176 #define _Deref_post_opt_z_cap_(size)
1177 #define _Deref_post_opt_z_cap_c_(size)
1178 #define _Deref_post_opt_z_cap_x_(size)
1179 #define _Deref_post_valid_
1180 #define _Deref_post_valid_bytecap_(size)
1181 #define _Deref_post_valid_bytecap_c_(size)
1182 #define _Deref_post_valid_bytecap_x_(size)
1183 #define _Deref_post_valid_cap_(size)
1184 #define _Deref_post_valid_cap_c_(size)
1185 #define _Deref_post_valid_cap_x_(size)
1186 #define _Deref_post_z_
1187 #define _Deref_post_z_bytecap_(size)
1188 #define _Deref_post_z_bytecap_c_(size)
1189 #define _Deref_post_z_bytecap_x_(size)
1190 #define _Deref_post_z_cap_(size)
1191 #define _Deref_post_z_cap_c_(size)
1192 #define _Deref_post_z_cap_x_(size)
1193 #define _Deref_pre_bytecap_(size)
1194 #define _Deref_pre_bytecap_c_(size)
1195 #define _Deref_pre_bytecap_x_(size)
1196 #define _Deref_pre_bytecount_(size)
1197 #define _Deref_pre_bytecount_c_(size)
1198 #define _Deref_pre_bytecount_x_(size)
1199 #define _Deref_pre_cap_(size)
1200 #define _Deref_pre_cap_c_(size)
1201 #define _Deref_pre_cap_x_(size)
1202 #define _Deref_pre_count_(size)
1203 #define _Deref_pre_count_c_(size)
1204 #define _Deref_pre_count_x_(size)
1205 #define _Deref_pre_invalid_
1206 #define _Deref_pre_maybenull_
1207 #define _Deref_pre_notnull_
1208 #define _Deref_pre_null_
1209 #define _Deref_pre_opt_bytecap_(size)
1210 #define _Deref_pre_opt_bytecap_c_(size)
1211 #define _Deref_pre_opt_bytecap_x_(size)
1212 #define _Deref_pre_opt_bytecount_(size)
1213 #define _Deref_pre_opt_bytecount_c_(size)
1214 #define _Deref_pre_opt_bytecount_x_(size)
1215 #define _Deref_pre_opt_cap_(size)
1216 #define _Deref_pre_opt_cap_c_(size)
1217 #define _Deref_pre_opt_cap_x_(size)
1218 #define _Deref_pre_opt_count_(size)
1219 #define _Deref_pre_opt_count_c_(size)
1220 #define _Deref_pre_opt_count_x_(size)
1221 #define _Deref_pre_opt_valid_
1222 #define _Deref_pre_opt_valid_bytecap_(size)
1223 #define _Deref_pre_opt_valid_bytecap_c_(size)
1224 #define _Deref_pre_opt_valid_bytecap_x_(size)
1225 #define _Deref_pre_opt_valid_cap_(size)
1226 #define _Deref_pre_opt_valid_cap_c_(size)
1227 #define _Deref_pre_opt_valid_cap_x_(size)
1228 #define _Deref_pre_opt_z_
1229 #define _Deref_pre_opt_z_bytecap_(size)
1230 #define _Deref_pre_opt_z_bytecap_c_(size)
1231 #define _Deref_pre_opt_z_bytecap_x_(size)
1232 #define _Deref_pre_opt_z_cap_(size)
1233 #define _Deref_pre_opt_z_cap_c_(size)
1234 #define _Deref_pre_opt_z_cap_x_(size)
1235 #define _Deref_pre_readonly_
1236 #define _Deref_pre_valid_
1237 #define _Deref_pre_valid_bytecap_(size)
1238 #define _Deref_pre_valid_bytecap_c_(size)
1239 #define _Deref_pre_valid_bytecap_x_(size)
1240 #define _Deref_pre_valid_cap_(size)
1241 #define _Deref_pre_valid_cap_c_(size)
1242 #define _Deref_pre_valid_cap_x_(size)
1243 #define _Deref_pre_writeonly_
1244 #define _Deref_pre_z_
1245 #define _Deref_pre_z_bytecap_(size)
1246 #define _Deref_pre_z_bytecap_c_(size)
1247 #define _Deref_pre_z_bytecap_x_(size)
1248 #define _Deref_pre_z_cap_(size)
1249 #define _Deref_pre_z_cap_c_(size)
1250 #define _Deref_pre_z_cap_x_(size)
1251 #define _Deref_prepost_bytecap_(size)
1252 #define _Deref_prepost_bytecap_x_(size)
1253 #define _Deref_prepost_bytecount_(size)
1254 #define _Deref_prepost_bytecount_x_(size)
1255 #define _Deref_prepost_cap_(size)
1256 #define _Deref_prepost_cap_x_(size)
1257 #define _Deref_prepost_count_(size)
1258 #define _Deref_prepost_count_x_(size)
1259 #define _Deref_prepost_opt_bytecap_(size)
1260 #define _Deref_prepost_opt_bytecap_x_(size)
1261 #define _Deref_prepost_opt_bytecount_(size)
1262 #define _Deref_prepost_opt_bytecount_x_(size)
1263 #define _Deref_prepost_opt_cap_(size)
1264 #define _Deref_prepost_opt_cap_x_(size)
1265 #define _Deref_prepost_opt_count_(size)
1266 #define _Deref_prepost_opt_count_x_(size)
1267 #define _Deref_prepost_opt_valid_
1268 #define _Deref_prepost_opt_valid_bytecap_(size)
1269 #define _Deref_prepost_opt_valid_bytecap_x_(size)
1270 #define _Deref_prepost_opt_valid_cap_(size)
1271 #define _Deref_prepost_opt_valid_cap_x_(size)
1272 #define _Deref_prepost_opt_z_
1273 #define _Deref_prepost_opt_z_bytecap_(size)
1274 #define _Deref_prepost_opt_z_cap_(size)
1275 #define _Deref_prepost_valid_
1276 #define _Deref_prepost_valid_bytecap_(size)
1277 #define _Deref_prepost_valid_bytecap_x_(size)
1278 #define _Deref_prepost_valid_cap_(size)
1279 #define _Deref_prepost_valid_cap_x_(size)
1280 #define _Deref_prepost_z_
1281 #define _Deref_prepost_z_bytecap_(size)
1282 #define _Deref_prepost_z_cap_(size)
1283 #define _Deref_ret_bound_
1284 #define _Deref_ret_opt_z_
1285 #define _Deref_ret_range_(lb,ub)
1286 #define _Deref_ret_z_
1287 #define _Deref2_pre_readonly_
1288 #define _Field_range_(min,max)
1289 #define _Field_size_(size)
1290 #define _Field_size_bytes_(size)
1291 #define _Field_size_bytes_full_(size)
1292 #define _Field_size_bytes_full_opt_(size)
1293 #define _Field_size_bytes_opt_(size)
1294 #define _Field_size_bytes_part_(size, count)
1295 #define _Field_size_bytes_part_opt_(size, count)
1296 #define _Field_size_full_(size)
1297 #define _Field_size_full_opt_(size)
1298 #define _Field_size_opt_(size)
1299 #define _Field_size_part_(size, count)
1300 #define _Field_size_part_opt_(size, count)
1301 #define _Field_z_
1302 #define _Function_class_(x)
1303 #define _Group_(annos)
1304 #define _In_
1305 #define _In_bound_
1306 #define _In_bytecount_(size)
1307 #define _In_bytecount_c_(size)
1308 #define _In_bytecount_x_(size)
1309 #define _In_count_(size)
1310 #define _In_count_c_(size)
1311 #define _In_count_x_(size)
1312 #define _In_defensive_(annotes)
1313 #define _In_opt_
1314 #define _In_opt_bytecount_(size)
1315 #define _In_opt_bytecount_c_(size)
1316 #define _In_opt_bytecount_x_(size)
1317 #define _In_opt_count_(size)
1318 #define _In_opt_count_c_(size)
1319 #define _In_opt_count_x_(size)
1320 #define _In_opt_ptrdiff_count_(size)
1321 #define _In_opt_z_
1322 #define _In_opt_z_bytecount_(size)
1323 #define _In_opt_z_bytecount_c_(size)
1324 #define _In_opt_z_count_(size)
1325 #define _In_opt_z_count_c_(size)
1326 #define _In_ptrdiff_count_(size)
1327 #define _In_range_(lb,ub)
1328 #define _In_reads_(size)
1329 #define _In_reads_bytes_(size)
1330 #define _In_reads_bytes_opt_(size)
1331 #define _In_reads_opt_(size)
1332 #define _In_reads_opt_z_(size)
1333 #define _In_reads_or_z_(size)
1334 #define _In_reads_to_ptr_(ptr)
1335 #define _In_reads_to_ptr_opt_(ptr)
1336 #define _In_reads_to_ptr_opt_z_(ptr)
1337 #define _In_reads_to_ptr_z_(ptr)
1338 #define _In_reads_z_(size)
1339 #define _In_z_
1340 #define _In_z_bytecount_(size)
1341 #define _In_z_bytecount_c_(size)
1342 #define _In_z_count_(size)
1343 #define _In_z_count_c_(size)
1344 #define _Inout_
1345 #define _Inout_bytecap_(size)
1346 #define _Inout_bytecap_c_(size)
1347 #define _Inout_bytecap_x_(size)
1348 #define _Inout_bytecount_(size)
1349 #define _Inout_bytecount_c_(size)
1350 #define _Inout_bytecount_x_(size)
1351 #define _Inout_cap_(size)
1352 #define _Inout_cap_c_(size)
1353 #define _Inout_cap_x_(size)
1354 #define _Inout_count_(size)
1355 #define _Inout_count_c_(size)
1356 #define _Inout_count_x_(size)
1357 #define _Inout_defensive_(annotes)
1358 #define _Inout_opt_
1359 #define _Inout_opt_bytecap_(size)
1360 #define _Inout_opt_bytecap_c_(size)
1361 #define _Inout_opt_bytecap_x_(size)
1362 #define _Inout_opt_bytecount_(size)
1363 #define _Inout_opt_bytecount_c_(size)
1364 #define _Inout_opt_bytecount_x_(size)
1365 #define _Inout_opt_cap_(size)
1366 #define _Inout_opt_cap_c_(size)
1367 #define _Inout_opt_cap_x_(size)
1368 #define _Inout_opt_count_(size)
1369 #define _Inout_opt_count_c_(size)
1370 #define _Inout_opt_count_x_(size)
1371 #define _Inout_opt_ptrdiff_count_(size)
1372 #define _Inout_opt_z_
1373 #define _Inout_opt_z_bytecap_(size)
1374 #define _Inout_opt_z_bytecap_c_(size)
1375 #define _Inout_opt_z_bytecap_x_(size)
1376 #define _Inout_opt_z_bytecount_(size)
1377 #define _Inout_opt_z_bytecount_c_(size)
1378 #define _Inout_opt_z_cap_(size)
1379 #define _Inout_opt_z_cap_c_(size)
1380 #define _Inout_opt_z_cap_x_(size)
1381 #define _Inout_opt_z_count_(size)
1382 #define _Inout_opt_z_count_c_(size)
1383 #define _Inout_ptrdiff_count_(size)
1384 #define _Inout_updates_(size)
1385 #define _Inout_updates_all_(size)
1386 #define _Inout_updates_all_opt_(size)
1387 #define _Inout_updates_bytes_(size)
1388 #define _Inout_updates_bytes_all_(size)
1389 #define _Inout_updates_bytes_all_opt_(size)
1390 #define _Inout_updates_bytes_opt_(size)
1391 #define _Inout_updates_bytes_to_(size,count)
1392 #define _Inout_updates_bytes_to_opt_(size,count)
1393 #define _Inout_updates_opt_(size)
1394 #define _Inout_updates_opt_z_(size)
1395 #define _Inout_updates_to_(size,count)
1396 #define _Inout_updates_to_opt_(size,count)
1397 #define _Inout_updates_z_(size)
1398 #define _Inout_z_
1399 #define _Inout_z_bytecap_(size)
1400 #define _Inout_z_bytecap_c_(size)
1401 #define _Inout_z_bytecap_x_(size)
1402 #define _Inout_z_bytecount_(size)
1403 #define _Inout_z_bytecount_c_(size)
1404 #define _Inout_z_cap_(size)
1405 #define _Inout_z_cap_c_(size)
1406 #define _Inout_z_cap_x_(size)
1407 #define _Inout_z_count_(size)
1408 #define _Inout_z_count_c_(size)
1409 #define _Interlocked_operand_
1410 #define _Literal_
1411 #define _Maybenull_
1412 #define _Maybevalid_
1413 #define _Maybe_raises_SEH_exception_
1414 #define _Must_inspect_result_
1415 #define _Notliteral_
1416 #define _Notnull_
1417 #define _Notref_
1418 #define _Notvalid_
1419 #define _Null_
1420 #define _Null_terminated_
1421 #define _NullNull_terminated_
1422 #define _On_failure_(annos)
1423 #define _Out_
1424 #define _Out_bound_
1425 #define _Out_bytecap_(size)
1426 #define _Out_bytecap_c_(size)
1427 #define _Out_bytecap_post_bytecount_(cap,count)
1428 #define _Out_bytecap_x_(size)
1429 #define _Out_bytecapcount_(capcount)
1430 #define _Out_bytecapcount_x_(capcount)
1431 #define _Out_cap_(size)
1432 #define _Out_cap_c_(size)
1433 #define _Out_cap_m_(mult,size)
1434 #define _Out_cap_post_count_(cap,count)
1435 #define _Out_cap_x_(size)
1436 #define _Out_capcount_(capcount)
1437 #define _Out_capcount_x_(capcount)
1438 #define _Out_defensive_(annotes)
1439 #define _Out_opt_
1440 #define _Out_opt_bytecap_(size)
1441 #define _Out_opt_bytecap_c_(size)
1442 #define _Out_opt_bytecap_post_bytecount_(cap,count)
1443 #define _Out_opt_bytecap_x_(size)
1444 #define _Out_opt_bytecapcount_(capcount)
1445 #define _Out_opt_bytecapcount_x_(capcount)
1446 #define _Out_opt_cap_(size)
1447 #define _Out_opt_cap_c_(size)
1448 #define _Out_opt_cap_m_(mult,size)
1449 #define _Out_opt_cap_post_count_(cap,count)
1450 #define _Out_opt_cap_x_(size)
1451 #define _Out_opt_capcount_(capcount)
1452 #define _Out_opt_capcount_x_(capcount)
1453 #define _Out_opt_ptrdiff_cap_(size)
1454 #define _Out_opt_z_bytecap_(size)
1455 #define _Out_opt_z_bytecap_c_(size)
1456 #define _Out_opt_z_bytecap_post_bytecount_(cap,count)
1457 #define _Out_opt_z_bytecap_x_(size)
1458 #define _Out_opt_z_bytecapcount_(capcount)
1459 #define _Out_opt_z_cap_(size)
1460 #define _Out_opt_z_cap_c_(size)
1461 #define _Out_opt_z_cap_m_(mult,size)
1462 #define _Out_opt_z_cap_post_count_(cap,count)
1463 #define _Out_opt_z_cap_x_(size)
1464 #define _Out_opt_z_capcount_(capcount)
1465 #define _Out_ptrdiff_cap_(size)
1466 #define _Out_range_(lb,ub)
1467 #define _Out_writes_(size)
1468 #define _Out_writes_all_(size)
1469 #define _Out_writes_all_opt_(size)
1470 #define _Out_writes_bytes_(size)
1471 #define _Out_writes_bytes_all_(size)
1472 #define _Out_writes_bytes_all_opt_(size)
1473 #define _Out_writes_bytes_opt_(size)
1474 #define _Out_writes_bytes_to_(size,count)
1475 #define _Out_writes_bytes_to_opt_(size,count)
1476 #define _Out_writes_opt_(size)
1477 #define _Out_writes_opt_z_(size)
1478 #define _Out_writes_to_(size,count)
1479 #define _Out_writes_to_opt_(size,count)
1480 #define _Out_writes_to_ptr_(ptr)
1481 #define _Out_writes_to_ptr_opt_(ptr)
1482 #define _Out_writes_to_ptr_opt_z_(ptr)
1483 #define _Out_writes_to_ptr_z_(ptr)
1484 #define _Out_writes_z_(size)
1485 #define _Out_z_bytecap_(size)
1486 #define _Out_z_bytecap_c_(size)
1487 #define _Out_z_bytecap_post_bytecount_(cap,count)
1488 #define _Out_z_bytecap_x_(size)
1489 #define _Out_z_bytecapcount_(capcount)
1490 #define _Out_z_cap_(size)
1491 #define _Out_z_cap_c_(size)
1492 #define _Out_z_cap_m_(mult,size)
1493 #define _Out_z_cap_post_count_(cap,count)
1494 #define _Out_z_cap_x_(size)
1495 #define _Out_z_capcount_(capcount)
1496 #define _Outptr_
1497 #define _Outptr_opt_
1498 #define _Outptr_opt_result_buffer_(size)
1499 #define _Outptr_opt_result_buffer_all_(size)
1500 #define _Outptr_opt_result_buffer_all_maybenull_(size)
1501 #define _Outptr_opt_result_buffer_maybenull_(size)
1502 #define _Outptr_opt_result_buffer_to_(size, count)
1503 #define _Outptr_opt_result_buffer_to_maybenull_(size, count)
1504 #define _Outptr_opt_result_bytebuffer_(size)
1505 #define _Outptr_opt_result_bytebuffer_all_(size)
1506 #define _Outptr_opt_result_bytebuffer_all_maybenull_(size)
1507 #define _Outptr_opt_result_bytebuffer_maybenull_(size)
1508 #define _Outptr_opt_result_bytebuffer_to_(size, count)
1509 #define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count)
1510 #define _Outptr_opt_result_maybenull_
1511 #define _Outptr_opt_result_maybenull_z_
1512 #define _Outptr_opt_result_nullonfailure_
1513 #define _Outptr_opt_result_z_
1514 #define _Outptr_result_buffer_(size)
1515 #define _Outptr_result_buffer_all_(size)
1516 #define _Outptr_result_buffer_all_maybenull_(size)
1517 #define _Outptr_result_buffer_maybenull_(size)
1518 #define _Outptr_result_buffer_to_(size, count)
1519 #define _Outptr_result_buffer_to_maybenull_(size, count)
1520 #define _Outptr_result_bytebuffer_(size)
1521 #define _Outptr_result_bytebuffer_all_(size)
1522 #define _Outptr_result_bytebuffer_all_maybenull_(size)
1523 #define _Outptr_result_bytebuffer_maybenull_(size)
1524 #define _Outptr_result_bytebuffer_to_(size, count)
1525 #define _Outptr_result_bytebuffer_to_maybenull_(size, count)
1526 #define _Outptr_result_maybenull_
1527 #define _Outptr_result_maybenull_z_
1528 #define _Outptr_result_nullonfailure_
1529 #define _Outptr_result_z_
1530 #define _Outref_
1531 #define _Outref_result_buffer_(size)
1532 #define _Outref_result_buffer_all_(size)
1533 #define _Outref_result_buffer_all_maybenull_(size)
1534 #define _Outref_result_buffer_maybenull_(size)
1535 #define _Outref_result_buffer_to_(size, count)
1536 #define _Outref_result_buffer_to_maybenull_(size, count)
1537 #define _Outref_result_bytebuffer_(size)
1538 #define _Outref_result_bytebuffer_all_(size)
1539 #define _Outref_result_bytebuffer_all_maybenull_(size)
1540 #define _Outref_result_bytebuffer_maybenull_(size)
1541 #define _Outref_result_bytebuffer_to_(size, count)
1542 #define _Outref_result_bytebuffer_to_maybenull_(size, count)
1543 #define _Outref_result_maybenull_
1544 #define _Outref_result_nullonfailure_
1545 #define _Points_to_data_
1546 #define _Post_
1547 #define _Post_bytecap_(size)
1548 #define _Post_bytecount_(size)
1549 #define _Post_bytecount_c_(size)
1550 #define _Post_bytecount_x_(size)
1551 #define _Post_cap_(size)
1552 #define _Post_count_(size)
1553 #define _Post_count_c_(size)
1554 #define _Post_count_x_(size)
1555 #define _Post_defensive_
1556 #define _Post_equal_to_(expr)
1557 #define _Post_invalid_
1558 #define _Post_maybenull_
1559 #define _Post_maybez_
1560 #define _Post_notnull_
1561 #define _Post_null_
1562 #define _Post_ptr_invalid_
1563 #define _Post_readable_byte_size_(size)
1564 #define _Post_readable_size_(size)
1565 #define _Post_satisfies_(cond)
1566 #define _Post_valid_
1567 #define _Post_writable_byte_size_(size)
1568 #define _Post_writable_size_(size)
1569 #define _Post_z_
1570 #define _Post_z_bytecount_(size)
1571 #define _Post_z_bytecount_c_(size)
1572 #define _Post_z_bytecount_x_(size)
1573 #define _Post_z_count_(size)
1574 #define _Post_z_count_c_(size)
1575 #define _Post_z_count_x_(size)
1576 #define _Pre_
1577 #define _Pre_bytecap_(size)
1578 #define _Pre_bytecap_c_(size)
1579 #define _Pre_bytecap_x_(size)
1580 #define _Pre_bytecount_(size)
1581 #define _Pre_bytecount_c_(size)
1582 #define _Pre_bytecount_x_(size)
1583 #define _Pre_cap_(size)
1584 #define _Pre_cap_c_(size)
1585 #define _Pre_cap_c_one_
1586 #define _Pre_cap_for_(param)
1587 #define _Pre_cap_m_(mult,size)
1588 #define _Pre_cap_x_(size)
1589 #define _Pre_count_(size)
1590 #define _Pre_count_c_(size)
1591 #define _Pre_count_x_(size)
1592 #define _Pre_defensive_
1593 #define _Pre_equal_to_(expr)
1594 #define _Pre_invalid_
1595 #define _Pre_maybenull_
1596 #define _Pre_notnull_
1597 #define _Pre_null_
1598 #define _Pre_opt_bytecap_(size)
1599 #define _Pre_opt_bytecap_c_(size)
1600 #define _Pre_opt_bytecap_x_(size)
1601 #define _Pre_opt_bytecount_(size)
1602 #define _Pre_opt_bytecount_c_(size)
1603 #define _Pre_opt_bytecount_x_(size)
1604 #define _Pre_opt_cap_(size)
1605 #define _Pre_opt_cap_c_(size)
1606 #define _Pre_opt_cap_c_one_
1607 #define _Pre_opt_cap_for_(param)
1608 #define _Pre_opt_cap_m_(mult,size)
1609 #define _Pre_opt_cap_x_(size)
1610 #define _Pre_opt_count_(size)
1611 #define _Pre_opt_count_c_(size)
1612 #define _Pre_opt_count_x_(size)
1613 #define _Pre_opt_ptrdiff_cap_(ptr)
1614 #define _Pre_opt_ptrdiff_count_(ptr)
1615 #define _Pre_opt_valid_
1616 #define _Pre_opt_valid_bytecap_(size)
1617 #define _Pre_opt_valid_bytecap_c_(size)
1618 #define _Pre_opt_valid_bytecap_x_(size)
1619 #define _Pre_opt_valid_cap_(size)
1620 #define _Pre_opt_valid_cap_c_(size)
1621 #define _Pre_opt_valid_cap_x_(size)
1622 #define _Pre_opt_z_
1623 #define _Pre_opt_z_bytecap_(size)
1624 #define _Pre_opt_z_bytecap_c_(size)
1625 #define _Pre_opt_z_bytecap_x_(size)
1626 #define _Pre_opt_z_cap_(size)
1627 #define _Pre_opt_z_cap_c_(size)
1628 #define _Pre_opt_z_cap_x_(size)
1629 #define _Pre_ptrdiff_cap_(ptr)
1630 #define _Pre_ptrdiff_count_(ptr)
1631 #define _Pre_readable_byte_size_(size)
1632 #define _Pre_readable_size_(size)
1633 #define _Pre_readonly_
1634 #define _Pre_satisfies_(cond)
1635 #define _Pre_unknown_
1636 #define _Pre_valid_
1637 #define _Pre_valid_bytecap_(size)
1638 #define _Pre_valid_bytecap_c_(size)
1639 #define _Pre_valid_bytecap_x_(size)
1640 #define _Pre_valid_cap_(size)
1641 #define _Pre_valid_cap_c_(size)
1642 #define _Pre_valid_cap_x_(size)
1643 #define _Pre_writable_byte_size_(size)
1644 #define _Pre_writable_size_(size)
1645 #define _Pre_writeonly_
1646 #define _Pre_z_
1647 #define _Pre_z_bytecap_(size)
1648 #define _Pre_z_bytecap_c_(size)
1649 #define _Pre_z_bytecap_x_(size)
1650 #define _Pre_z_cap_(size)
1651 #define _Pre_z_cap_c_(size)
1652 #define _Pre_z_cap_x_(size)
1653 #define _Prepost_bytecount_(size)
1654 #define _Prepost_bytecount_c_(size)
1655 #define _Prepost_bytecount_x_(size)
1656 #define _Prepost_count_(size)
1657 #define _Prepost_count_c_(size)
1658 #define _Prepost_count_x_(size)
1659 #define _Prepost_opt_bytecount_(size)
1660 #define _Prepost_opt_bytecount_c_(size)
1661 #define _Prepost_opt_bytecount_x_(size)
1662 #define _Prepost_opt_count_(size)
1663 #define _Prepost_opt_count_c_(size)
1664 #define _Prepost_opt_count_x_(size)
1665 #define _Prepost_opt_valid_
1666 #define _Prepost_opt_z_
1667 #define _Prepost_valid_
1668 #define _Prepost_z_
1669 #define _Printf_format_string_
1670 #define _Raises_SEH_exception_
1671 #define _Readable_bytes_(size)
1672 #define _Readable_elements_(size)
1673 #define _Reserved_
1674 #define _Result_nullonfailure_
1675 #define _Result_zeroonfailure_
1676 #define __inner_callback
1677 #define _Ret_
1678 #define _Ret_bound_
1679 #define _Ret_bytecap_(size)
1680 #define _Ret_bytecap_c_(size)
1681 #define _Ret_bytecap_x_(size)
1682 #define _Ret_bytecount_(size)
1683 #define _Ret_bytecount_c_(size)
1684 #define _Ret_bytecount_x_(size)
1685 #define _Ret_cap_(size)
1686 #define _Ret_cap_c_(size)
1687 #define _Ret_cap_x_(size)
1688 #define _Ret_count_(size)
1689 #define _Ret_count_c_(size)
1690 #define _Ret_count_x_(size)
1691 #define _Ret_maybenull_
1692 #define _Ret_maybenull_z_
1693 #define _Ret_notnull_
1694 #define _Ret_null_
1695 #define _Ret_opt_
1696 #define _Ret_opt_bytecap_(size)
1697 #define _Ret_opt_bytecap_c_(size)
1698 #define _Ret_opt_bytecap_x_(size)
1699 #define _Ret_opt_bytecount_(size)
1700 #define _Ret_opt_bytecount_c_(size)
1701 #define _Ret_opt_bytecount_x_(size)
1702 #define _Ret_opt_cap_(size)
1703 #define _Ret_opt_cap_c_(size)
1704 #define _Ret_opt_cap_x_(size)
1705 #define _Ret_opt_count_(size)
1706 #define _Ret_opt_count_c_(size)
1707 #define _Ret_opt_count_x_(size)
1708 #define _Ret_opt_valid_
1709 #define _Ret_opt_z_
1710 #define _Ret_opt_z_bytecap_(size)
1711 #define _Ret_opt_z_bytecount_(size)
1712 #define _Ret_opt_z_cap_(size)
1713 #define _Ret_opt_z_count_(size)
1714 #define _Ret_range_(lb,ub)
1715 #define _Ret_valid_
1716 #define _Ret_writes_(size)
1717 #define _Ret_writes_bytes_(size)
1718 #define _Ret_writes_bytes_maybenull_(size)
1719 #define _Ret_writes_bytes_to_(size,count)
1720 #define _Ret_writes_bytes_to_maybenull_(size,count)
1721 #define _Ret_writes_maybenull_(size)
1722 #define _Ret_writes_maybenull_z_(size)
1723 #define _Ret_writes_to_(size,count)
1724 #define _Ret_writes_to_maybenull_(size,count)
1725 #define _Ret_writes_z_(size)
1726 #define _Ret_z_
1727 #define _Ret_z_bytecap_(size)
1728 #define _Ret_z_bytecount_(size)
1729 #define _Ret_z_cap_(size)
1730 #define _Ret_z_count_(size)
1731 #define _Return_type_success_(expr)
1732 #define _Scanf_format_string_
1733 #define _Scanf_s_format_string_
1734 #define _Strict_type_match_
1735 #define _Struct_size_bytes_(size)
1736 #define _Success_(expr)
1737 #define _Unchanged_(e)
1738 #define _Use_decl_annotations_
1739 #define _Valid_
1740 #define _When_(expr, annos)
1741 #define _Writable_bytes_(size)
1742 #define _Writable_elements_(size)
1743
1744 #endif // ] _USE_ATTRIBUTES_FOR_SAL
1745
1746 #define __callback __inner_callback