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