[PSDK]
[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 _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=#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=#target)] _Group_(annos)
420 #define _At_buffer_(target, iter, bound, annos) [SAL_at_buffer(p1=#target, p2=#iter, p3=#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=#lb, p2=#ub)])
448 //#define _Deref_out_z_
449 //#define _Deref_out_z_bytecap_c_(size)
450 //#define _Deref_out_z_cap_c_(size)
451 //#define _Deref_post_bytecap_(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_
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_
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_
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_
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)
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)
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_
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_
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_
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_
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_
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_
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_bytes_(size) _SAL2_Name(_Field_size_bytes_) _Group_(_Notnull_ _Writable_bytes_(size))
604 //#define _Field_size_bytes_full_(size)
605 //#define _Field_size_bytes_full_opt_(size)
606 #define _Field_size_bytes_opt_(size) _SAL2_Name(_Field_size_bytes_opt_) _Group_(_Maybenull_ _Writable_bytes_(size))
607 //#define _Field_size_bytes_part_(size, count)
608 #define _Field_size_bytes_part_opt_(size, count) _SAL2_Name(_Field_size_bytes_part_opt_) _Group_(_Maybenull_ _Writable_bytes_(size) _Readable_bytes_(count))
609 //#define _Field_size_full_(size)
610 //#define _Field_size_full_opt_(size)
611 //#define _Field_size_opt_(size)
612 //#define _Field_size_part_(size, count)
613 //#define _Field_size_part_opt_(size, count)
614 //#define _Field_z_
615 #define _Function_class_(x) _SA_annotes1(SAL_functionClassNew, #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)
622 #define _In_count_c_(size)
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)
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_
634 //#define _In_opt_z_bytecount_(size)
635 //#define _In_opt_z_bytecount_c_(size)
636 #define _In_opt_z_count_(size)
637 //#define _In_opt_z_count_c_(size)
638 //#define _In_ptrdiff_count_(size)
639 #define _In_range_(lb,ub)
640 #define _In_reads_(size)
641 #define _In_reads_bytes_(size)
642 #define _In_reads_bytes_opt_(size)
643 #define _In_reads_opt_(size)
644 //#define _In_reads_opt_z_(size)
645 #define _In_reads_or_z_(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)
651 #define _In_z_
652 #define _In_z_bytecount_(size)
653 //#define _In_z_bytecount_c_(size)
654 #define _In_z_count_(size)
655 //#define _In_z_count_c_(size)
656 #define _Inout_ _SAL2_Name(_Inout_) _Group_(_Prepost_valid_)
657 //#define _Inout_bytecap_(size)
658 //#define _Inout_bytecap_c_(size)
659 //#define _Inout_bytecap_x_(size)
660 #define _Inout_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_
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)
697 //#define _Inout_updates_all_(size)
698 //#define _Inout_updates_all_opt_(size)
699 #define _Inout_updates_bytes_(size)
700 //#define _Inout_updates_bytes_all_(size)
701 //#define _Inout_updates_bytes_all_opt_(size)
702 //#define _Inout_updates_bytes_opt_(size)
703 #define _Inout_updates_bytes_to_(size,count)
704 #define _Inout_updates_bytes_to_opt_(size,count)
705 #define _Inout_updates_opt_(size)
706 //#define _Inout_updates_opt_z_(size)
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_
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_
722 #define _Literal_
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_
728 #define _Notnull_ [SAL_annotes(Name="SAL_null", p1="__no")]
729 //#define _Notref_
730 //#define _Notvalid_
731 #define _Null_
732 #define _Null_terminated_ _SAL2_Name(_Null_terminated_) _Group_([SAL_annotes(Name="SAL_nullTerminated", p1="__yes")])
733 #define _NullNull_terminated_
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)
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)
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)
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)
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)
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)
780 //#define _Out_writes_all_(size)
781 //#define _Out_writes_all_opt_(size)
782 #define _Out_writes_bytes_(size)
783 #define _Out_writes_bytes_all_(size)
784 //#define _Out_writes_bytes_all_opt_(size)
785 #define _Out_writes_bytes_opt_(size)
786 #define _Out_writes_bytes_to_(size,count)
787 #define _Out_writes_bytes_to_opt_(size,count)
788 #define _Out_writes_opt_(size)
789 //#define _Out_writes_opt_z_(size)
790 #define _Out_writes_to_(size,count)
791 #define _Out_writes_to_opt_(size,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)
797 #define _Out_z_bytecap_(size)
798 //#define _Out_z_bytecap_c_(size)
799 //#define _Out_z_bytecap_post_bytecount_(cap,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)
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)
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"#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)
827 //#define _Outptr_result_buffer_all_(size)
828 //#define _Outptr_result_buffer_all_maybenull_(size)
829 //#define _Outptr_result_buffer_maybenull_(size)
830 //#define _Outptr_result_buffer_to_(size, count)
831 //#define _Outptr_result_buffer_to_maybenull_(size, count)
832 #define _Outptr_result_bytebuffer_(size)
833 //#define _Outptr_result_bytebuffer_all_(size)
834 //#define _Outptr_result_bytebuffer_all_maybenull_(size)
835 //#define _Outptr_result_bytebuffer_maybenull_(size)
836 //#define _Outptr_result_bytebuffer_to_(size, count)
837 //#define _Outptr_result_bytebuffer_to_maybenull_(size, count)
838 //#define _Outptr_result_maybenull_
839 //#define _Outptr_result_maybenull_z_
840 #define _Outptr_result_nullonfailure_
841 //#define _Outptr_result_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_
858 //#define _Post_bytecap_(size)
859 //#define _Post_bytecount_(size)
860 //#define _Post_bytecount_c_(size)
861 //#define _Post_bytecount_x_(size)
862 //#define _Post_cap_(size)
863 //#define _Post_count_(size)
864 //#define _Post_count_c_(size)
865 //#define _Post_count_x_(size)
866 //#define _Post_defensive_
867 #define _Post_equal_to_(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_
871 #define _Post_notnull_
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)
875 //#define _Post_readable_size_(size)
876 #define _Post_satisfies_(cond)
877 #define _Post_valid_ _SAL2_Name(_Post_valid_) _Group_([SA_Post(Valid=SA_Yes)])
878 #define _Post_writable_byte_size_(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)
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)
888 //#define _Pre_bytecap_c_(size)
889 //#define _Pre_bytecap_x_(size)
890 #define _Pre_bytecount_(size)
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" #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)
900 //#define _Pre_count_c_(size)
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_
907 //#define _Pre_null_
908 //#define _Pre_opt_bytecap_(size)
909 //#define _Pre_opt_bytecap_c_(size)
910 //#define _Pre_opt_bytecap_x_(size)
911 //#define _Pre_opt_bytecount_(size)
912 //#define _Pre_opt_bytecount_c_(size)
913 //#define _Pre_opt_bytecount_x_(size)
914 //#define _Pre_opt_cap_(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)
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_
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)
943 //#define _Pre_readonly_
944 //#define _Pre_satisfies_(cond)
945 //#define _Pre_valid_
946 //#define _Pre_valid_bytecap_(size)
947 //#define _Pre_valid_bytecap_c_(size)
948 //#define _Pre_valid_bytecap_x_(size)
949 //#define _Pre_valid_cap_(size)
950 //#define _Pre_valid_cap_c_(size)
951 //#define _Pre_valid_cap_x_(size)
952 //#define _Pre_writable_byte_size_(size)
953 //#define _Pre_writable_size_(size)
954 //#define _Pre_writeonly_
955 //#define _Pre_z_
956 //#define _Pre_z_bytecap_(size)
957 //#define _Pre_z_bytecap_c_(size)
958 //#define _Pre_z_bytecap_x_(size)
959 //#define _Pre_z_cap_(size)
960 //#define _Pre_z_cap_c_(size)
961 //#define _Pre_z_cap_x_(size)
962 //#define _Prepost_bytecount_(size)
963 //#define _Prepost_bytecount_c_(size)
964 //#define _Prepost_bytecount_x_(size)
965 //#define _Prepost_count_(size)
966 //#define _Prepost_count_c_(size)
967 //#define _Prepost_count_x_(size)
968 //#define _Prepost_opt_bytecount_(size)
969 //#define _Prepost_opt_bytecount_c_(size)
970 //#define _Prepost_opt_bytecount_x_(size)
971 //#define _Prepost_opt_count_(size)
972 //#define _Prepost_opt_count_c_(size)
973 //#define _Prepost_opt_count_x_(size)
974 #define _Prepost_opt_valid_ _SAL2_Name(_Prepost_opt_valid_) _Group_(_Pre_opt_valid_ _Post_valid_)
975 //#define _Prepost_opt_z_
976 #define _Prepost_valid_
977 //#define _Prepost_z_
978 #define _Printf_format_string_
979 //#define _Raises_SEH_exception_
980 #define _Maybe_raises_SEH_exception_
981 #define _Readable_bytes_(size) _SAL2_Name(_Readable_bytes_) _Group_(_SA_annotes1(SAL_readableTo, byteCount(size)))
982 //#define _Readable_elements_(size)
983 #define _Reserved_ _SAL2_Name(_Reserved_) _Group_([SA_Pre(Null=SA_Yes)])
984 //#define _Result_nullonfailure_
985 //#define _Result_zeroonfailure_
986 //#define __inner_callback
987 //#define _Ret_
988 //#define _Ret_bound_
989 //#define _Ret_bytecap_(size)
990 //#define _Ret_bytecap_c_(size)
991 //#define _Ret_bytecap_x_(size)
992 //#define _Ret_bytecount_(size)
993 //#define _Ret_bytecount_c_(size)
994 //#define _Ret_bytecount_x_(size)
995 //#define _Ret_cap_(size)
996 //#define _Ret_cap_c_(size)
997 //#define _Ret_cap_x_(size)
998 //#define _Ret_count_(size)
999 //#define _Ret_count_c_(size)
1000 //#define _Ret_count_x_(size)
1001 #define _Ret_maybenull_ _SAL2_Name(_Ret_maybenull_) _Group_([SA_Post(Null=SA_Maybe)])
1002 //#define _Ret_maybenull_z_
1003 //#define _Ret_notnull_
1004 //#define _Ret_null_
1005 //#define _Ret_opt_
1006 #define _Ret_opt_bytecap_(size)
1007 //#define _Ret_opt_bytecap_c_(size)
1008 //#define _Ret_opt_bytecap_x_(size)
1009 #define _Ret_opt_bytecount_(size)
1010 //#define _Ret_opt_bytecount_c_(size)
1011 //#define _Ret_opt_bytecount_x_(size)
1012 //#define _Ret_opt_cap_(size)
1013 //#define _Ret_opt_cap_c_(size)
1014 //#define _Ret_opt_cap_x_(size)
1015 //#define _Ret_opt_count_(size)
1016 //#define _Ret_opt_count_c_(size)
1017 //#define _Ret_opt_count_x_(size)
1018 //#define _Ret_opt_valid_
1019 //#define _Ret_opt_z_
1020 //#define _Ret_opt_z_bytecap_(size)
1021 //#define _Ret_opt_z_bytecount_(size)
1022 //#define _Ret_opt_z_cap_(size)
1023 //#define _Ret_opt_z_count_(size)
1024 #define _Ret_range_(lb,ub)
1025 //#define _Ret_valid_
1026 //#define _Ret_writes_(size)
1027 //#define _Ret_writes_bytes_(size)
1028 //#define _Ret_writes_bytes_maybenull_(size)
1029 //#define _Ret_writes_bytes_to_(size,count)
1030 //#define _Ret_writes_bytes_to_maybenull_(size,count)
1031 //#define _Ret_writes_maybenull_(size)
1032 //#define _Ret_writes_maybenull_z_(size)
1033 //#define _Ret_writes_to_(size,count)
1034 //#define _Ret_writes_to_maybenull_(size,count)
1035 //#define _Ret_writes_z_(size)
1036 #define _Ret_z_ _SAL2_Name(_Ret_z_) _Group_([SA_Post(Null=SA_No,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
1037 //#define _Ret_z_bytecap_(size)
1038 //#define _Ret_z_bytecount_(size)
1039 //#define _Ret_z_cap_(size)
1040 //#define _Ret_z_count_(size)
1041 #define _Return_type_success_(expr)
1042 //#define _Scanf_format_string_
1043 //#define _Scanf_s_format_string_
1044 #define _Struct_size_bytes_(size)
1045 #define _Success_(expr) _SAL2_Name(_Success_) _Group_([SA_Success(Condition=_SA_SPECSTRIZE(expr))])
1046 #define _Unchanged_(e)
1047 //#define _Use_decl_annotations_
1048 //#define _Valid_
1049 #define _Writable_bytes_(size) _SAL2_Name(_Writable_bytes_) _Group_(_SA_annotes1(SAL_writableTo, byteCount(size)))
1050 #define _Writable_elements_(size) _SAL2_Name(_Writable_elements_) _Group_(_SA_annotes1(SAL_writableTo, elementCount(size)))
1051
1052 #define __In_impl_ [SA_Pre(Valid=SA_Yes)] [SA_Pre(Deref=1, Notref=1, Access=SA_Read)]
1053 #define __AuToQuOtE _SA_annotes0(SAL_AuToQuOtE)
1054
1055 #define __ANNOTATION(fun) _SA_annotes0(SAL_annotation) void __SA_##fun
1056 __ANNOTATION(SAL_useHeader(void));
1057 __ANNOTATION(SAL_bound(void));
1058 __ANNOTATION(SAL_allocator(void));
1059 __ANNOTATION(SAL_file_parser(__AuToQuOtE __In_impl_ char *, __In_impl_ char *));
1060 __ANNOTATION(SAL_source_code_content(__In_impl_ char *));
1061 __ANNOTATION(SAL_analysisHint(__AuToQuOtE __In_impl_ char *));
1062 __ANNOTATION(SAL_untrusted_data_source(__AuToQuOtE __In_impl_ char *));
1063 __ANNOTATION(SAL_untrusted_data_source_this(__AuToQuOtE __In_impl_ char *));
1064 __ANNOTATION(SAL_validated(__AuToQuOtE __In_impl_ char *));
1065 __ANNOTATION(SAL_validated_this(__AuToQuOtE __In_impl_ char *));
1066 __ANNOTATION(SAL_encoded(void));
1067 __ANNOTATION(SAL_adt(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *));
1068 __ANNOTATION(SAL_add_adt_property(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *));
1069 __ANNOTATION(SAL_remove_adt_property(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *));
1070 __ANNOTATION(SAL_transfer_adt_property_from(__AuToQuOtE __In_impl_ char *));
1071 __ANNOTATION(SAL_post_type(__AuToQuOtE __In_impl_ char *));
1072 __ANNOTATION(SAL_volatile(void));
1073 __ANNOTATION(SAL_nonvolatile(void));
1074 __ANNOTATION(SAL_entrypoint(__AuToQuOtE __In_impl_ char *, __AuToQuOtE __In_impl_ char *));
1075 __ANNOTATION(SAL_blocksOn(__In_impl_ void*));
1076 __ANNOTATION(SAL_mustInspect(void));
1077 __ANNOTATION(SAL_TypeName(__AuToQuOtE __In_impl_ char *));
1078 __ANNOTATION(SAL_interlocked(void);)
1079 #pragma warning (suppress: 28227 28241)
1080 __ANNOTATION(SAL_name(__In_impl_ char *, __In_impl_ char *, __In_impl_ char *);)
1081
1082 #define __PRIMOP(type, fun) _SA_annotes0(SAL_primop) type __SA_##fun;
1083 __PRIMOP(char *, _Macro_value_(__In_impl_ char *));
1084 __PRIMOP(int, _Macro_defined_(__In_impl_ char *));
1085 __PRIMOP(char *, _Strstr_(__In_impl_ char *, __In_impl_ char *));
1086
1087 __ANNOTATION(SAL_functionClassNew(__In_impl_ char*);)
1088 __PRIMOP(int, _In_function_class_(__In_impl_ char*);)
1089
1090 #define _In_function_class_(x) _In_function_class_(#x)
1091 #define _Called_from_function_class_(x) _In_function_class_(x)
1092 #define _Function_class_(x) _SA_annotes1(SAL_functionClassNew, #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_valid_
1626 #define _Pre_valid_bytecap_(size)
1627 #define _Pre_valid_bytecap_c_(size)
1628 #define _Pre_valid_bytecap_x_(size)
1629 #define _Pre_valid_cap_(size)
1630 #define _Pre_valid_cap_c_(size)
1631 #define _Pre_valid_cap_x_(size)
1632 #define _Pre_writable_byte_size_(size)
1633 #define _Pre_writable_size_(size)
1634 #define _Pre_writeonly_
1635 #define _Pre_z_
1636 #define _Pre_z_bytecap_(size)
1637 #define _Pre_z_bytecap_c_(size)
1638 #define _Pre_z_bytecap_x_(size)
1639 #define _Pre_z_cap_(size)
1640 #define _Pre_z_cap_c_(size)
1641 #define _Pre_z_cap_x_(size)
1642 #define _Prepost_bytecount_(size)
1643 #define _Prepost_bytecount_c_(size)
1644 #define _Prepost_bytecount_x_(size)
1645 #define _Prepost_count_(size)
1646 #define _Prepost_count_c_(size)
1647 #define _Prepost_count_x_(size)
1648 #define _Prepost_opt_bytecount_(size)
1649 #define _Prepost_opt_bytecount_c_(size)
1650 #define _Prepost_opt_bytecount_x_(size)
1651 #define _Prepost_opt_count_(size)
1652 #define _Prepost_opt_count_c_(size)
1653 #define _Prepost_opt_count_x_(size)
1654 #define _Prepost_opt_valid_
1655 #define _Prepost_opt_z_
1656 #define _Prepost_valid_
1657 #define _Prepost_z_
1658 #define _Printf_format_string_
1659 #define _Raises_SEH_exception_
1660 #define _Maybe_raises_SEH_exception_
1661 #define _Readable_bytes_(size)
1662 #define _Readable_elements_(size)
1663 #define _Reserved_
1664 #define _Result_nullonfailure_
1665 #define _Result_zeroonfailure_
1666 #define __inner_callback
1667 #define _Ret_
1668 #define _Ret_bound_
1669 #define _Ret_bytecap_(size)
1670 #define _Ret_bytecap_c_(size)
1671 #define _Ret_bytecap_x_(size)
1672 #define _Ret_bytecount_(size)
1673 #define _Ret_bytecount_c_(size)
1674 #define _Ret_bytecount_x_(size)
1675 #define _Ret_cap_(size)
1676 #define _Ret_cap_c_(size)
1677 #define _Ret_cap_x_(size)
1678 #define _Ret_count_(size)
1679 #define _Ret_count_c_(size)
1680 #define _Ret_count_x_(size)
1681 #define _Ret_maybenull_
1682 #define _Ret_maybenull_z_
1683 #define _Ret_notnull_
1684 #define _Ret_null_
1685 #define _Ret_opt_
1686 #define _Ret_opt_bytecap_(size)
1687 #define _Ret_opt_bytecap_c_(size)
1688 #define _Ret_opt_bytecap_x_(size)
1689 #define _Ret_opt_bytecount_(size)
1690 #define _Ret_opt_bytecount_c_(size)
1691 #define _Ret_opt_bytecount_x_(size)
1692 #define _Ret_opt_cap_(size)
1693 #define _Ret_opt_cap_c_(size)
1694 #define _Ret_opt_cap_x_(size)
1695 #define _Ret_opt_count_(size)
1696 #define _Ret_opt_count_c_(size)
1697 #define _Ret_opt_count_x_(size)
1698 #define _Ret_opt_valid_
1699 #define _Ret_opt_z_
1700 #define _Ret_opt_z_bytecap_(size)
1701 #define _Ret_opt_z_bytecount_(size)
1702 #define _Ret_opt_z_cap_(size)
1703 #define _Ret_opt_z_count_(size)
1704 #define _Ret_range_(lb,ub)
1705 #define _Ret_valid_
1706 #define _Ret_writes_(size)
1707 #define _Ret_writes_bytes_(size)
1708 #define _Ret_writes_bytes_maybenull_(size)
1709 #define _Ret_writes_bytes_to_(size,count)
1710 #define _Ret_writes_bytes_to_maybenull_(size,count)
1711 #define _Ret_writes_maybenull_(size)
1712 #define _Ret_writes_maybenull_z_(size)
1713 #define _Ret_writes_to_(size,count)
1714 #define _Ret_writes_to_maybenull_(size,count)
1715 #define _Ret_writes_z_(size)
1716 #define _Ret_z_
1717 #define _Ret_z_bytecap_(size)
1718 #define _Ret_z_bytecount_(size)
1719 #define _Ret_z_cap_(size)
1720 #define _Ret_z_count_(size)
1721 #define _Return_type_success_(expr)
1722 #define _Scanf_format_string_
1723 #define _Scanf_s_format_string_
1724 #define _Struct_size_bytes_(size)
1725 #define _Success_(expr)
1726 #define _Unchanged_(e)
1727 #define _Use_decl_annotations_
1728 #define _Valid_
1729 #define _When_(expr, annos)
1730 #define _Writable_bytes_(size)
1731 #define _Writable_elements_(size)
1732
1733 #endif // ] _USE_ATTRIBUTES_FOR_SAL
1734