ReactOS Fundraising Campaign 2012
 
€ 3,873 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

sal.h
Go to the documentation of this file.
00001 /*
00002  * sal.h
00003  *
00004  * Standard Annotation Language (SAL) definitions
00005  *
00006  * This file is part of the ReactOS PSDK package.
00007  *
00008  * Contributors:
00009  *   Timo Kreuzer (timo.kreuzer@reactos.org)
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #pragma once
00024 #define __ATTR_SAL
00025 
00026 /* HACK: gcc's C++ headers conflict with oldstyle macros */
00027 #if !defined(__cplusplus) || !defined(__GNUC__)
00028 #include <sal_old.h>
00029 #endif
00030 
00031 #ifdef _PREFAST_
00032 
00033 #pragma warning(disable:6320) /* disable warning about SEH filter */
00034 #pragma warning(disable:28247) /* duplicated model file annotations */
00035 #pragma warning(disable:28251) /* Inconsistent annotation */
00036 
00037 
00038 #ifndef _USE_DECLSPECS_FOR_SAL
00039 #define _USE_DECLSPECS_FOR_SAL 1
00040 #endif
00041 
00042 #if !defined(_USE_ATTRIBUTES_FOR_SAL) || _USE_DECLSPECS_FOR_SAL
00043 #define _USE_ATTRIBUTES_FOR_SAL 0
00044 #endif
00045 
00046 #if !_USE_DECLSPECS_FOR_SAL && !_USE_ATTRIBUTES_FOR_SAL
00047 #if _MSC_VER >= 1400
00048 #undef _USE_ATTRIBUTES_FOR_SAL
00049 #define _USE_ATTRIBUTES_FOR_SAL 1
00050 #else
00051 #undef _USE_DECLSPECS_FOR_SAL
00052 #define _USE_DECLSPECS_FOR_SAL  1
00053 #endif /* _MSC_VER >= 1400 */
00054 #endif /* !_USE_DECLSPECS_FOR_SAL && !_USE_ATTRIBUTES_FOR_SAL */
00055 
00056 #else /* _PREFAST_ */
00057 
00058 #undef _USE_DECLSPECS_FOR_SAL
00059 #define _USE_DECLSPECS_FOR_SAL 0
00060 #undef _USE_ATTRIBUTES_FOR_SAL
00061 #define _USE_ATTRIBUTES_FOR_SAL 0
00062 
00063 #endif /* _PREFAST_ */
00064 
00065 #if defined(MIDL_PASS) || defined(__midl) || defined(RC_INVOKED)
00066 #undef _USE_DECLSPECS_FOR_SAL
00067 #define _USE_DECLSPECS_FOR_SAL 0
00068 #undef _USE_ATTRIBUTES_FOR_SAL
00069 #define _USE_ATTRIBUTES_FOR_SAL 0
00070 #endif
00071 
00072 #if !defined(_MSC_EXTENSIONS) || defined(_M_CEE_SAFE)
00073 #undef _USE_ATTRIBUTES_FOR_SAL
00074 #define _USE_ATTRIBUTES_FOR_SAL 0
00075 #endif
00076 
00077 
00078 #if _USE_ATTRIBUTES_FOR_SAL || _USE_DECLSPECS_FOR_SAL
00079 
00080 #define _SA_SPECSTRIZE(x)           #x
00081 
00082 #if _USE_ATTRIBUTES_FOR_SAL
00083 
00084 #if (_MSC_VER < 1400)
00085 #error attribute sal only works with _MSC_VER >= 1400
00086 #endif
00087 
00088 #if !defined(_W64)
00089 # if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
00090 #  define _W64 __w64
00091 # else
00092 #  define _W64
00093 # endif
00094 #endif
00095 
00096 #ifndef _SIZE_T_DEFINED
00097 # ifdef  _WIN64
00098 typedef unsigned __int64 size_t;
00099 # else
00100 typedef _W64 unsigned int size_t;
00101 # endif
00102 # define _SIZE_T_DEFINED
00103 #endif
00104 
00105 #ifndef _WCHAR_T_DEFINED
00106 typedef unsigned short wchar_t;
00107 # define _WCHAR_T_DEFINED
00108 #endif
00109 
00110 #ifdef __cplusplus
00111 # define SA(id) id
00112 # define REPEATABLE [repeatable]
00113 # define CONSTRUCTOR(name) name();
00114 namespace vc_attributes {
00115 #else
00116 # define SA(id) SA_##id
00117 # define REPEATABLE
00118 # define CONSTRUCTOR(name)
00119 #endif
00120 #define ATTR_SA_ALL [source_annotation_attribute(SA(All))]
00121 
00122 typedef enum SA(YesNoMaybe)
00123 {
00124     SA(No) = 0x0fff0001,
00125     SA(Maybe) = 0x0fff0010,
00126     SA(Yes) = 0x0fff0100
00127 } SA(YesNoMaybe);
00128 
00129 typedef enum SA(AccessType)
00130 {
00131     SA(NoAccess) = 0,
00132     SA(Read) = 1,
00133     SA(Write) = 2,
00134     SA(ReadWrite) = 3
00135 } SA(AccessType);
00136 
00137 #define DECLARE_ATTR(Name, ...) \
00138     ATTR_SA_ALL \
00139     typedef struct Name \
00140     { \
00141         CONSTRUCTOR(Name) \
00142         __VA_ARGS__ \
00143     } Name,
00144 
00145 REPEATABLE DECLARE_ATTR(PreAttribute, unsigned int Deref;SA(YesNoMaybe) Valid;SA(YesNoMaybe) Null;SA(YesNoMaybe) Tainted;SA(AccessType) Access;unsigned int Notref;
00146     size_t ValidElementsConst;size_t ValidBytesConst;const wchar_t* ValidElements;const wchar_t* ValidBytes;const wchar_t* ValidElementsLength;const wchar_t* ValidBytesLength;
00147     size_t WritableElementsConst;size_t WritableBytesConst;const wchar_t* WritableElements;const wchar_t* WritableBytes;const wchar_t* WritableElementsLength;
00148     const wchar_t* WritableBytesLength;size_t ElementSizeConst;const wchar_t* ElementSize;SA(YesNoMaybe) NullTerminated;const wchar_t* Condition;) SA_Pre;
00149 REPEATABLE DECLARE_ATTR(PostAttribute, unsigned int Deref;SA(YesNoMaybe) Valid;SA(YesNoMaybe) Null;SA(YesNoMaybe) Tainted;SA(AccessType) Access;
00150     unsigned int Notref;size_t ValidElementsConst;size_t ValidBytesConst;const wchar_t* ValidElements;const wchar_t* ValidBytes;
00151     const wchar_t* ValidElementsLength;const wchar_t* ValidBytesLength;size_t WritableElementsConst;size_t WritableBytesConst;
00152     const wchar_t* WritableElements;const wchar_t* WritableBytes;const wchar_t* WritableElementsLength;const wchar_t* WritableBytesLength;
00153     size_t ElementSizeConst;const wchar_t* ElementSize;SA(YesNoMaybe) NullTerminated;SA(YesNoMaybe) MustCheck;const wchar_t* Condition;) SA_Post;
00154 DECLARE_ATTR(FormatStringAttribute, const wchar_t* Style; const wchar_t* UnformattedAlternative;) SA_FormatString;
00155 REPEATABLE DECLARE_ATTR(PreBoundAttribute, unsigned int Deref;) SA_PreBound;
00156 REPEATABLE DECLARE_ATTR(PostBoundAttribute, unsigned int Deref;) SA_PostBound;
00157 REPEATABLE DECLARE_ATTR(PreRangeAttribute, unsigned int Deref;const char* MinVal;const char* MaxVal;) SA_PreRange;
00158 REPEATABLE DECLARE_ATTR(PostRangeAttribute, unsigned int Deref;const char* MinVal;const char* MaxVal;) SA_PostRange;
00159 REPEATABLE DECLARE_ATTR(DerefAttribute, int unused;) SAL_deref;
00160 REPEATABLE DECLARE_ATTR(NotrefAttribute, int unused;) SAL_notref;
00161 REPEATABLE DECLARE_ATTR(AnnotesAttribute, wchar_t *Name;wchar_t *p1;wchar_t *p2;wchar_t *p3;wchar_t *p4;wchar_t *p5;wchar_t *p6;wchar_t *p7;wchar_t *p8;wchar_t *p9;) SAL_annotes;
00162 REPEATABLE DECLARE_ATTR(AtAttribute, wchar_t *p1;) SAL_at;
00163 REPEATABLE DECLARE_ATTR(AtBufferAttribute, wchar_t *p1;wchar_t *p2;wchar_t *p3;) SAL_at_buffer;
00164 REPEATABLE DECLARE_ATTR(WhenAttribute, wchar_t *p1;) SAL_when;
00165 REPEATABLE DECLARE_ATTR(TypefixAttribute, wchar_t *p1;) SAL_typefix;
00166 REPEATABLE DECLARE_ATTR(ContextAttribute, wchar_t *p1;) SAL_context;
00167 REPEATABLE DECLARE_ATTR(ExceptAttribute, int unused;) SAL_except;
00168 REPEATABLE DECLARE_ATTR(PreOpAttribute, int unused;) SAL_pre;
00169 REPEATABLE DECLARE_ATTR(PostOpAttribute, int unused;) SAL_post;
00170 REPEATABLE DECLARE_ATTR(BeginAttribute, int unused;) SAL_begin;
00171 REPEATABLE DECLARE_ATTR(EndAttribute, int unused;) SAL_end;
00172 
00173 #ifdef __cplusplus
00174 };
00175 #endif
00176 
00177 #undef REPEATABLE
00178 #undef SA
00179 #undef DECLARE_ATTR
00180 
00181 
00182 #if (_MSC_VER >= 1610)
00183 #define NL_(size) "\n"#size
00184 #else
00185 #define NL_(size) #size
00186 #endif
00187 
00188 #define _SA_annotes0(n)             [SAL_annotes(Name=#n)]
00189 #define _SA_annotes1(n,pp1)         [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1))]
00190 #define _SA_annotes2(n,pp1,pp2)     [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1), p2=_SA_SPECSTRIZE(pp2))]
00191 #define _SA_annotes3(n,pp1,pp2,pp3) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1), p2=_SA_SPECSTRIZE(pp2), p3=_SA_SPECSTRIZE(pp3))]
00192 
00193 #define _SA_Deref_pre1_(p1)         [SA_Pre(Deref=1,p1)]
00194 #define _SA_Deref_pre2_(p1,p2)      [SA_Pre(Deref=1,p1,p2)]
00195 #define _SA_Deref_pre3_(p1,p2,p3)   [SA_Pre(Deref=1,p1,p2,p3)]
00196 #define _SA_Deref_post1_(p1)        [SA_Post(Deref=1,p1)]
00197 #define _SA_Deref_post2_(p1,p2)     [SA_Post(Deref=1,p1,p2)]
00198 #define _SA_Deref_post3_(p1,p2,p3)  [SA_Post(Deref=1,p1,p2,p3)]
00199 #define _SA_Deref_in_bound_         [SA_PreBound(Deref=1)]
00200 #define _SA_Pre1_(p1)               [SA_Pre(p1)]
00201 #define _SA_Pre2_(p1,p2)            [SA_Pre(p1,p2)]
00202 #define _SA_Pre3_(p1,p2,p3)         [SA_Pre(p1,p2,p3)]
00203 #define _SA_Post1_(p1)              [SA_Post(p1)]
00204 #define _SA_Post2_(p1,p2)           [SA_Post(p1,p2)]
00205 #define _SA_Post3_(p1,p2,p3)        [SA_Post(p1,p2,p3)]
00206 #define _SA_Deref_ret1_(p1)         [returnvalue:SA_Post(Deref=1,p1)]
00207 #define _SA_Deref2_pre1_(p1)        [SA_Pre(Deref=2,Notref=1,p1)]
00208 #define _SA_Ret1_(p1)               [returnvalue:SA_Post(p1)]
00209 #define _SA_Ret2_(p1,p2)            [returnvalue:SA_Post(p1,p2)]
00210 #define _SA_Ret3_(p1,p2,p3)         [returnvalue:SA_Post(p1,p2,p3)]
00211 
00212 #define __null_impl                 Null=SA_Yes
00213 #define __null_impl_notref          Null=SA_Yes,Notref=1
00214 #define __notnull_impl              Null=SA_No
00215 #define __notnull_impl_notref       Null=SA_No,Notref=1
00216 #define __maybenull_impl            Null=SA_Maybe
00217 #define __maybenull_impl_notref     Null=SA_Maybe,Notref=1
00218 #define __valid_impl                Valid=SA_Yes
00219 #define __notvalid_impl             Valid=SA_No
00220 #define __maybevalid_impl           Valid=SA_Maybe
00221 #define __readaccess_impl_notref    Access=SA_Read,Notref=1
00222 #define __writeaccess_impl_notref   Access=SA_Write,Notref=1
00223 #define __bytecap_impl(size)        WritableBytes=_NL_(size)
00224 #define __bytecap_c_impl(size)      WritableBytesConst=size
00225 #define __bytecap_x_impl(size)      WritableBytes="\n@"#size
00226 #define __cap_impl(size)            WritableElements=_NL_(size)
00227 #define __cap_c_impl(size)          WritableElementsConst=size
00228 #define __cap_c_one_notref_impl     WritableElementsConst=1,Notref=1
00229 #define __cap_for_impl(param)       WritableElementsLength=#param
00230 #define __cap_x_impl(size)          WritableElements="\n@"#size
00231 #define __bytecount_impl(size)      ValidBytes=_NL_(size)
00232 #define __bytecount_c_impl(size)    ValidBytesConst=size
00233 #define __bytecount_x_impl(size)    ValidBytes="\n@"#size
00234 #define __count_impl(size)          ValidElements=_NL_(size)
00235 #define __count_c_impl(size)        ValidElementsConst=size
00236 #define __count_x_impl(size)        ValidElements="\n@"#size
00237 #define __zterm_impl                NullTerminated=SA_Yes
00238 #define __notzterm_impl             NullTerminated=SA_No
00239 #define __maybezterm_impl           NullTerminated=SA_Maybe
00240 #define __mult_impl(mult,size)      __cap_impl((mult)*(size))
00241 
00242 #else /* #if _USE_DECLSPECS_FOR_SAL */
00243 
00244 #define _SA_annotes0(n)             __declspec(#n)
00245 #define _SA_annotes1(n,pp1)         __declspec(#n "(" _SA_SPECSTRIZE(pp1) ")" )
00246 #define _SA_annotes2(n,pp1,pp2)     __declspec(#n "(" _SA_SPECSTRIZE(pp1) "," _SA_SPECSTRIZE(pp2) ")")
00247 #define _SA_annotes3(n,pp1,pp2,pp3) __declspec(#n "(" _SA_SPECSTRIZE(pp1) "," _SA_SPECSTRIZE(pp2) "," _SA_SPECSTRIZE(pp3) ")")
00248 
00249 #define _SA_Deref_pre_              _Pre_ _Notref_ _SA_Deref_
00250 #define _SA_Deref_pre1_(p1)         _SA_Deref_pre_ p1
00251 #define _SA_Deref_pre2_(p1,p2)      _SA_Deref_pre_ p1 _SA_Deref_pre_ p2
00252 #define _SA_Deref_pre3_(p1,p2,p3)   _SA_Deref_pre_ p1 _SA_Deref_pre_ p2 _SA_Deref_pre_ p3
00253 #define _SA_Deref_post_             _Post_ _Notref_ _SA_Deref_
00254 #define _SA_Deref_post1_(p1)        _SA_Deref_post_ p1
00255 #define _SA_Deref_post2_(p1,p2)     _SA_Deref_post_ p1 _SA_Deref_post_ p2
00256 #define _SA_Deref_post3_(p1,p2,p3)  _SA_Deref_post_ p1 _SA_Deref_post_ p2 _SA_Deref_post_ p3
00257 #define _SA_Deref_in_bound_         _Pre_ _Notref_ _SA_Deref_ _SA_Bound_
00258 #define _SA_Pre1_(p1)               _Pre_ p1
00259 #define _SA_Pre2_(p1,p2)            _Pre_ p1 _Pre_ p2
00260 #define _SA_Pre3_(p1,p2,p3)         _Pre_ p1 _Pre_ p2 _Pre_ p3
00261 #define _SA_Post1_(p1)              _Post_ p1
00262 #define _SA_Post2_(p1,p2)           _Post_ p1 _Post_ p2
00263 #define _SA_Post3_(p1,p2,p3)        _Post_ p1 _Post_ p2 _Post_ p3
00264 #define _SA_Deref_ret1_(p1)         _SA_Deref_post_ p1
00265 #define _SA_Deref2_pre1_(p1)        _SA_Deref_pre_ _Notref_ _SA_Deref_ p1
00266 #define _SA_Ret1_(p1)               _Post_ p1
00267 #define _SA_Ret2_(p1,p2)            _Post_ p1 _Post_ p2
00268 #define _SA_Ret3_(p1,p2,p3)         _Post_ p1 _Post_ p2 _Post_ p3
00269 
00270 #define __null_impl                 _Null_
00271 #define __null_impl_notref          _Notref_ _Null_
00272 #define __notnull_impl              _Notnull_
00273 #define __notnull_impl_notref       _Notref_ _Notnull_
00274 #define __maybenull_impl            __inner_exceptthat _Maybenull_
00275 #define __maybenull_impl_notref     _Notref_ __inner_exceptthat _Maybenull_
00276 #define __valid_impl                __declspec("SAL_valid") // __declspec("SAL_valid(__yes)")
00277 #define __maybevalid_impl           __declspec("SAL_maybevalid") // __declspec("SAL_valid(__maybe)")
00278 #define __notvalid_impl             __declspec("SAL_notvalid") // __declspec("SAL_valid(__no)")
00279 #define __readaccess_impl_notref    _Notref_ __declspec("SAL_readonly") // __declspec("SAL_access(0x1)")
00280 #define __writeaccess_impl_notref   _Notref_ __declspec("SAL_notreadonly") // __declspec("SAL_access(0x2)")
00281 #define __bytecap_impl(size)        _SA_annotes1(SAL_writableTo,byteCount(size))
00282 #define __bytecap_c_impl(size)      _SA_annotes1(SAL_writableTo,byteCount(size))
00283 #define __bytecap_x_impl(size)      _SA_annotes1(SAL_writableTo,inexpressibleCount(#size))
00284 #define __cap_impl(size)            _SA_annotes1(SAL_writableTo,elementCount(size))
00285 #define __cap_c_impl(size)          _SA_annotes1(SAL_writableTo,elementCount(size))
00286 #define __cap_c_one_notref_impl     _Notref_ __cap_c_impl(1)
00287 #define __cap_for_impl(param)       _SA_annotes1(SAL_writableTo,inexpressibleCount(sizeof(param)))
00288 #define __cap_x_impl(size)          _SA_annotes1(SAL_writableTo,inexpressibleCount(#size))
00289 #define __bytecount_impl(size)      _SA_annotes1(SAL_readableTo,byteCount(size))
00290 #define __bytecount_c_impl(size)    _SA_annotes1(SAL_readableTo,byteCount(size))
00291 #define __bytecount_x_impl(size)    _SA_annotes1(SAL_readableTo,inexpressibleCount(#size))
00292 #define __count_impl(size)          _SA_annotes1(SAL_readableTo,elementCount(size))
00293 #define __count_c_impl(size)        _SA_annotes1(SAL_readableTo,elementCount(size))
00294 #define __count_x_impl(size)        _SA_annotes1(SAL_readableTo,inexpressibleCount(#size))
00295 #define __zterm_impl                _SA_annotes1(SAL_nullTerminated, __yes)
00296 #define __notzterm_impl             _SA_annotes1(SAL_nullTerminated, __no)
00297 #define __maybezterm_impl           _SA_annotes1(SAL_nullTerminated, __maybe)
00298 #define __mult_impl(mult,size)      _SA_annotes1(SAL_writableTo,(mult)*(size))
00299 
00300 #endif
00301 
00302 /* Common internal */
00303 #define _SA_Bound_                  _SA_annotes0(SAL_bound)
00304 #define _SA_Deref_                  _SA_annotes0(SAL_deref)
00305 #define _SA_Satisfies_(cond)        _SA_annotes1(SAL_satisfies, cond)
00306 #if (_MSC_VER >= 1600)
00307 #define _SA_Must_inspect_           _Post_ _SA_annotes0(SAL_mustInspect)
00308 #else
00309 #define _SA_Must_inspect_
00310 #endif
00311 #define _Old_(x)                    x
00312 #define __AuToQuOtE                 _SA_annotes0(SAL_AuToQuOtE)
00313 
00314 /******************************************************************************
00315  *                              Public macros                                 *
00316  ******************************************************************************/
00317 
00318 #if _USE_ATTRIBUTES_FOR_SAL
00319 
00320 #define _Check_return_                  [returnvalue:SA_Post(MustCheck=SA_Yes)]
00321 #define _Deref_in_bound_                [SA_PreBound(Deref=1)]
00322 #define _Deref_out_bound_               [SA_PostBound(Deref=1)]
00323 #define _Deref_in_range_(min,max)       [SA_PreRange(Deref=1,MinVal=#min,MaxVal=#max)]
00324 #define _Deref_out_range_(min,max)      [SA_PostRange(Deref=1,MinVal=#min,MaxVal=#max)]
00325 #define _Deref_ret_bound_               [returnvalue:SA_PostBound(Deref=1)]
00326 #define _Deref_ret_range_(min,max)      [returnvalue:SA_PostRange(Deref=1,MinVal=#min,MaxVal=#max)]
00327 #define _In_bound_                      [SA_PreBound(Deref=0)]
00328 #define _In_range_(min,max)             [SA_PreRange(MinVal=#min,MaxVal=#max)]
00329 #define _Out_bound_                     [SA_PostBound(Deref=0)]
00330 #define _Out_range_(min,max)            [SA_PostRange(MinVal=#min,MaxVal=#max)]
00331 #define _Printf_format_string_          [SA_FormatString(Style="printf")]
00332 #define _Scanf_format_string_           [SA_FormatString(Style="scanf")]
00333 #define _Scanf_s_format_string_         [SA_FormatString(Style="scanf_s")]
00334 #define _Ret_bound_                     [returnvalue:SA_PostBound(Deref=0)]
00335 #define _Ret_range_(min,max)            [returnvalue:SA_PostRange(MinVal=#min,MaxVal=#max)]
00336 #define _Use_decl_annotations_          _SA_annotes0(SAL_useHeader)
00337 #define __inner_exceptthat              [SAL_except]
00338 #define __inner_typefix(ctype)          [SAL_typefix(p1=_SA_SPECSTRIZE(ctype))]
00339 
00340 #elif _USE_DECLSPECS_FOR_SAL
00341 
00342 #define _Check_return_                  _Post_ __declspec("SAL_checkReturn")
00343 #define _Deref_in_bound_                _SA_Deref_pre_ _SA_Bound_
00344 #define _Deref_out_bound_               _SA_Deref_post_ _SA_Bound_
00345 #define _Deref_in_range_(min,max)       _SA_Deref_pre_ _Field_range_(min,max)
00346 #define _Deref_out_range_(min,max)      _SA_Deref_post_ _Field_range_(min,max)
00347 #define _Deref_ret_bound_               _SA_Deref_post_ _SA_Bound_
00348 #define _Deref_ret_range_(min,max)      _SA_Deref_post_ _Field_range_(min,max)
00349 #define _In_bound_                      _Pre_ _SA_Bound_
00350 #define _In_range_(min,max)             _Pre_ _Field_range_(min,max)
00351 #define _Out_bound_                     _Post_ _SA_Bound_
00352 #define _Out_range_(min,max)            _Post_ _Field_range_(min,max)
00353 #define _Printf_format_string_          _SA_annotes1(SAL_IsFormatString, "printf")
00354 #define _Scanf_format_string_           _SA_annotes1(SAL_IsFormatString, "scanf")
00355 #define _Scanf_s_format_string_         _SA_annotes1(SAL_IsFormatString, "scanf_s")
00356 #define _Ret_bound_                     _Post_ _SA_Bound_
00357 #define _Ret_range_(min,max)            _Post_ _Field_range_(min,max)
00358 #define _Use_decl_annotations_ _        _declspec("SAL_useHeader()")
00359 #define __inner_exceptthat              _SA_annotes0(SAL_except)
00360 #define __inner_typefix(ctype)          _SA_annotes1(SAL_typefix, ctype)
00361 
00362 #endif
00363 
00364 #define _Post_                          _SA_annotes0(SAL_post)
00365 #define _Pre_                           _SA_annotes0(SAL_pre)
00366 #ifdef __cplusplus
00367 #define _Notref_                        _SA_annotes0(SAL_notref)
00368 #else
00369 #define _Notref_
00370 #endif
00371 #define _Null_                          _SA_annotes1(SAL_null, __yes)
00372 #define _Notnull_                       _SA_annotes1(SAL_null, __no)
00373 #define _Maybenull_                     __inner_exceptthat _SA_annotes1(SAL_null, __maybe)
00374 #define _Valid_                         _SA_annotes1(SAL_valid, __yes)
00375 #define _Notvalid_                      _SA_annotes1(SAL_valid, __no)
00376 #define _Maybevalid_                    _SA_annotes1(SAL_valid, __maybe)
00377 #define _Const_                         _SA_Pre1_(__readaccess_impl_notref)
00378 #define _Literal_                       _Pre_ _SA_annotes1(SAL_constant, __yes)
00379 #define _Notliteral_                    _Pre_ _SA_annotes1(SAL_constant, __no)
00380 #define _Null_terminated_               _SA_annotes1(SAL_nullTerminated, __yes)
00381 #define _NullNull_terminated_           _Group_(_SA_annotes1(SAL_nullTerminated, __yes) _SA_annotes1(SAL_readableTo,inexpressibleCount("NullNull terminated string")))
00382 #define _Field_range_(min,max)          _SA_annotes2(SAL_range, min, max)
00383 #define _Readable_bytes_(size)          _SA_annotes1(SAL_readableTo, byteCount(size))
00384 #define _Readable_elements_(size)       _SA_annotes1(SAL_readableTo, elementCount(size))
00385 #define _Writable_bytes_(size)          _SA_annotes1(SAL_writableTo, byteCount(size))
00386 #define _Writable_elements_(size)       _SA_annotes1(SAL_writableTo, elementCount(size))
00387 #define _Success_(expr)                 _SA_annotes1(SAL_success, expr)
00388 #define _When_(expr, annos)             _SA_annotes0(SAL_when(expr)) _Group_(annos)
00389 #define _Group_(annos)                  _SA_annotes0(SAL_begin) annos _SA_annotes0(SAL_end)
00390 #define _On_failure_(annos)             _SA_annotes1(SAL_context, SAL_failed) _Group_(_Post_ _Group_(annos))
00391 #define _At_(target, annos)             _SA_annotes0(SAL_at(target)) _Group_(annos)
00392 #define _At_buffer_(t, i, b, a)         _SA_annotes3(SAL_at_buffer, t, i, b) _Group_(a)
00393 #define _Must_inspect_result_           _SA_Must_inspect_ _Check_return_
00394 #define _Always_(annos)                 _Group_(annos) _On_failure_(annos)
00395 
00396 #if (_MSC_VER >= 1600)
00397 #define _Points_to_data_                _Pre_ _At_(*_Curr_, _SA_annotes1(SAL_mayBePointer, __no))
00398 #else
00399 // FIXME
00400 #define _Points_to_data_
00401 #endif
00402 
00403 #define _Return_type_success_(expr)     _Success_(expr)
00404 #define _Struct_size_bytes_(size)       _Writable_bytes_(size)
00405 #define _Unchanged_(e)                  _At_(e, _Post_equal_to_(_Old_(e)) _Const_)
00406 #define _Analysis_noreturn_             _SA_annotes0(SAL_terminates)
00407 #define _Function_class_(x)             _SA_annotes1(SAL_functionClassNew, #x)
00408 #define _Raises_SEH_exception_          _Group_(_Pre_ _SA_annotes1(SAL_inTry,__yes) _Analysis_noreturn_)
00409 #define _Maybe_raises_SEH_exception_    _Pre_ _SA_annotes1(SAL_inTry,__yes)
00410 #define _Interlocked_operand_           _Pre_ _SA_annotes0(SAL_interlocked)
00411 
00412 #define _Field_size_(size)              _Notnull_ _Writable_elements_(size)
00413 #define _Field_size_bytes_(size)        _Notnull_ _Writable_bytes_(size)
00414 #define _Field_size_bytes_full_(sz)     _Field_size_bytes_part_(sz, sz)
00415 #define _Field_size_bytes_full_opt_(sz) _Field_size_bytes_part_opt_(sz, sz)
00416 #define _Field_size_bytes_opt_(sz)      _Writable_bytes_(sz) _Maybenull_
00417 #define _Field_size_bytes_part_(sz, c)  _Notnull_ _Writable_bytes_(sz) _Readable_bytes_(c)
00418 #define _Field_size_bytes_part_opt_(size, count) _Writable_bytes_(size) _Readable_bytes_(count) _Maybenull_
00419 #define _Field_size_full_(size)         _Field_size_part_(size, size)
00420 #define _Field_size_full_opt_(size)     _Field_size_part_opt_(size, size)
00421 #define _Field_size_opt_(size)          _Writable_elements_(size) _Maybenull_
00422 #define _Field_size_part_(size, count)  _Notnull_ _Writable_elements_(size) _Readable_elements_(count)
00423 #define _Field_size_part_opt_(sz, c)    _Writable_elements_(sz) _Readable_elements_(c) _Maybenull_
00424 #define _Field_z_                       _Null_terminated_
00425 
00426 #define _Pre_bytecap_(size)             _Pre_notnull_ _SA_Pre1_(__bytecap_impl(size))
00427 #define _Pre_bytecap_c_(size)           _Pre_notnull_ _SA_Pre1_(__bytecap_c_impl(size))
00428 #define _Pre_bytecap_x_(size)           _Pre_notnull_ _SA_Pre1_(__bytecap_x_impl(size))
00429 #define _Pre_bytecount_(size)           _Pre_notnull_ _SA_Pre1_(__bytecount_impl(size)) _SA_Pre1_(__valid_impl)
00430 #define _Pre_bytecount_c_(size)         _Pre_notnull_ _SA_Pre1_(__bytecount_c_impl(size)) _SA_Pre1_(__valid_impl)
00431 #define _Pre_bytecount_x_(size)         _Pre_notnull_ _SA_Pre1_(__bytecount_x_impl(size)) _SA_Pre1_(__valid_impl)
00432 #define _Pre_cap_(size)                 _Pre_notnull_ _SA_Pre1_(__cap_impl(size))
00433 #define _Pre_cap_c_(size)               _Pre_notnull_ _SA_Pre1_(__cap_c_impl(size))
00434 #define _Pre_cap_c_one_                 _Pre_notnull_ _SA_Pre1_(__cap_c_one_notref_impl)
00435 #define _Pre_cap_for_(param)            _Pre_notnull_ _SA_Pre1_(__cap_for_impl(param))
00436 #define _Pre_cap_m_(mult,size)          _Pre_notnull_ _SA_Pre1_(__mult_impl(mult,size))
00437 #define _Pre_cap_x_(size)               _Pre_notnull_ _SA_Pre1_(__cap_x_impl(size))
00438 #define _Pre_count_(size)               _Pre_notnull_ _SA_Pre1_(__count_impl(size)) _SA_Pre1_(__valid_impl)
00439 #define _Pre_count_c_(size)             _Pre_notnull_ _SA_Pre1_(__count_c_impl(size)) _SA_Pre1_(__valid_impl)
00440 #define _Pre_count_x_(size)             _Pre_notnull_ _SA_Pre1_(__count_x_impl(size)) _SA_Pre1_(__valid_impl)
00441 #define _Pre_defensive_                 _SA_annotes0(SAL_pre_defensive)
00442 #define _Pre_equal_to_(expr)            _In_range_(==, expr)
00443 #define _Pre_invalid_                   _SA_Deref_pre1_(__notvalid_impl) // note: this is appied to the memory referenced by the parameter! Same as _Deref_pre_invalid_
00444 #define _Pre_maybenull_                 _SA_Pre1_(__maybenull_impl_notref)
00445 #define _Pre_notnull_                   _SA_Pre1_(__notnull_impl_notref)
00446 #define _Pre_null_                      _SA_Pre1_(__null_impl_notref)
00447 #define _Pre_opt_bytecap_(size)         _SA_Pre1_(__bytecap_impl(size)) _Pre_maybenull_
00448 #define _Pre_opt_bytecap_c_(size)       _SA_Pre1_(__bytecap_c_impl(size)) _Pre_maybenull_
00449 #define _Pre_opt_bytecap_x_(size)       _SA_Pre1_(__bytecap_x_impl(size)) _Pre_maybenull_
00450 #define _Pre_opt_bytecount_(size)       _SA_Pre1_(__bytecount_impl(size)) _Pre_opt_valid_
00451 #define _Pre_opt_bytecount_c_(size)     _SA_Pre1_(__bytecount_c_impl(size)) _Pre_opt_valid_
00452 #define _Pre_opt_bytecount_x_(size)     _SA_Pre1_(__bytecount_x_impl(size)) _Pre_opt_valid_
00453 #define _Pre_opt_cap_(size)             _SA_Pre1_(__cap_impl(size)) _Pre_maybenull_
00454 #define _Pre_opt_cap_c_(size)           _SA_Pre1_(__cap_c_impl(size)) _Pre_maybenull_
00455 #define _Pre_opt_cap_c_one_             _SA_Pre1_(__cap_c_one_notref_impl) _Pre_maybenull_
00456 #define _Pre_opt_cap_for_(param)        _SA_Pre1_(__cap_for_impl(param)) _Pre_maybenull_
00457 #define _Pre_opt_cap_m_(mult,size)      _SA_Pre1_(__mult_impl(mult,size)) _Pre_maybenull_
00458 #define _Pre_opt_cap_x_(size)           _SA_Pre1_(__cap_x_impl(size)) _Pre_maybenull_
00459 #define _Pre_opt_count_(size)           _SA_Pre1_(__count_impl(size)) _Pre_opt_valid_
00460 #define _Pre_opt_count_c_(size)         _SA_Pre1_(__count_c_impl(size)) _Pre_opt_valid_
00461 #define _Pre_opt_count_x_(size)         _SA_Pre1_(__count_x_impl(size)) _Pre_opt_valid_
00462 #define _Pre_opt_ptrdiff_cap_(ptr)      _SA_Pre1_(__cap_x_impl(__ptrdiff(ptr)))
00463 #define _Pre_opt_ptrdiff_count_(ptr)    _SA_Pre1_(__count_x_impl(__ptrdiff(ptr))) _SA_Pre1_(__valid_impl)
00464 #define _Pre_opt_valid_                 _SA_Pre1_(__valid_impl) _Pre_maybenull_
00465 #define _Pre_opt_valid_bytecap_(size)   _SA_Pre1_(__bytecap_impl(size)) _Pre_opt_valid_
00466 #define _Pre_opt_valid_bytecap_c_(size) _SA_Pre1_(__bytecap_c_impl(size)) _Pre_opt_valid_
00467 #define _Pre_opt_valid_bytecap_x_(size) _SA_Pre1_(__bytecap_x_impl(size)) _Pre_opt_valid_
00468 #define _Pre_opt_valid_cap_(size)       _SA_Pre1_(__cap_impl(size)) _Pre_opt_valid_
00469 #define _Pre_opt_valid_cap_c_(size)     _SA_Pre1_(__cap_c_impl(size)) _Pre_opt_valid_
00470 #define _Pre_opt_valid_cap_x_(size)     _SA_Pre1_(__cap_x_impl(size)) _Pre_opt_valid_
00471 #define _Pre_opt_z_                     _SA_Pre1_(__zterm_impl) _Pre_opt_valid_
00472 #define _Pre_opt_z_bytecap_(size)       _SA_Pre2_(__zterm_impl,__bytecap_impl(size)) _Pre_opt_valid_
00473 #define _Pre_opt_z_bytecap_c_(size)     _SA_Pre2_(__zterm_impl,__bytecap_c_impl(size)) _Pre_opt_valid_
00474 #define _Pre_opt_z_bytecap_x_(size)     _SA_Pre2_(__zterm_impl,__bytecap_x_impl(size)) _Pre_opt_valid_
00475 #define _Pre_opt_z_cap_(size)           _SA_Pre2_(__zterm_impl,__cap_impl(size)) _Pre_opt_valid_
00476 #define _Pre_opt_z_cap_c_(size)         _SA_Pre2_(__zterm_impl,__cap_c_impl(size)) _Pre_opt_valid_
00477 #define _Pre_opt_z_cap_x_(size)         _SA_Pre2_(__zterm_impl,__cap_x_impl(size)) _Pre_opt_valid_
00478 #define _Pre_ptrdiff_cap_(ptr)          _Pre_notnull_ _SA_Pre1_(__cap_x_impl(__ptrdiff(ptr)))
00479 #define _Pre_ptrdiff_count_(ptr)        _Pre_notnull_ _SA_Pre1_(__count_x_impl(__ptrdiff(ptr))) _SA_Pre1_(__valid_impl)
00480 #define _Pre_readable_byte_size_(size)  _SA_Pre1_(__bytecount_impl(size)) _SA_Pre1_(__valid_impl)
00481 #define _Pre_readable_size_(size)       _SA_Pre1_(__count_impl(size)) _SA_Pre1_(__valid_impl)
00482 #define _Pre_readonly_                  _SA_Pre1_(__readaccess_impl_notref)
00483 #define _Pre_satisfies_(cond)           _Pre_ _SA_Satisfies_(cond)
00484 #define _Pre_valid_                     _Pre_notnull_ _SA_Pre1_(__valid_impl)
00485 #define _Pre_valid_bytecap_(size)       _Pre_notnull_ _SA_Pre1_(__bytecap_impl(size)) _SA_Pre1_(__valid_impl)
00486 #define _Pre_valid_bytecap_c_(size)     _Pre_notnull_ _SA_Pre1_(__bytecap_c_impl(size)) _SA_Pre1_(__valid_impl)
00487 #define _Pre_valid_bytecap_x_(size)     _Pre_notnull_ _SA_Pre1_(__bytecap_x_impl(size)) _SA_Pre1_(__valid_impl)
00488 #define _Pre_valid_cap_(size)           _Pre_notnull_ _SA_Pre1_(__cap_impl(size)) _SA_Pre1_(__valid_impl)
00489 #define _Pre_valid_cap_c_(size)         _Pre_notnull_ _SA_Pre1_(__cap_c_impl(size)) _SA_Pre1_(__valid_impl)
00490 #define _Pre_valid_cap_x_(size)         _Pre_notnull_ _SA_Pre1_(__cap_x_impl(size)) _SA_Pre1_(__valid_impl)
00491 #define _Pre_writable_byte_size_(size)  _SA_Pre1_(__bytecap_impl(size))
00492 #define _Pre_writable_size_(size)       _SA_Pre1_(__cap_impl(size))
00493 #define _Pre_writeonly_                 _SA_Pre1_(__writeaccess_impl_notref)
00494 #define _Pre_z_                         _Pre_notnull_ _SA_Pre1_(__zterm_impl) _SA_Pre1_(__valid_impl)
00495 #define _Pre_z_bytecap_(size)           _Pre_notnull_ _SA_Pre2_(__zterm_impl,__bytecap_impl(size)) _SA_Pre1_(__valid_impl)
00496 #define _Pre_z_bytecap_c_(size)         _Pre_notnull_ _SA_Pre2_(__zterm_impl,__bytecap_c_impl(size)) _SA_Pre1_(__valid_impl)
00497 #define _Pre_z_bytecap_x_(size)         _Pre_notnull_ _SA_Pre2_(__zterm_impl,__bytecap_x_impl(size)) _SA_Pre1_(__valid_impl)
00498 #define _Pre_z_cap_(size)               _Pre_notnull_ _SA_Pre2_(__zterm_impl,__cap_impl(size)) _SA_Pre1_(__valid_impl)
00499 #define _Pre_z_cap_c_(size)             _Pre_notnull_ _SA_Pre2_(__zterm_impl,__cap_c_impl(size)) _SA_Pre1_(__valid_impl)
00500 #define _Pre_z_cap_x_(size)             _Pre_notnull_ _SA_Pre2_(__zterm_impl,__cap_x_impl(size)) _SA_Pre1_(__valid_impl)
00501 
00502 #define _Post_bytecap_(size)            _SA_Post1_(__bytecap_impl(size))
00503 #define _Post_bytecount_(size)          _SA_Post1_(__bytecount_impl(size)) _Post_valid_
00504 #define _Post_bytecount_c_(size)        _SA_Post1_(__bytecount_c_impl(size)) _Post_valid_
00505 #define _Post_bytecount_x_(size)        _SA_Post1_(__bytecount_x_impl(size)) _Post_valid_
00506 #define _Post_cap_(size)                _SA_Post1_(__cap_impl(size))
00507 #define _Post_count_(size)              _SA_Post1_(__count_impl(size)) _Post_valid_
00508 #define _Post_count_c_(size)            _SA_Post1_(__count_c_impl(size)) _Post_valid_
00509 #define _Post_count_x_(size)            _SA_Post1_(__count_x_impl(size)) _Post_valid_
00510 #define _Post_defensive_                _SA_annotes0(SAL_post_defensive)
00511 #define _Post_equal_to_(expr)           _Out_range_(==, expr)
00512 #define _Post_invalid_                  _SA_Deref_post1_(__notvalid_impl) // note: implicitly dereferenced!
00513 #define _Post_maybenull_                _SA_Post1_(__maybenull_impl_notref)
00514 #define _Post_maybez_                   _SA_Post1_(__maybzterm_impl)
00515 #define _Post_notnull_                  _SA_Post1_(__notnull_impl_notref)
00516 #define _Post_null_                     _SA_Post1_(__null_impl_notref)
00517 #define _Post_ptr_invalid_              _SA_Post1_(__notvalid_impl)
00518 #define _Post_readable_byte_size_(size) _SA_Post1_(__bytecount_impl(size)) _Post_valid_
00519 #define _Post_readable_size_(size)      _SA_Post1_(__count_impl(size)) _Post_valid_
00520 #define _Post_satisfies_(cond)          _Post_ _SA_Satisfies_(cond)
00521 #define _Post_valid_                    _SA_Post1_(__valid_impl)
00522 #define _Post_writable_byte_size_(size) _SA_Post1_(__bytecap_impl(size))
00523 #define _Post_writable_size_(size)      _SA_Post1_(__cap_impl(size))
00524 #define _Post_z_                        _SA_Post1_(__zterm_impl) _Post_valid_
00525 #define _Post_z_bytecount_(size)        _SA_Post2_(__zterm_impl,__bytecount_impl(size)) _Post_valid_
00526 #define _Post_z_bytecount_c_(size)      _SA_Post2_(__zterm_impl,__bytecount_c_impl(size)) _Post_valid_
00527 #define _Post_z_bytecount_x_(size)      _SA_Post2_(__zterm_impl,__bytecount_x_impl(size)) _Post_valid_
00528 #define _Post_z_count_(size)            _SA_Post2_(__zterm_impl,__count_impl(size)) _Post_valid_
00529 #define _Post_z_count_c_(size)          _SA_Post2_(__zterm_impl,__count_c_impl(size)) _Post_valid_
00530 #define _Post_z_count_x_(size)          _SA_Post2_(__zterm_impl,__count_x_impl(size)) _Post_valid_
00531 
00532 #define _Prepost_bytecount_(size)       _Pre_bytecount_(size) _Post_bytecount_(size)
00533 #define _Prepost_bytecount_c_(size)     _Pre_bytecount_c_(size) _Post_bytecount_c_(size)
00534 #define _Prepost_bytecount_x_(size)     _Pre_bytecount_x_(size) _Post_bytecount_x_(size)
00535 #define _Prepost_count_(size)           _Pre_count_(size) _Post_count_(size)
00536 #define _Prepost_count_c_(size)         _Pre_count_c_(size) _Post_count_c_(size)
00537 #define _Prepost_count_x_(size)         _Pre_count_x_(size) _Post_count_x_(size)
00538 #define _Prepost_opt_bytecount_(size)   _Post_bytecount_(size) _Pre_opt_bytecount_(size)
00539 #define _Prepost_opt_bytecount_c_(size) _Post_bytecount_c_(size) _Pre_opt_bytecount_c_(size)
00540 #define _Prepost_opt_bytecount_x_(size) _Post_bytecount_x_(size) _Pre_opt_bytecount_x_(size)
00541 #define _Prepost_opt_count_(size)       _Post_count_(size) _Pre_opt_count_(size)
00542 #define _Prepost_opt_count_c_(size)     _Post_count_c_(size) _Pre_opt_count_c_(size)
00543 #define _Prepost_opt_count_x_(size)     _Post_count_x_(size) _Pre_opt_count_x_(size)
00544 #define _Prepost_opt_valid_             _Post_valid_ _Pre_opt_valid_
00545 #define _Prepost_opt_z_                 _Post_z_ _Pre_opt_z_
00546 #define _Prepost_valid_                 _Pre_valid_ _Post_valid_
00547 #define _Prepost_z_                     _Pre_z_ _Post_z_
00548 
00549 #define _Deref_pre_bytecap_(size)       _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecap_impl(size))
00550 #define _Deref_pre_bytecap_c_(size)     _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecap_c_impl(size))
00551 #define _Deref_pre_bytecap_x_(size)     _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecap_x_impl(size))
00552 #define _Deref_pre_bytecount_(size)     _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecount_impl(size)) _SA_Pre1_(__valid_impl)
00553 #define _Deref_pre_bytecount_c_(size)   _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecount_c_impl(size)) _SA_Pre1_(__valid_impl)
00554 #define _Deref_pre_bytecount_x_(size)   _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecount_x_impl(size)) _SA_Pre1_(__valid_impl)
00555 #define _Deref_pre_cap_(size)           _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__cap_impl(size))
00556 #define _Deref_pre_cap_c_(size)         _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__cap_c_impl(size))
00557 #define _Deref_pre_cap_x_(size)         _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__cap_x_impl(size))
00558 #define _Deref_pre_count_(size)         _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__count_impl(size)) _SA_Pre1_(__valid_impl)
00559 #define _Deref_pre_count_c_(size)       _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__count_c_impl(size)) _SA_Pre1_(__valid_impl)
00560 #define _Deref_pre_count_x_(size)       _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__count_x_impl(size)) _SA_Pre1_(__valid_impl)
00561 #define _Deref_pre_invalid_             _SA_Deref_pre1_(__notvalid_impl)
00562 #define _Deref_pre_maybenull_           _SA_Deref_pre1_(__maybenull_impl_notref)
00563 #define _Deref_pre_notnull_             _SA_Deref_pre1_(__notnull_impl_notref)
00564 #define _Deref_pre_null_                _SA_Deref_pre1_(__null_impl_notref)
00565 #define _Deref_pre_opt_bytecap_(size)   _SA_Deref_pre1_(__bytecap_impl(size)) _Deref_pre_maybenull_
00566 #define _Deref_pre_opt_bytecap_c_(size) _SA_Deref_pre1_(__bytecap_c_impl(size)) _Deref_pre_maybenull_
00567 #define _Deref_pre_opt_bytecap_x_(size) _SA_Deref_pre1_(__bytecap_x_impl(size)) _Deref_pre_maybenull_
00568 #define _Deref_pre_opt_bytecount_(size) _SA_Deref_pre1_(__bytecount_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00569 #define _Deref_pre_opt_bytecount_c_(size) _SA_Deref_pre1_(__bytecount_c_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00570 #define _Deref_pre_opt_bytecount_x_(size) _SA_Deref_pre1_(__bytecount_x_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00571 #define _Deref_pre_opt_cap_(size)       _SA_Deref_pre1_(__cap_impl(size)) _Deref_pre_maybenull_
00572 #define _Deref_pre_opt_cap_c_(size)     _SA_Deref_pre1_(__cap_c_impl(size)) _Deref_pre_maybenull_
00573 #define _Deref_pre_opt_cap_x_(size)     _SA_Deref_pre1_(__cap_x_impl(size)) _Deref_pre_maybenull_
00574 #define _Deref_pre_opt_count_(size)     _SA_Deref_pre1_(__count_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00575 #define _Deref_pre_opt_count_c_(size)   _SA_Deref_pre1_(__count_c_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00576 #define _Deref_pre_opt_count_x_(size)   _SA_Deref_pre1_(__count_x_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00577 #define _Deref_pre_opt_valid_           _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00578 #define _Deref_pre_opt_valid_bytecap_(size) _SA_Deref_pre1_(__bytecap_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00579 #define _Deref_pre_opt_valid_bytecap_c_(size) _SA_Deref_pre1_(__bytecap_c_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00580 #define _Deref_pre_opt_valid_bytecap_x_(size) _SA_Deref_pre1_(__bytecap_x_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00581 #define _Deref_pre_opt_valid_cap_(size) _SA_Deref_pre1_(__cap_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00582 #define _Deref_pre_opt_valid_cap_c_(size) _SA_Deref_pre1_(__cap_c_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00583 #define _Deref_pre_opt_valid_cap_x_(size) _SA_Deref_pre1_(__cap_x_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00584 #define _Deref_pre_opt_z_               _SA_Deref_pre1_(__zterm_impl) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00585 #define _Deref_pre_opt_z_bytecap_(size) _SA_Deref_pre2_(__zterm_impl,__bytecap_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00586 #define _Deref_pre_opt_z_bytecap_c_(size) _SA_Deref_pre2_(__zterm_impl,__bytecap_c_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00587 #define _Deref_pre_opt_z_bytecap_x_(size) _SA_Deref_pre2_(__zterm_impl,__bytecap_x_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00588 #define _Deref_pre_opt_z_cap_(size)     _SA_Deref_pre2_(__zterm_impl,__cap_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00589 #define _Deref_pre_opt_z_cap_c_(size)   _SA_Deref_pre2_(__zterm_impl,__cap_c_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00590 #define _Deref_pre_opt_z_cap_x_(size)   _SA_Deref_pre2_(__zterm_impl,__cap_x_impl(size)) _SA_Pre1_(__valid_impl) _Deref_pre_maybenull_
00591 #define _Deref_pre_readonly_            _SA_Deref_pre1_(__readaccess_impl_notref)
00592 #define _Deref_pre_valid_               _SA_Deref_pre1_(__notnull_impl_notref) _SA_Pre1_(__valid_impl)
00593 #define _Deref_pre_valid_bytecap_(size) _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecap_impl(size)) _SA_Pre1_(__valid_impl)
00594 #define _Deref_pre_valid_bytecap_c_(size) _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecap_c_impl(size)) _SA_Pre1_(__valid_impl)
00595 #define _Deref_pre_valid_bytecap_x_(size) _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__bytecap_x_impl(size)) _SA_Pre1_(__valid_impl)
00596 #define _Deref_pre_valid_cap_(size)     _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__cap_impl(size)) _SA_Pre1_(__valid_impl)
00597 #define _Deref_pre_valid_cap_c_(size)   _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__cap_c_impl(size)) _SA_Pre1_(__valid_impl)
00598 #define _Deref_pre_valid_cap_x_(size)   _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__cap_x_impl(size)) _SA_Pre1_(__valid_impl)
00599 #define _Deref_pre_writeonly_           _SA_Deref_pre1_(__writeaccess_impl_notref)
00600 #define _Deref_pre_z_                   _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre1_(__zterm_impl) _SA_Pre1_(__valid_impl)
00601 #define _Deref_pre_z_bytecap_(size)     _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre2_(__zterm_impl,__bytecap_impl(size)) _SA_Pre1_(__valid_impl)
00602 #define _Deref_pre_z_bytecap_c_(size)   _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre2_(__zterm_impl,__bytecap_c_impl(size)) _SA_Pre1_(__valid_impl)
00603 #define _Deref_pre_z_bytecap_x_(size)   _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre2_(__zterm_impl,__bytecap_x_impl(size)) _SA_Pre1_(__valid_impl)
00604 #define _Deref_pre_z_cap_(size)         _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre2_(__zterm_impl,__cap_impl(size)) _SA_Pre1_(__valid_impl)
00605 #define _Deref_pre_z_cap_c_(size)       _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre2_(__zterm_impl,__cap_c_impl(size)) _SA_Pre1_(__valid_impl)
00606 #define _Deref_pre_z_cap_x_(size)       _SA_Deref_pre1_(__notnull_impl_notref) _SA_Deref_pre2_(__zterm_impl,__cap_x_impl(size)) _SA_Pre1_(__valid_impl)
00607 #define _Deref2_pre_readonly_           _SA_Deref2_pre1_(__readaccess_impl_notref)
00608 
00609 #define _Deref_post_valid_              _Pre_notnull_ _When_(1 == 1, _SA_Deref_pre1_(__maybevalid_impl)) _SA_Deref_post1_(__valid_impl)
00610 //#define _Deref_post_valid_              _Deref_post_notnull_ _Post_valid_ // <- ms implementaton
00611 #define _Deref_post_bytecap_(size)      _Deref_post_notnull_ _SA_Deref_post1_(__bytecap_impl(size))
00612 #define _Deref_post_bytecap_c_(sz)      _Deref_post_notnull_ _SA_Deref_post1_(__bytecap_c_impl(sz))
00613 #define _Deref_post_bytecap_x_(sz)      _Deref_post_notnull_ _SA_Deref_post1_(__bytecap_x_impl(sz))
00614 #define _Deref_post_bytecount_(sz)      _Deref_post_notnull_ _SA_Deref_post1_(__bytecount_impl(sz)) _Post_valid_
00615 #define _Deref_post_bytecount_c_(size)  _Deref_post_notnull_ _SA_Deref_post1_(__bytecount_c_impl(size)) _Post_valid_
00616 #define _Deref_post_bytecount_x_(size)  _Deref_post_notnull_ _SA_Deref_post1_(__bytecount_x_impl(size)) _Post_valid_
00617 #define _Deref_post_cap_(size)          _Deref_post_notnull_ _SA_Deref_post1_(__cap_impl(size))
00618 #define _Deref_post_cap_c_(size)        _Deref_post_notnull_ _SA_Deref_post1_(__cap_c_impl(size))
00619 #define _Deref_post_cap_x_(size)        _Deref_post_notnull_ _SA_Deref_post1_(__cap_x_impl(size))
00620 #define _Deref_post_count_(size)        _Deref_post_notnull_ _SA_Deref_post1_(__count_impl(size)) _Post_valid_
00621 #define _Deref_post_count_c_(size)      _Deref_post_notnull_ _SA_Deref_post1_(__count_c_impl(size)) _Post_valid_
00622 #define _Deref_post_count_x_(size)      _Deref_post_notnull_ _SA_Deref_post1_(__count_x_impl(size)) _Post_valid_
00623 #define _Deref_post_maybenull_          _SA_Deref_post1_(__maybenull_impl_notref)
00624 #define _Deref_post_notnull_            _SA_Deref_post1_(__notnull_impl_notref)
00625 #define _Deref_post_null_               _SA_Deref_post1_(__null_impl_notref)
00626 #define _Deref_post_opt_bytecap_(size)  _SA_Deref_post1_(__bytecap_impl(size)) _Deref_post_maybenull_
00627 #define _Deref_post_opt_bytecap_c_(sz)  _SA_Deref_post1_(__bytecap_c_impl(sz)) _Deref_post_maybenull_
00628 #define _Deref_post_opt_bytecap_x_(sz)  _SA_Deref_post1_(__bytecap_x_impl(sz)) _Deref_post_maybenull_
00629 #define _Deref_post_opt_bytecount_(sz)  _SA_Deref_post1_(__bytecount_impl(sz)) _Post_valid_ _Deref_post_maybenull_
00630 #define _Deref_post_opt_bytecount_c_(size) _SA_Deref_post1_(__bytecount_c_impl(size)) _Post_valid_ _Deref_post_maybenull_
00631 #define _Deref_post_opt_bytecount_x_(size) _SA_Deref_post1_(__bytecount_x_impl(size)) _Post_valid_ _Deref_post_maybenull_
00632 #define _Deref_post_opt_cap_(size)      _SA_Deref_post1_(__cap_impl(size)) _Deref_post_maybenull_
00633 #define _Deref_post_opt_cap_c_(size)    _SA_Deref_post1_(__cap_c_impl(size)) _Deref_post_maybenull_
00634 #define _Deref_post_opt_cap_x_(size)    _SA_Deref_post1_(__cap_x_impl(size)) _Deref_post_maybenull_
00635 #define _Deref_post_opt_count_(size)    _SA_Deref_post1_(__count_impl(size)) _Post_valid_ _Deref_post_maybenull_
00636 #define _Deref_post_opt_count_c_(size)  _SA_Deref_post1_(__count_c_impl(size)) _Post_valid_ _Deref_post_maybenull_
00637 #define _Deref_post_opt_count_x_(size)  _SA_Deref_post1_(__count_x_impl(size)) _Post_valid_ _Deref_post_maybenull_
00638 #define _Deref_post_opt_valid_          _Post_valid_ _Deref_post_maybenull_
00639 #define _Deref_post_opt_valid_bytecap_(size) _SA_Deref_post1_(__bytecap_impl(size)) _Post_valid_ _Deref_post_maybenull_
00640 #define _Deref_post_opt_valid_bytecap_c_(size) _SA_Deref_post1_(__bytecap_c_impl(size)) _Post_valid_ _Deref_post_maybenull_
00641 #define _Deref_post_opt_valid_bytecap_x_(size) _SA_Deref_post1_(__bytecap_x_impl(size)) _Post_valid_ _Deref_post_maybenull_
00642 #define _Deref_post_opt_valid_cap_(size) _SA_Deref_post1_(__cap_impl(size)) _Post_valid_ _Deref_post_maybenull_
00643 #define _Deref_post_opt_valid_cap_c_(size) _SA_Deref_post1_(__cap_c_impl(size)) _Post_valid_ _Deref_post_maybenull_
00644 #define _Deref_post_opt_valid_cap_x_(size) _SA_Deref_post1_(__cap_x_impl(size)) _Post_valid_ _Deref_post_maybenull_
00645 #define _Deref_post_opt_z_              _SA_Deref_post1_(__zterm_impl) _Post_valid_ _Deref_post_maybenull_
00646 #define _Deref_post_opt_z_bytecap_(size) _SA_Deref_post2_(__zterm_impl,__bytecap_impl(size)) _Post_valid_ _Deref_post_maybenull_
00647 #define _Deref_post_opt_z_bytecap_c_(size) _SA_Deref_post2_(__zterm_impl,__bytecap_c_impl(size)) _Post_valid_ _Deref_post_maybenull_
00648 #define _Deref_post_opt_z_bytecap_x_(size) _SA_Deref_post2_(__zterm_impl,__bytecap_x_impl(size)) _Post_valid_ _Deref_post_maybenull_
00649 #define _Deref_post_opt_z_cap_(size) _SA_Deref_post2_(__zterm_impl,__cap_impl(size)) _Post_valid_ _Deref_post_maybenull_
00650 #define _Deref_post_opt_z_cap_c_(size)  _SA_Deref_post2_(__zterm_impl,__cap_c_impl(size)) _Post_valid_ _Deref_post_maybenull_
00651 #define _Deref_post_opt_z_cap_x_(size)  _SA_Deref_post2_(__zterm_impl,__cap_x_impl(size)) _Post_valid_ _Deref_post_maybenull_
00652 #define _Deref_post_valid_              _Deref_post_notnull_ _Post_valid_
00653 #define _Deref_post_valid_bytecap_(size) _Deref_post_valid_ _SA_Deref_post1_(__bytecap_impl(size))
00654 #define _Deref_post_valid_bytecap_c_(size) _Deref_post_valid_ _SA_Deref_post1_(__bytecap_c_impl(size))
00655 #define _Deref_post_valid_bytecap_x_(size) _Deref_post_valid_ _SA_Deref_post1_(__bytecap_x_impl(size))
00656 #define _Deref_post_valid_cap_(size)    _Deref_post_valid_ _SA_Deref_post1_(__cap_impl(size))
00657 #define _Deref_post_valid_cap_c_(size)  _Deref_post_valid_ _SA_Deref_post1_(__cap_c_impl(size))
00658 #define _Deref_post_valid_cap_x_(size)  _Deref_post_valid_ _SA_Deref_post1_(__cap_x_impl(size))
00659 #define _Deref_post_z_                  _Deref_post_valid_ _SA_Deref_post1_(__zterm_impl)
00660 #define _Deref_post_z_bytecap_(size)    _Deref_post_valid_ _SA_Deref_post2_(__zterm_impl,__bytecap_impl(size))
00661 #define _Deref_post_z_bytecap_c_(size)  _Deref_post_valid_ _SA_Deref_post2_(__zterm_impl,__bytecap_c_impl(size))
00662 #define _Deref_post_z_bytecap_x_(size)  _Deref_post_valid_ _SA_Deref_post2_(__zterm_impl,__bytecap_x_impl(size))
00663 #define _Deref_post_z_cap_(size)        _Deref_post_valid_ _SA_Deref_post2_(__zterm_impl,__cap_impl(size))
00664 #define _Deref_post_z_cap_c_(size)      _Deref_post_valid_ _SA_Deref_post2_(__zterm_impl,__cap_c_impl(size))
00665 #define _Deref_post_z_cap_x_(size)      _Deref_post_valid_ _SA_Deref_post2_(__zterm_impl,__cap_x_impl(size))
00666 
00667 #define _Deref_prepost_bytecap_(size)   _Deref_pre_bytecap_(size) _Deref_post_bytecap_(size)
00668 #define _Deref_prepost_bytecap_x_(size) _Deref_pre_bytecap_x_(size) _Deref_post_bytecap_x_(size)
00669 #define _Deref_prepost_bytecount_(size) _Deref_pre_bytecount_(size) _Deref_post_bytecount_(size)
00670 #define _Deref_prepost_bytecount_x_(size) _Deref_pre_bytecount_x_(size) _Deref_post_bytecount_x_(size)
00671 #define _Deref_prepost_cap_(size)       _Deref_pre_cap_(size) _Deref_post_cap_(size)
00672 #define _Deref_prepost_cap_x_(size)     _Deref_pre_cap_x_(size) _Deref_post_cap_x_(size)
00673 #define _Deref_prepost_count_(size)     _Deref_pre_count_(size) _Deref_post_count_(size)
00674 #define _Deref_prepost_count_x_(size)   _Deref_pre_count_x_(size) _Deref_post_count_x_(size)
00675 #define _Deref_prepost_opt_bytecap_(size) _Deref_pre_opt_bytecap_(size) _Deref_post_opt_bytecap_(size)
00676 #define _Deref_prepost_opt_bytecap_x_(size) _Deref_pre_opt_bytecap_x_(size) _Deref_post_opt_bytecap_x_(size)
00677 #define _Deref_prepost_opt_bytecount_(size) _Deref_pre_opt_bytecount_(size) _Deref_post_opt_bytecount_(size)
00678 #define _Deref_prepost_opt_bytecount_x_(size) _Deref_pre_opt_bytecount_x_(size) _Deref_post_opt_bytecount_x_(size)
00679 #define _Deref_prepost_opt_cap_(size)   _Deref_pre_opt_cap_(size) _Deref_post_opt_cap_(size)
00680 #define _Deref_prepost_opt_cap_x_(size) _Deref_pre_opt_cap_x_(size) _Deref_post_opt_cap_x_(size)
00681 #define _Deref_prepost_opt_count_(size) _Deref_pre_opt_count_(size) _Deref_post_opt_count_(size)
00682 #define _Deref_prepost_opt_count_x_(size) _Deref_pre_opt_count_x_(size) _Deref_post_opt_count_x_(size)
00683 #define _Deref_prepost_opt_valid_       _Deref_pre_opt_valid_ _Deref_post_opt_valid_
00684 #define _Deref_prepost_opt_valid_bytecap_(size) _Deref_pre_opt_valid_bytecap_(size) _Deref_post_opt_valid_bytecap_(size)
00685 #define _Deref_prepost_opt_valid_bytecap_x_(size) _Deref_pre_opt_valid_bytecap_x_(size) _Deref_post_opt_valid_bytecap_x_(size)
00686 #define _Deref_prepost_opt_valid_cap_(size) _Deref_pre_opt_valid_cap_(size) _Deref_post_opt_valid_cap_(size)
00687 #define _Deref_prepost_opt_valid_cap_x_(size) _Deref_pre_opt_valid_cap_x_(size) _Deref_post_opt_valid_cap_x_(size)
00688 #define _Deref_prepost_opt_z_           _Deref_pre_opt_z_ _Deref_post_opt_z_
00689 #define _Deref_prepost_opt_z_bytecap_(size) _Deref_pre_opt_z_bytecap_(size) _Deref_post_opt_z_bytecap_(size)
00690 #define _Deref_prepost_opt_z_cap_(size) _Deref_pre_opt_z_cap_(size) _Deref_post_opt_z_cap_(size)
00691 #define _Deref_prepost_valid_           _Deref_pre_valid_ _Deref_post_valid_
00692 #define _Deref_prepost_valid_bytecap_(size) _Deref_pre_valid_bytecap_(size) _Deref_post_valid_bytecap_(size)
00693 #define _Deref_prepost_valid_bytecap_x_(size) _Deref_pre_valid_bytecap_x_(size) _Deref_post_valid_bytecap_x_(size)
00694 #define _Deref_prepost_valid_cap_(size) _Deref_pre_valid_cap_(size) _Deref_post_valid_cap_(size)
00695 #define _Deref_prepost_valid_cap_x_(size) _Deref_pre_valid_cap_x_(size) _Deref_post_valid_cap_x_(size)
00696 #define _Deref_prepost_z_               _Deref_pre_z_ _Deref_post_z_
00697 #define _Deref_prepost_z_bytecap_(size) _Deref_pre_z_bytecap_(size) _Deref_post_z_bytecap_(size)
00698 #define _Deref_prepost_z_cap_(size)     _Deref_pre_z_cap_(size) _Deref_post_z_cap_(size)
00699 
00700 #define _In_                            _Pre_notnull_ _Pre_valid_ _Deref_pre_readonly_
00701 #define _In_bytecount_(size)            _Pre_bytecount_(size) _Deref_pre_readonly_
00702 #define _In_bytecount_c_(size)          _Pre_bytecount_c_(size) _Deref_pre_readonly_
00703 #define _In_bytecount_x_(size)          _Pre_bytecount_x_(size) _Deref_pre_readonly_
00704 #define _In_count_(size)                _Pre_count_(size) _Deref_pre_readonly_
00705 #define _In_count_c_(size)              _Pre_count_c_(size) _Deref_pre_readonly_
00706 #define _In_count_x_(size)              _Pre_count_x_(size) _Deref_pre_readonly_
00707 #define _In_defensive_(annotes)         _Pre_defensive_ _Group_(annotes)
00708 #define _In_opt_                        _Deref_pre_readonly_ _Pre_opt_valid_
00709 #define _In_opt_bytecount_(size)        _Deref_pre_readonly_ _Pre_opt_bytecount_(size)
00710 #define _In_opt_bytecount_c_(size)      _Deref_pre_readonly_ _Pre_opt_bytecount_c_(size)
00711 #define _In_opt_bytecount_x_(size)      _Deref_pre_readonly_ _Pre_opt_bytecount_x_(size)
00712 #define _In_opt_count_(size)            _Deref_pre_readonly_ _Pre_opt_count_(size)
00713 #define _In_opt_count_c_(size)          _Deref_pre_readonly_ _Pre_opt_count_c_(size)
00714 #define _In_opt_count_x_(size)          _Deref_pre_readonly_ _Pre_opt_count_x_(size)
00715 #define _In_opt_ptrdiff_count_(size)    _Deref_pre_readonly_ _Pre_opt_ptrdiff_count_(size)
00716 #define _In_opt_z_                      _Deref_pre_readonly_ _Pre_opt_z_
00717 #define _In_opt_z_bytecount_(size)      _Deref_pre_readonly_ _Pre_opt_z_ _Pre_opt_bytecount_(size)
00718 #define _In_opt_z_bytecount_c_(size)    _Deref_pre_readonly_ _Pre_opt_z_ _Pre_opt_bytecount_c_(size)
00719 #define _In_opt_z_count_(size)          _Deref_pre_readonly_ _Pre_opt_z_ _Pre_opt_count_(size)
00720 #define _In_opt_z_count_c_(size)        _Deref_pre_readonly_ _Pre_opt_z_ _Pre_opt_count_c_(size)
00721 #define _In_ptrdiff_count_(size)        _Deref_pre_readonly_ _Pre_ptrdiff_count_(size)
00722 #define _In_reads_(size)                _Deref_pre_readonly_ _Pre_count_(size)
00723 #define _In_reads_bytes_(size)          _Deref_pre_readonly_ _Pre_bytecount_(size)
00724 #define _In_reads_bytes_opt_(size)      _Deref_pre_readonly_ _Pre_opt_bytecount_(size)
00725 #define _In_reads_opt_(size)            _Deref_pre_readonly_ _Pre_opt_count_(size)
00726 #define _In_reads_opt_z_(size)          _Deref_pre_readonly_ _Pre_opt_count_(size) _Pre_opt_z_
00727 #define _In_reads_or_z_(size)           _When_(_String_length_(_Curr_) < (size), _In_z_) _When_(_String_length_(_Curr_) >= (size), _In_reads_(size))
00728 #define _In_reads_to_ptr_(ptr)          _Deref_pre_readonly_ _Pre_ptrdiff_count_(ptr)
00729 #define _In_reads_to_ptr_opt_(ptr)      _Deref_pre_readonly_ _Pre_opt_ptrdiff_count_(ptr)
00730 #define _In_reads_to_ptr_opt_z_(ptr)    _Deref_pre_readonly_ _Pre_opt_ptrdiff_count_(ptr) _Pre_opt_z_
00731 #define _In_reads_to_ptr_z_(ptr)        _Deref_pre_readonly_ _Pre_ptrdiff_count_(ptr) _Pre_z_
00732 #define _In_reads_z_(size)              _Deref_pre_readonly_ _Pre_count_(size) _Pre_z_
00733 #define _In_z_                          _Deref_pre_readonly_ _Pre_z_
00734 #define _In_z_bytecount_(size)          _Deref_pre_readonly_ _Pre_z_ _Pre_bytecount_(size)
00735 #define _In_z_bytecount_c_(size)        _Deref_pre_readonly_ _Pre_z_ _Pre_bytecount_c_(size)
00736 #define _In_z_count_(size)              _Deref_pre_readonly_ _Pre_z_ _Pre_count_(size)
00737 #define _In_z_count_c_(size)            _Deref_pre_readonly_ _Pre_z_ _Pre_count_c_(size)
00738 
00739 #define _Out_                           _Pre_cap_c_one_ _Post_valid_ /* not in MS hdrs:  _Deref_post_maybenull_ */
00740 #define _Out_bytecap_(size)             _Pre_bytecap_(size) _Post_valid_
00741 #define _Out_bytecap_c_(size)           _Pre_bytecap_c_(size) _Post_valid_
00742 #define _Out_bytecap_post_bytecount_(cap,count) _Pre_bytecap_(cap) _Post_valid_ _Post_bytecount_(count)
00743 #define _Out_bytecap_x_(size)           _Pre_bytecap_x_(size) _Post_valid_
00744 #define _Out_bytecapcount_(capcount)    _Pre_bytecap_(capcount) _Post_valid_ _Post_bytecount_(capcount)
00745 #define _Out_bytecapcount_x_(capcount)  _Pre_bytecap_x_(capcount) _Post_valid_ _Post_bytecount_x_(capcount)
00746 #define _Out_cap_(size)                 _Pre_cap_(size) _Post_valid_
00747 #define _Out_cap_c_(size)               _Pre_cap_c_(size) _Post_valid_
00748 #define _Out_cap_m_(mult,size)          _Pre_cap_m_(mult,size) _Post_valid_
00749 #define _Out_cap_post_count_(cap,count) _Pre_cap_(cap) _Post_valid_ _Post_count_(count)
00750 #define _Out_cap_x_(size)               _Pre_cap_x_(size) _Post_valid_
00751 #define _Out_capcount_(capcount)        _Pre_cap_(capcount) _Post_valid_ _Post_count_(capcount)
00752 #define _Out_capcount_x_(capcount)      _Pre_cap_x_(capcount) _Post_valid_ _Post_count_x_(capcount)
00753 #define _Out_defensive_(annotes)        _Post_defensive_ _Group_(annotes)
00754 #define _Out_opt_                       _Post_valid_ _Pre_opt_cap_c_one_
00755 #define _Out_opt_bytecap_(size)         _Post_valid_ _Pre_opt_bytecap_(size)
00756 #define _Out_opt_bytecap_c_(size)       _Post_valid_ _Pre_opt_bytecap_c_(size)
00757 #define _Out_opt_bytecap_post_bytecount_(cap,count) _Post_valid_ _Post_bytecount_(count) _Pre_opt_bytecap_(cap)
00758 #define _Out_opt_bytecap_x_(size)       _Post_valid_ _Pre_opt_bytecap_x_(size)
00759 #define _Out_opt_bytecapcount_(capcount) _Post_valid_ _Post_bytecount_(capcount) _Pre_opt_bytecap_(capcount)
00760 #define _Out_opt_bytecapcount_x_(capcount) _Post_valid_ _Post_bytecount_x_(capcount) _Pre_opt_bytecap_x_(capcount)
00761 #define _Out_opt_cap_(size)             _Post_valid_ _Pre_opt_cap_(size)
00762 #define _Out_opt_cap_c_(size)           _Post_valid_ _Pre_opt_cap_c_(size)
00763 #define _Out_opt_cap_m_(mult,size)      _Post_valid_ _Pre_opt_cap_m_(mult,size)
00764 #define _Out_opt_cap_post_count_(cap,count) _Post_valid_ _Post_count_(count) _Pre_opt_cap_(cap)
00765 #define _Out_opt_cap_x_(size)           _Post_valid_ _Pre_opt_cap_x_(size)
00766 #define _Out_opt_capcount_(capcount)    _Post_valid_ _Post_count_(capcount) _Pre_opt_cap_(capcount)
00767 #define _Out_opt_capcount_x_(capcount)  _Post_valid_ _Post_count_x_(capcount) _Pre_opt_cap_x_(capcount)
00768 #define _Out_opt_ptrdiff_cap_(size)     _Post_valid_ _Pre_opt_ptrdiff_cap_(size)
00769 #define _Out_opt_z_bytecap_(size)       _Post_valid_ _Post_z_ _Pre_opt_bytecap_(size)
00770 #define _Out_opt_z_bytecap_c_(size)     _Post_valid_ _Post_z_ _Pre_opt_bytecap_c_(size)
00771 #define _Out_opt_z_bytecap_post_bytecount_(cap,count) _Post_valid_ _Post_z_bytecount_(count) _Pre_opt_bytecap_(cap)
00772 #define _Out_opt_z_bytecap_x_(size)     _Post_valid_ _Post_z_ _Pre_opt_bytecap_x_(size)
00773 #define _Out_opt_z_bytecapcount_(capcount) _Post_valid_ _Post_z_bytecount_(capcount) _Pre_opt_bytecap_(capcount)
00774 #define _Out_opt_z_cap_(size)           _Post_valid_ _Post_z_ _Pre_opt_cap_(size)
00775 #define _Out_opt_z_cap_c_(size)         _Post_valid_ _Post_z_ _Pre_opt_cap_c_(size)
00776 #define _Out_opt_z_cap_m_(mult,size)    _Post_valid_ _Post_z_ _Pre_opt_cap_m_(mult,size)
00777 #define _Out_opt_z_cap_post_count_(cap,count) _Post_valid_ _Post_z_count_(count) _Pre_opt_cap_(cap)
00778 #define _Out_opt_z_cap_x_(size)         _Post_valid_ _Post_z_ _Pre_opt_cap_x_(size)
00779 #define _Out_opt_z_capcount_(capcount)  _Post_valid_ _Post_z_count_(capcount) _Pre_opt_cap_(capcount)
00780 #define _Out_ptrdiff_cap_(size)         _Post_valid_ _Pre_ptrdiff_cap_(size)
00781 #define _Out_writes_(size)              _Post_valid_ _Pre_cap_(size)
00782 #define _Out_writes_all_(size)          _Out_writes_to_(_Old_(size), _Old_(size))
00783 #define _Out_writes_all_opt_(size)      _Out_writes_to_opt_(_Old_(size), _Old_(size))
00784 #define _Out_writes_bytes_(size)        _Post_valid_ _Pre_bytecap_(size)
00785 #define _Out_writes_bytes_all_(size)    _Out_writes_bytes_to_(_Old_(size), _Old_(size))
00786 #define _Out_writes_bytes_all_opt_(size) _Out_writes_bytes_to_opt_(_Old_(size), _Old_(size))
00787 #define _Out_writes_bytes_opt_(size)    _Post_valid_ _Pre_opt_bytecap_(size)
00788 #define _Out_writes_bytes_to_(size,count) _Post_valid_ _Post_bytecount_(count) _Pre_bytecap_(size)
00789 #define _Out_writes_bytes_to_opt_(size,count) _Post_valid_ _Post_bytecount_(count) _Pre_opt_bytecap_(size)
00790 #define _Out_writes_opt_(size)          _Post_valid_ _Pre_opt_cap_(size)
00791 #define _Out_writes_opt_z_(size)        _Post_valid_ _Post_z_ _Pre_opt_cap_(size)
00792 #define _Out_writes_to_(size,count)     _Post_valid_ _Post_count_(count) _Pre_cap_(size)
00793 #define _Out_writes_to_opt_(size,count) _Post_valid_ _Post_count_(count) _Pre_opt_cap_(size)
00794 #define _Out_writes_to_ptr_(ptr)        _Post_valid_ _Pre_ptrdiff_cap_(ptr)
00795 #define _Out_writes_to_ptr_opt_(ptr)    _Post_valid_ _Pre_opt_ptrdiff_cap_(ptr)
00796 #define _Out_writes_to_ptr_opt_z_(ptr)  _Post_valid_ Post_z_ _Pre_opt_ptrdiff_cap_(ptr)
00797 #define _Out_writes_to_ptr_z_(ptr)      _Post_valid_ Post_z_ _Pre_ptrdiff_cap_(ptr)
00798 #define _Out_writes_z_(size)            _Post_valid_ _Post_z_ _Pre_cap_(size)
00799 #define _Out_z_bytecap_(size)           _Post_valid_ _Post_z_ _Pre_bytecap_(size)
00800 #define _Out_z_bytecap_c_(size)         _Post_valid_ _Post_z_ _Pre_bytecap_c_(size)
00801 #define _Out_z_bytecap_post_bytecount_(cap,count) _Post_valid_ _Post_z_bytecount_(count) _Pre_bytecap_(cap)
00802 #define _Out_z_bytecap_x_(size)         _Post_valid_ _Post_z_ _Pre_bytecap_x_(size)
00803 #define _Out_z_bytecapcount_(capcount)  _Post_valid_ _Post_z_bytecount_(capcount) _Pre_bytecap_(capcount)
00804 #define _Out_z_cap_(size)               _Post_valid_ _Post_z_ _Pre_cap_(size)
00805 #define _Out_z_cap_c_(size)             _Post_valid_ _Post_z_ _Pre_cap_c_(size)
00806 #define _Out_z_cap_m_(mult,size)        _Post_valid_ _Post_z_ _Pre_cap_m_(mult,size)
00807 #define _Out_z_cap_post_count_(cap,count) _Post_valid_ _Post_z_count_(count) _Pre_cap_(cap)
00808 #define _Out_z_cap_x_(size)             _Post_valid_ _Post_z_ _Pre_cap_x_(size)
00809 #define _Out_z_capcount_(capcount)      _Post_valid_ _Post_z_count_(capcount) _Pre_cap_(capcount)
00810 
00811 #define _Inout_                         _Prepost_valid_
00812 #define _Inout_bytecap_(size)           _Post_valid_ _Pre_valid_bytecap_(size)
00813 #define _Inout_bytecap_c_(size)         _Post_valid_ _Pre_valid_bytecap_c_(size)
00814 #define _Inout_bytecap_x_(size)         _Post_valid_ _Pre_valid_bytecap_x_(size)
00815 #define _Inout_bytecount_(size)         _Prepost_bytecount_(size)
00816 #define _Inout_bytecount_c_(size)       _Prepost_bytecount_c_(size)
00817 #define _Inout_bytecount_x_(size)       _Prepost_bytecount_x_(size)
00818 #define _Inout_cap_(size)               _Post_valid_ _Pre_valid_cap_(size)
00819 #define _Inout_cap_c_(size)             _Post_valid_ _Pre_valid_cap_c_(size)
00820 #define _Inout_cap_x_(size)             _Post_valid_ _Pre_valid_cap_x_(size)
00821 #define _Inout_count_(size)             _Prepost_count_(size)
00822 #define _Inout_count_c_(size)           _Prepost_count_c_(size)
00823 #define _Inout_count_x_(size)           _Prepost_count_x_(size)
00824 #define _Inout_defensive_(annotes)      _Pre_defensive_ _Post_defensive_ _Group_(annotes)
00825 #define _Inout_opt_                     _Prepost_opt_valid_
00826 #define _Inout_opt_bytecap_(size)       _Post_valid_ _Pre_opt_valid_bytecap_(size)
00827 #define _Inout_opt_bytecap_c_(size)     _Post_valid_ _Pre_opt_valid_bytecap_c_(size)
00828 #define _Inout_opt_bytecap_x_(size)     _Post_valid_ _Pre_opt_valid_bytecap_x_(size)
00829 #define _Inout_opt_bytecount_(size)     _Prepost_opt_bytecount_(size)
00830 #define _Inout_opt_bytecount_c_(size)   _Prepost_opt_bytecount_c_(size)
00831 #define _Inout_opt_bytecount_x_(size)   _Prepost_opt_bytecount_x_(size)
00832 #define _Inout_opt_cap_(size)           _Post_valid_ _Pre_opt_valid_cap_(size)
00833 #define _Inout_opt_cap_c_(size)         _Post_valid_ _Pre_opt_valid_cap_c_(size)
00834 #define _Inout_opt_cap_x_(size)         _Post_valid_ _Pre_opt_valid_cap_x_(size)
00835 #define _Inout_opt_count_(size)         _Prepost_opt_count_(size)
00836 #define _Inout_opt_count_c_(size)       _Prepost_opt_count_c_(size)
00837 #define _Inout_opt_count_x_(size)       _Prepost_opt_count_x_(size)
00838 #define _Inout_opt_ptrdiff_count_(size) _Pre_opt_ptrdiff_count_(size)
00839 #define _Inout_opt_z_                   _Prepost_opt_z_
00840 #define _Inout_opt_z_bytecap_(size)     _Pre_opt_z_bytecap_(size) _Post_z_
00841 #define _Inout_opt_z_bytecap_c_(size)   _Pre_opt_z_bytecap_c_(size) _Post_z_
00842 #define _Inout_opt_z_bytecap_x_(size)   _Pre_opt_z_bytecap_x_(size) _Post_z_
00843 #define _Inout_opt_z_bytecount_(size)   _Prepost_z_ _Prepost_opt_bytecount_(size)
00844 #define _Inout_opt_z_bytecount_c_(size) _Prepost_z_ _Prepost_opt_bytecount_c_(size)
00845 #define _Inout_opt_z_cap_(size)         _Pre_opt_z_cap_(size) _Post_z_
00846 #define _Inout_opt_z_cap_c_(size)       _Pre_opt_z_cap_c_(size) _Post_z_
00847 #define _Inout_opt_z_cap_x_(size)       _Pre_opt_z_cap_x_(size) _Post_z_
00848 #define _Inout_opt_z_count_(size)       _Prepost_z_ _Prepost_opt_count_(size)
00849 #define _Inout_opt_z_count_c_(size)     _Prepost_z_ _Prepost_opt_count_c_(size)
00850 #define _Inout_ptrdiff_count_(size)     _Pre_ptrdiff_count_(size)
00851 #define _Inout_updates_(size)           _Post_valid_ _Pre_cap_(size) _SA_Pre1_(__valid_impl)
00852 #define _Inout_updates_all_(size)       _Inout_updates_to_(_Old_(size), _Old_(size))
00853 #define _Inout_updates_all_opt_(size)   _Inout_updates_to_opt_(_Old_(size), _Old_(size))
00854 #define _Inout_updates_bytes_(size)     _Post_valid_ _Pre_bytecap_(size) _SA_Pre1_(__valid_impl)
00855 #define _Inout_updates_bytes_all_(size) _Inout_updates_bytes_to_(_Old_(size), _Old_(size))
00856 #define _Inout_updates_bytes_all_opt_(size) _Inout_updates_bytes_to_opt_(_Old_(size), _Old_(size))
00857 #define _Inout_updates_bytes_opt_(size) _Post_valid_ _SA_Pre1_(__valid_impl) _Pre_opt_bytecap_(size)
00858 #define _Inout_updates_bytes_to_(size,count) _Out_writes_bytes_to_(size,count) _SA_Pre1_(__valid_impl) _SA_Pre1_(__bytecount_impl(count))
00859 #define _Inout_updates_bytes_to_opt_(size,count) _SA_Pre1_(__valid_impl) _SA_Pre1_(__bytecount_impl(count)) _Out_writes_bytes_to_opt_(size,count)
00860 #define _Inout_updates_opt_(size)       _Post_valid_ _SA_Pre1_(__valid_impl) _Pre_opt_cap_(size)
00861 #define _Inout_updates_opt_z_(size)     _Post_valid_ _SA_Post1_(__zterm_impl)  _SA_Pre1_(__valid_impl) _SA_Pre1_(__zterm_impl) _Pre_opt_cap_(size)
00862 #define _Inout_updates_to_(size,count)  _Out_writes_to_(size,count) _SA_Pre1_(__valid_impl) _SA_Pre1_(__count_impl(count))
00863 #define _Inout_updates_to_opt_(size,count) _SA_Pre1_(__valid_impl) _SA_Pre1_(__count_impl(count)) _Out_writes_to_opt_(size,count)
00864 #define _Inout_updates_z_(size)         _Pre_cap_(size) _SA_Pre1_(__valid_impl) _Post_valid_ _SA_Pre1_(__zterm_impl) _SA_Post1_(__zterm_impl)
00865 #define _Inout_z_                       _Prepost_z_
00866 #define _Inout_z_bytecap_(size)         _Pre_z_bytecap_(size) _Post_z_
00867 #define _Inout_z_bytecap_c_(size)       _Pre_z_bytecap_c_(size) _Post_z_
00868 #define _Inout_z_bytecap_x_(size)       _Pre_z_bytecap_x_(size) _Post_z_
00869 #define _Inout_z_bytecount_(size)       _Prepost_z_ _Prepost_bytecount_(size)
00870 #define _Inout_z_bytecount_c_(size)     _Prepost_z_ _Prepost_bytecount_c_(size)
00871 #define _Inout_z_cap_(size)             _Pre_z_cap_(size) _Post_z_
00872 #define _Inout_z_cap_c_(size)           _Pre_z_cap_c_(size) _Post_z_
00873 #define _Inout_z_cap_x_(size)           _Pre_z_cap_x_(size) _Post_z_
00874 #define _Inout_z_count_(size)           _Prepost_z_ _Prepost_count_(size)
00875 #define _Inout_z_count_c_(size)         _Prepost_z_ _Prepost_count_c_(size)
00876 
00877 #define _Deref_opt_out_                 _Out_opt_ _Deref_post_valid_
00878 #define _Deref_opt_out_opt_             _Out_opt_ _Deref_post_opt_valid_
00879 #define _Deref_opt_out_opt_z_           _Out_opt_ _Deref_post_opt_z_
00880 #define _Deref_opt_out_z_               _Out_opt_ _Deref_post_z_
00881 #define _Deref_out_                     _Out_ _Deref_post_valid_
00882 #define _Deref_out_opt_                 _Out_ _Deref_post_opt_valid_
00883 #define _Deref_out_opt_z_               _Out_ _Deref_post_opt_z_
00884 #define _Deref_out_z_                   _Out_ _Deref_post_z_
00885 #define _Deref_out_z_bytecap_c_(sz)     _Deref_pre_bytecap_c_(sz) _Deref_post_z_
00886 #define _Deref_out_z_cap_c_(size)       _Deref_pre_cap_c_(size) _Deref_post_z_
00887 #define _Deref_inout_bound_             _Deref_in_bound_ _Deref_out_bound_
00888 #define _Deref_inout_z_                 _Deref_prepost_z_
00889 #define _Deref_inout_z_bytecap_c_(size) _Deref_pre_z_bytecap_c_(size) _Deref_post_z_
00890 #define _Deref_inout_z_cap_c_(size)     _Deref_pre_z_cap_c_(size) _Deref_post_z_
00891 
00892 #define _Outptr_                        _Out_ _SA_Deref_post2_(__notnull_impl_notref, __count_impl(1)) _Post_valid_
00893 #define _Outptr_opt_                    _Out_opt_ _SA_Deref_post2_(__notnull_impl_notref, __count_impl(1)) //_Post_valid_
00894 #define _Outptr_opt_result_buffer_(size) _Out_opt_ _SA_Deref_post2_(__notnull_impl_notref, __cap_impl(size)) //_Post_valid_
00895 #define _Outptr_opt_result_buffer_all_(size) _Out_opt_ _SA_Deref_post2_(__notnull_impl_notref, __count_impl(size)) //_Post_valid_
00896 #define _Outptr_opt_result_buffer_all_maybenull_(size) _Out_opt_ _SA_Deref_post2_(__maybenull_impl_notref, __count_impl(size)) //_Post_valid_
00897 #define _Outptr_opt_result_buffer_maybenull_(size) _Out_opt_ _SA_Deref_post2_(__maybenull_impl_notref, __cap_impl(size)) //_Post_valid_
00898 #define _Outptr_opt_result_buffer_to_(size, count) _Out_opt_ _SA_Deref_post3_(__notnull_impl_notref, __cap_impl(size), __count_impl(count)) //_Post_valid_
00899 #define _Outptr_opt_result_buffer_to_maybenull_(size, count) _Out_opt_ _SA_Deref_post3_(__maybenull_impl_notref, __cap_impl(size), __count_impl(count)) //_Post_valid_
00900 #define _Outptr_opt_result_bytebuffer_(size) _Out_opt_ _SA_Deref_post2_(__notnull_impl_notref, __bytecap_impl(size)) //_Post_valid_
00901 #define _Outptr_opt_result_bytebuffer_all_(size) _Out_opt_ _SA_Deref_post2_(__notnull_impl_notref, __bytecount_impl(size)) //_Post_valid_
00902 #define _Outptr_opt_result_bytebuffer_all_maybenull_(size) _Out_opt_ _SA_Deref_post2_(__maybenull_impl_notref, __bytecount_impl(size)) //_Post_valid_
00903 #define _Outptr_opt_result_bytebuffer_maybenull_(size) _Out_opt_ _SA_Deref_post2_(__maybenull_impl_notref, __bytecap_impl(size)) //_Post_valid_
00904 #define _Outptr_opt_result_bytebuffer_to_(size, count) _Out_opt_ _SA_Deref_post3_(__notnull_impl_notref, __bytecap_impl(size), __bytecount_impl(count)) //_Post_valid_
00905 #define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count) _Out_opt_ _SA_Deref_post3_(__maybenull_impl_notref, __bytecap_impl(size), __bytecount_impl(count)) //_Post_valid_
00906 #define _Outptr_opt_result_maybenull_   _Out_opt_ _SA_Deref_post2_(__maybenull_impl_notref, __count_impl(1)) //_Post_valid_
00907 #define _Outptr_opt_result_maybenull_z_ _Out_opt_ _Deref_post_opt_z_
00908 #define _Outptr_opt_result_nullonfailure_ _Outptr_opt_ _On_failure_(_Deref_post_null_)
00909 #define _Outptr_opt_result_z_           _Out_opt_ _Deref_post_z_
00910 #define _Outptr_result_buffer_(size)    _Out_ _SA_Deref_post2_(__notnull_impl_notref, __cap_impl(size)) _Post_valid_
00911 #define _Outptr_result_buffer_all_(size) _Out_ _SA_Deref_post2_(__notnull_impl_notref, __count_impl(size)) _Post_valid_
00912 #define _Outptr_result_buffer_all_maybenull_(size) _Out_ _SA_Deref_post2_(__maybenull_impl_notref, __count_impl(size)) _Post_valid_
00913 #define _Outptr_result_buffer_maybenull_(size) _Out_ _SA_Deref_post2_(__maybenull_impl_notref, __cap_impl(size)) _Post_valid_
00914 #define _Outptr_result_buffer_to_(size, count) _Out_ _SA_Deref_post3_(__notnull_impl_notref, __cap_impl(size), __count_impl(count)) _Post_valid_
00915 #define _Outptr_result_buffer_to_maybenull_(size, count) _Out_ _SA_Deref_post3_(__maybenull_impl_notref, __cap_impl(size), __count_impl(count)) _Post_valid_
00916 #define _Outptr_result_bytebuffer_(size) _Out_ _SA_Deref_post2_(__notnull_impl_notref, __bytecap_impl(size)) _Post_valid_
00917 #define _Outptr_result_bytebuffer_all_(size) _Out_ _SA_Deref_post2_(__notnull_impl_notref, __bytecount_impl(size)) _Post_valid_
00918 #define _Outptr_result_bytebuffer_all_maybenull_(size) _Out_ _SA_Deref_post2_(__maybenull_impl_notref, __bytecount_impl(size)) _Post_valid_
00919 #define _Outptr_result_bytebuffer_maybenull_(size) _Out_ _SA_Deref_post2_(__maybenull_impl_notref, __bytecap_impl(size)) _Post_valid_
00920 #define _Outptr_result_bytebuffer_to_(size, count) _Out_ _SA_Deref_post3_(__notnull_impl_notref, __bytecap_impl(size), __bytecount_impl(count)) _Post_valid_
00921 #define _Outptr_result_bytebuffer_to_maybenull_(size, count) _Out_ _SA_Deref_post3_(__maybenull_impl_notref, __bytecap_impl(size), __bytecount_impl(count)) _Post_valid_
00922 #define _Outptr_result_maybenull_       _Out_ _SA_Deref_post2_(__maybenull_impl_notref, __count_impl(1)) _Post_valid_
00923 #define _Outptr_result_maybenull_z_     _Out_ _Deref_post_opt_z_
00924 #define _Outptr_result_nullonfailure_   _Outptr_ _On_failure_(_Deref_post_null_)
00925 #define _Outptr_result_z_               _Out_ _Deref_post_z_
00926 
00927 #define _COM_Outptr_                    _Outptr_ _On_failure_(_Deref_post_null_)
00928 #define _COM_Outptr_opt_                _Outptr_opt_ _On_failure_(_Deref_post_null_)
00929 #define _COM_Outptr_opt_result_maybenull_ _Outptr_opt_result_maybenull_ _On_failure_(_Deref_post_null_)
00930 #define _COM_Outptr_result_maybenull_   _Outptr_result_maybenull_ _On_failure_(_Deref_post_null_)
00931 
00932 #define _Outref_                        _Group_(_Out_)
00933 #define _Outref_result_buffer_(size)    _SA_Post1_(__cap_impl(size)) _Post_valid_
00934 #define _Outref_result_buffer_all_(size) _SA_Post1_(__count_impl(size))
00935 #define _Outref_result_buffer_all_maybenull_(size) _SA_Post2_(__count_impl(size), __maybenull_impl)
00936 #define _Outref_result_buffer_maybenull_(size) _SA_Post2_(__cap_impl(size), __maybenull_impl) _Post_valid_
00937 #define _Outref_result_buffer_to_(size, count) _SA_Post2_(__cap_impl(size), __count_impl(count))
00938 #define _Outref_result_buffer_to_maybenull_(size, count) _SA_Post3_(__cap_impl(size), __count_impl(count), __maybenull_impl)
00939 #define _Outref_result_bytebuffer_(size) _SA_Post1_(__bytecap_impl(size)) _Post_valid_
00940 #define _Outref_result_bytebuffer_all_(size) _SA_Post1_(__bytecount_impl(size))
00941 #define _Outref_result_bytebuffer_all_maybenull_(size) _SA_Post2_(__bytecount_impl(size), __maybenull_impl)
00942 #define _Outref_result_bytebuffer_maybenull_(size) _SA_Post2_(__bytecap_impl(size), __maybenull_impl) _Post_valid_
00943 #define _Outref_result_bytebuffer_to_(size, count) _SA_Post2_(__bytecap_impl(size), __bytecount_impl(count))
00944 #define _Outref_result_bytebuffer_to_maybenull_(size, count) _SA_Post3_(__bytecap_impl(size), __bytecount_impl(count), __maybenull_impl)
00945 #define _Outref_result_maybenull_       _Group_(_Pre_cap_c_one_ _Post_valid_ __maybenull_impl)
00946 #define _Outref_result_nullonfailure_   _Group_(_Out_) _On_failure_(_Post_null_)
00947 
00948 #define _Reserved_                      _SA_Pre1_(__null_impl)
00949 #define _Result_nullonfailure_          _On_failure_(_Notref_ _SA_Deref_ _Post_null_)
00950 #define _Result_zeroonfailure_          _On_failure_(_Notref_ _SA_Deref_ _Out_range_(==, 0))
00951 
00952 #define __inner_callback                _SA_annotes0(__callback)
00953 
00954 #define _Ret_                           _Ret_valid_
00955 #define _Ret_bytecap_(size)             _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__bytecap_impl(size))
00956 #define _Ret_bytecap_c_(size)           _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__bytecap_c_impl(size))
00957 #define _Ret_bytecap_x_(size)           _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__bytecap_x_impl(size))
00958 #define _Ret_bytecount_(size)           _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__bytecount_impl(size)) _SA_Ret1_(__valid_impl)
00959 #define _Ret_bytecount_c_(size)         _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__bytecount_c_impl(size)) _SA_Ret1_(__valid_impl)
00960 #define _Ret_bytecount_x_(size)         _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__bytecount_x_impl(size)) _SA_Ret1_(__valid_impl)
00961 #define _Ret_cap_(size)                 _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__cap_impl(size))
00962 #define _Ret_cap_c_(size)               _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__cap_c_impl(size))
00963 #define _Ret_cap_x_(size)               _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__cap_x_impl(size))
00964 #define _Ret_count_(size)               _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__count_impl(size)) _SA_Ret1_(__valid_impl)
00965 #define _Ret_count_c_(size)             _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__count_c_impl(size)) _SA_Ret1_(__valid_impl)
00966 #define _Ret_count_x_(size)             _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__count_x_impl(size)) _SA_Ret1_(__valid_impl)
00967 #define _Ret_maybenull_                 _SA_Ret1_(__maybenull_impl)
00968 #define _Ret_maybenull_z_               _SA_Ret2_(__maybenull_impl,__zterm_impl) _SA_Ret1_(__valid_impl)
00969 #define _Ret_notnull_                   _SA_Ret1_(__notnull_impl)
00970 #define _Ret_null_                      _SA_Ret1_(__null_impl)
00971 #define _Ret_opt_                       _Ret_opt_valid_
00972 #define _Ret_opt_bytecap_(size)         _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__bytecap_impl(size))
00973 #define _Ret_opt_bytecap_c_(size)       _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__bytecap_c_impl(size))
00974 #define _Ret_opt_bytecap_x_(size)       _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__bytecap_x_impl(size))
00975 #define _Ret_opt_bytecount_(size)       _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__bytecount_impl(size)) _SA_Ret1_(__valid_impl)
00976 #define _Ret_opt_bytecount_c_(size)     _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__bytecount_c_impl(size)) _SA_Ret1_(__valid_impl)
00977 #define _Ret_opt_bytecount_x_(size)     _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__bytecount_x_impl(size)) _SA_Ret1_(__valid_impl)
00978 #define _Ret_opt_cap_(size)             _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__cap_impl(size))
00979 #define _Ret_opt_cap_c_(size)           _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__cap_c_impl(size))
00980 #define _Ret_opt_cap_x_(size)           _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__cap_x_impl(size))
00981 #define _Ret_opt_count_(size)           _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__count_impl(size)) _SA_Ret1_(__valid_impl)
00982 #define _Ret_opt_count_c_(size)         _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__count_c_impl(size)) _SA_Ret1_(__valid_impl)
00983 #define _Ret_opt_count_x_(size)         _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__count_x_impl(size)) _SA_Ret1_(__valid_impl)
00984 #define _Ret_opt_valid_                 _SA_Ret1_(__maybenull_impl_notref) _SA_Ret1_(__valid_impl)
00985 #define _Ret_opt_z_                     _SA_Ret2_(__maybenull_impl,__zterm_impl) _SA_Ret1_(__valid_impl)
00986 #define _Ret_opt_z_bytecap_(size)       _SA_Ret1_(__maybenull_impl_notref) _SA_Ret2_(__zterm_impl,__bytecap_impl(size)) _SA_Ret1_(__valid_impl)
00987 #define _Ret_opt_z_bytecount_(size)     _SA_Ret1_(__maybenull_impl_notref) _SA_Ret2_(__zterm_impl,__bytecount_impl(size)) _SA_Ret1_(__valid_impl)
00988 #define _Ret_opt_z_cap_(size)           _SA_Ret1_(__maybenull_impl_notref) _SA_Ret2_(__zterm_impl,__cap_impl(size)) _SA_Ret1_(__valid_impl)
00989 #define _Ret_opt_z_count_(size)         _SA_Ret1_(__maybenull_impl_notref) _SA_Ret2_(__zterm_impl,__count_impl(size)) _SA_Ret1_(__valid_impl)
00990 #define _Ret_valid_                     _SA_Ret1_(__notnull_impl_notref) _SA_Ret1_(__valid_impl)
00991 #define _Ret_writes_(size)              _SA_Ret2_(__notnull_impl, __count_impl(size)) _SA_Ret1_(__valid_impl)
00992 #define _Ret_writes_bytes_(size)        _SA_Ret2_(__notnull_impl, __bytecount_impl(size)) _SA_Ret1_(__valid_impl)
00993 #define _Ret_writes_bytes_maybenull_(size) _SA_Ret2_(__maybenull_impl,__bytecount_impl(size)) _SA_Ret1_(__valid_impl)
00994 #define _Ret_writes_bytes_to_(size,count) _SA_Ret3_(__notnull_impl, __bytecap_impl(size), __bytecount_impl(count)) _SA_Ret1_(__valid_impl)
00995 #define _Ret_writes_bytes_to_maybenull_(size,count) _SA_Ret3_(__maybenull_impl, __bytecap_impl(size), __bytecount_impl(count)) _SA_Ret1_(__valid_impl)
00996 #define _Ret_writes_maybenull_(size)    _SA_Ret2_(__maybenull_impl,__count_impl(size)) _SA_Ret1_(__valid_impl)
00997 #define _Ret_writes_maybenull_z_(size)  _SA_Ret3_(__maybenull_impl,__count_impl(size),__zterm_impl) _SA_Ret1_(__valid_impl)
00998 #define _Ret_writes_to_(size,count)     _SA_Ret3_(__notnull_impl, __cap_impl(size), __count_impl(count)) _SA_Ret1_(__valid_impl)
00999 #define _Ret_writes_to_maybenull_(size,count) _SA_Ret3_(__maybenull_impl, __cap_impl(size), __count_impl(count)) _SA_Ret1_(__valid_impl)
01000 #define _Ret_writes_z_(size)            _SA_Ret3_(__notnull_impl, __count_impl(size), __zterm_impl) _SA_Ret1_(__valid_impl)
01001 #define _Ret_z_                         _SA_Ret2_(__notnull_impl, __zterm_impl) _SA_Ret1_(__valid_impl)
01002 #define _Ret_z_bytecap_(size)           _SA_Ret1_(__notnull_impl_notref) _SA_Ret2_(__zterm_impl,__bytecap_impl(size)) _SA_Ret1_(__valid_impl)
01003 #define _Ret_z_bytecount_(size)         _SA_Ret1_(__notnull_impl_notref) _SA_Ret2_(__zterm_impl,__bytecount_impl(size)) _SA_Ret1_(__valid_impl)
01004 #define _Ret_z_cap_(size)               _SA_Ret1_(__notnull_impl_notref) _SA_Ret2_(__zterm_impl,__cap_impl(size)) _SA_Ret1_(__valid_impl)
01005 #define _Ret_z_count_(size)             _SA_Ret1_(__notnull_impl_notref) _SA_Ret2_(__zterm_impl,__count_impl(size)) _SA_Ret1_(__valid_impl)
01006 
01007 #define _Deref_ret_opt_z_               _SA_Deref_ret1_(__maybenull_impl_notref) _SA_Ret1_(__zterm_impl)
01008 #define _Deref_ret_z_                   _SA_Deref_ret1_(__notnull_impl_notref) _SA_Deref_ret1_(__zterm_impl)
01009 
01010 /* Additional annotation declarations */
01011 #define __ANNOTATION(fun) _SA_annotes0(SAL_annotation) void __SA_##fun
01012 #define __PRIMOP(type, fun) _SA_annotes0(SAL_primop) type __SA_##fun;
01013 #if (_MSC_VER < 1600)
01014 
01015 __ANNOTATION(SAL_satisfies(_In_ char);)
01016 
01017 #define _Inexpressible_(x) (x)
01018 
01019 #endif
01020 
01021 __ANNOTATION(SAL_constant(enum __SAL_YesNo);)
01022 __ANNOTATION(SAL_TypeName(__AuToQuOtE char *));
01023 
01024 __ANNOTATION(SAL_functionClassNew(_In_ char*);)
01025 __PRIMOP(int, _In_function_class_(_In_ char*);)
01026 #define _In_function_class_(x) _In_function_class_(#x)
01027 
01028 __ANNOTATION(SAL_interlocked(void);)
01029 
01030 __ANNOTATION(SAL_untrusted_data_source(__AuToQuOtE char *));
01031 
01032 
01033 #else /* _USE_ATTRIBUTES_FOR_SAL || _USE_DECLSPECS_FOR_SAL */
01034 
01035 /* Dummys */
01036 #define __inner_exceptthat
01037 #define __inner_typefix(ctype)
01038 #define _Always_(annos)
01039 #define _Analysis_noreturn_
01040 #define _At_(target, annos)
01041 #define _At_buffer_(target, iter, bound, annos)
01042 #define _Check_return_
01043 #define _COM_Outptr_
01044 #define _COM_Outptr_opt_
01045 #define _COM_Outptr_opt_result_maybenull_
01046 #define _COM_Outptr_result_maybenull_
01047 #define _Const_
01048 #define _Deref_in_bound_
01049 #define _Deref_in_range_(lb,ub)
01050 #define _Deref_inout_bound_
01051 #define _Deref_inout_z_
01052 #define _Deref_inout_z_bytecap_c_(size)
01053 #define _Deref_inout_z_cap_c_(size)
01054 #define _Deref_opt_out_
01055 #define _Deref_opt_out_opt_
01056 #define _Deref_opt_out_opt_z_
01057 #define _Deref_opt_out_z_
01058 #define _Deref_out_
01059 #define _Deref_out_bound_
01060 #define _Deref_out_opt_
01061 #define _Deref_out_opt_z_
01062 #define _Deref_out_range_(lb,ub)
01063 #define _Deref_out_z_
01064 #define _Deref_out_z_bytecap_c_(size)
01065 #define _Deref_out_z_cap_c_(size)
01066 #define _Deref_post_bytecap_(size)
01067 #define _Deref_post_bytecap_c_(size)
01068 #define _Deref_post_bytecap_x_(size)
01069 #define _Deref_post_bytecount_(size)
01070 #define _Deref_post_bytecount_c_(size)
01071 #define _Deref_post_bytecount_x_(size)
01072 #define _Deref_post_cap_(size)
01073 #define _Deref_post_cap_c_(size)
01074 #define _Deref_post_cap_x_(size)
01075 #define _Deref_post_count_(size)
01076 #define _Deref_post_count_c_(size)
01077 #define _Deref_post_count_x_(size)
01078 #define _Deref_post_maybenull_
01079 #define _Deref_post_notnull_
01080 #define _Deref_post_null_
01081 #define _Deref_post_opt_bytecap_(size)
01082 #define _Deref_post_opt_bytecap_c_(size)
01083 #define _Deref_post_opt_bytecap_x_(size)
01084 #define _Deref_post_opt_bytecount_(size)
01085 #define _Deref_post_opt_bytecount_c_(size)
01086 #define _Deref_post_opt_bytecount_x_(size)
01087 #define _Deref_post_opt_cap_(size)
01088 #define _Deref_post_opt_cap_c_(size)
01089 #define _Deref_post_opt_cap_x_(size)
01090 #define _Deref_post_opt_count_(size)
01091 #define _Deref_post_opt_count_c_(size)
01092 #define _Deref_post_opt_count_x_(size)
01093 #define _Deref_post_opt_valid_
01094 #define _Deref_post_opt_valid_bytecap_(size)
01095 #define _Deref_post_opt_valid_bytecap_c_(size)
01096 #define _Deref_post_opt_valid_bytecap_x_(size)
01097 #define _Deref_post_opt_valid_cap_(size)
01098 #define _Deref_post_opt_valid_cap_c_(size)
01099 #define _Deref_post_opt_valid_cap_x_(size)
01100 #define _Deref_post_opt_z_
01101 #define _Deref_post_opt_z_bytecap_(size)
01102 #define _Deref_post_opt_z_bytecap_c_(size)
01103 #define _Deref_post_opt_z_bytecap_x_(size)
01104 #define _Deref_post_opt_z_cap_(size)
01105 #define _Deref_post_opt_z_cap_c_(size)
01106 #define _Deref_post_opt_z_cap_x_(size)
01107 #define _Deref_post_valid_
01108 #define _Deref_post_valid_bytecap_(size)
01109 #define _Deref_post_valid_bytecap_c_(size)
01110 #define _Deref_post_valid_bytecap_x_(size)
01111 #define _Deref_post_valid_cap_(size)
01112 #define _Deref_post_valid_cap_c_(size)
01113 #define _Deref_post_valid_cap_x_(size)
01114 #define _Deref_post_z_
01115 #define _Deref_post_z_bytecap_(size)
01116 #define _Deref_post_z_bytecap_c_(size)
01117 #define _Deref_post_z_bytecap_x_(size)
01118 #define _Deref_post_z_cap_(size)
01119 #define _Deref_post_z_cap_c_(size)
01120 #define _Deref_post_z_cap_x_(size)
01121 #define _Deref_pre_bytecap_(size)
01122 #define _Deref_pre_bytecap_c_(size)
01123 #define _Deref_pre_bytecap_x_(size)
01124 #define _Deref_pre_bytecount_(size)
01125 #define _Deref_pre_bytecount_c_(size)
01126 #define _Deref_pre_bytecount_x_(size)
01127 #define _Deref_pre_cap_(size)
01128 #define _Deref_pre_cap_c_(size)
01129 #define _Deref_pre_cap_x_(size)
01130 #define _Deref_pre_count_(size)
01131 #define _Deref_pre_count_c_(size)
01132 #define _Deref_pre_count_x_(size)
01133 #define _Deref_pre_invalid_
01134 #define _Deref_pre_maybenull_
01135 #define _Deref_pre_notnull_
01136 #define _Deref_pre_null_
01137 #define _Deref_pre_opt_bytecap_(size)
01138 #define _Deref_pre_opt_bytecap_c_(size)
01139 #define _Deref_pre_opt_bytecap_x_(size)
01140 #define _Deref_pre_opt_bytecount_(size)
01141 #define _Deref_pre_opt_bytecount_c_(size)
01142 #define _Deref_pre_opt_bytecount_x_(size)
01143 #define _Deref_pre_opt_cap_(size)
01144 #define _Deref_pre_opt_cap_c_(size)
01145 #define _Deref_pre_opt_cap_x_(size)
01146 #define _Deref_pre_opt_count_(size)
01147 #define _Deref_pre_opt_count_c_(size)
01148 #define _Deref_pre_opt_count_x_(size)
01149 #define _Deref_pre_opt_valid_
01150 #define _Deref_pre_opt_valid_bytecap_(size)
01151 #define _Deref_pre_opt_valid_bytecap_c_(size)
01152 #define _Deref_pre_opt_valid_bytecap_x_(size)
01153 #define _Deref_pre_opt_valid_cap_(size)
01154 #define _Deref_pre_opt_valid_cap_c_(size)
01155 #define _Deref_pre_opt_valid_cap_x_(size)
01156 #define _Deref_pre_opt_z_
01157 #define _Deref_pre_opt_z_bytecap_(size)
01158 #define _Deref_pre_opt_z_bytecap_c_(size)
01159 #define _Deref_pre_opt_z_bytecap_x_(size)
01160 #define _Deref_pre_opt_z_cap_(size)
01161 #define _Deref_pre_opt_z_cap_c_(size)
01162 #define _Deref_pre_opt_z_cap_x_(size)
01163 #define _Deref_pre_readonly_
01164 #define _Deref_pre_valid_
01165 #define _Deref_pre_valid_bytecap_(size)
01166 #define _Deref_pre_valid_bytecap_c_(size)
01167 #define _Deref_pre_valid_bytecap_x_(size)
01168 #define _Deref_pre_valid_cap_(size)
01169 #define _Deref_pre_valid_cap_c_(size)
01170 #define _Deref_pre_valid_cap_x_(size)
01171 #define _Deref_pre_writeonly_
01172 #define _Deref_pre_z_
01173 #define _Deref_pre_z_bytecap_(size)
01174 #define _Deref_pre_z_bytecap_c_(size)
01175 #define _Deref_pre_z_bytecap_x_(size)
01176 #define _Deref_pre_z_cap_(size)
01177 #define _Deref_pre_z_cap_c_(size)
01178 #define _Deref_pre_z_cap_x_(size)
01179 #define _Deref_prepost_bytecap_(size)
01180 #define _Deref_prepost_bytecap_x_(size)
01181 #define _Deref_prepost_bytecount_(size)
01182 #define _Deref_prepost_bytecount_x_(size)
01183 #define _Deref_prepost_cap_(size)
01184 #define _Deref_prepost_cap_x_(size)
01185 #define _Deref_prepost_count_(size)
01186 #define _Deref_prepost_count_x_(size)
01187 #define _Deref_prepost_opt_bytecap_(size)
01188 #define _Deref_prepost_opt_bytecap_x_(size)
01189 #define _Deref_prepost_opt_bytecount_(size)
01190 #define _Deref_prepost_opt_bytecount_x_(size)
01191 #define _Deref_prepost_opt_cap_(size)
01192 #define _Deref_prepost_opt_cap_x_(size)
01193 #define _Deref_prepost_opt_count_(size)
01194 #define _Deref_prepost_opt_count_x_(size)
01195 #define _Deref_prepost_opt_valid_
01196 #define _Deref_prepost_opt_valid_bytecap_(size)
01197 #define _Deref_prepost_opt_valid_bytecap_x_(size)
01198 #define _Deref_prepost_opt_valid_cap_(size)
01199 #define _Deref_prepost_opt_valid_cap_x_(size)
01200 #define _Deref_prepost_opt_z_
01201 #define _Deref_prepost_opt_z_bytecap_(size)
01202 #define _Deref_prepost_opt_z_cap_(size)
01203 #define _Deref_prepost_valid_
01204 #define _Deref_prepost_valid_bytecap_(size)
01205 #define _Deref_prepost_valid_bytecap_x_(size)
01206 #define _Deref_prepost_valid_cap_(size)
01207 #define _Deref_prepost_valid_cap_x_(size)
01208 #define _Deref_prepost_z_
01209 #define _Deref_prepost_z_bytecap_(size)
01210 #define _Deref_prepost_z_cap_(size)
01211 #define _Deref_ret_bound_
01212 #define _Deref_ret_opt_z_
01213 #define _Deref_ret_range_(lb,ub)
01214 #define _Deref_ret_z_
01215 #define _Deref2_pre_readonly_
01216 #define _Field_range_(min,max)
01217 #define _Field_size_(size)
01218 #define _Field_size_bytes_(size)
01219 #define _Field_size_bytes_full_(size)
01220 #define _Field_size_bytes_full_opt_(size)
01221 #define _Field_size_bytes_opt_(size)
01222 #define _Field_size_bytes_part_(size, count)
01223 #define _Field_size_bytes_part_opt_(size, count)
01224 #define _Field_size_full_(size)
01225 #define _Field_size_full_opt_(size)
01226 #define _Field_size_opt_(size)
01227 #define _Field_size_part_(size, count)
01228 #define _Field_size_part_opt_(size, count)
01229 #define _Field_z_
01230 #define _Function_class_(x)
01231 #define _Group_(annos)
01232 #define _In_
01233 #define _In_bound_
01234 #define _In_bytecount_(size)
01235 #define _In_bytecount_c_(size)
01236 #define _In_bytecount_x_(size)
01237 #define _In_count_(size)
01238 #define _In_count_c_(size)
01239 #define _In_count_x_(size)
01240 #define _In_defensive_(annotes)
01241 #define _In_opt_
01242 #define _In_opt_bytecount_(size)
01243 #define _In_opt_bytecount_c_(size)
01244 #define _In_opt_bytecount_x_(size)
01245 #define _In_opt_count_(size)
01246 #define _In_opt_count_c_(size)
01247 #define _In_opt_count_x_(size)
01248 #define _In_opt_ptrdiff_count_(size)
01249 #define _In_opt_z_
01250 #define _In_opt_z_bytecount_(size)
01251 #define _In_opt_z_bytecount_c_(size)
01252 #define _In_opt_z_count_(size)
01253 #define _In_opt_z_count_c_(size)
01254 #define _In_ptrdiff_count_(size)
01255 #define _In_range_(lb,ub)
01256 #define _In_reads_(size)
01257 #define _In_reads_bytes_(size)
01258 #define _In_reads_bytes_opt_(size)
01259 #define _In_reads_opt_(size)
01260 #define _In_reads_opt_z_(size)
01261 #define _In_reads_or_z_(size)
01262 #define _In_reads_to_ptr_(ptr)
01263 #define _In_reads_to_ptr_opt_(ptr)
01264 #define _In_reads_to_ptr_opt_z_(ptr)
01265 #define _In_reads_to_ptr_z_(ptr)
01266 #define _In_reads_z_(size)
01267 #define _In_z_
01268 #define _In_z_bytecount_(size)
01269 #define _In_z_bytecount_c_(size)
01270 #define _In_z_count_(size)
01271 #define _In_z_count_c_(size)
01272 #define _Inout_
01273 #define _Inout_bytecap_(size)
01274 #define _Inout_bytecap_c_(size)
01275 #define _Inout_bytecap_x_(size)
01276 #define _Inout_bytecount_(size)
01277 #define _Inout_bytecount_c_(size)
01278 #define _Inout_bytecount_x_(size)
01279 #define _Inout_cap_(size)
01280 #define _Inout_cap_c_(size)
01281 #define _Inout_cap_x_(size)
01282 #define _Inout_count_(size)
01283 #define _Inout_count_c_(size)
01284 #define _Inout_count_x_(size)
01285 #define _Inout_defensive_(annotes)
01286 #define _Inout_opt_
01287 #define _Inout_opt_bytecap_(size)
01288 #define _Inout_opt_bytecap_c_(size)
01289 #define _Inout_opt_bytecap_x_(size)
01290 #define _Inout_opt_bytecount_(size)
01291 #define _Inout_opt_bytecount_c_(size)
01292 #define _Inout_opt_bytecount_x_(size)
01293 #define _Inout_opt_cap_(size)
01294 #define _Inout_opt_cap_c_(size)
01295 #define _Inout_opt_cap_x_(size)
01296 #define _Inout_opt_count_(size)
01297 #define _Inout_opt_count_c_(size)
01298 #define _Inout_opt_count_x_(size)
01299 #define _Inout_opt_ptrdiff_count_(size)
01300 #define _Inout_opt_z_
01301 #define _Inout_opt_z_bytecap_(size)
01302 #define _Inout_opt_z_bytecap_c_(size)
01303 #define _Inout_opt_z_bytecap_x_(size)
01304 #define _Inout_opt_z_bytecount_(size)
01305 #define _Inout_opt_z_bytecount_c_(size)
01306 #define _Inout_opt_z_cap_(size)
01307 #define _Inout_opt_z_cap_c_(size)
01308 #define _Inout_opt_z_cap_x_(size)
01309 #define _Inout_opt_z_count_(size)
01310 #define _Inout_opt_z_count_c_(size)
01311 #define _Inout_ptrdiff_count_(size)
01312 #define _Inout_updates_(size)
01313 #define _Inout_updates_all_(size)
01314 #define _Inout_updates_all_opt_(size)
01315 #define _Inout_updates_bytes_(size)
01316 #define _Inout_updates_bytes_all_(size)
01317 #define _Inout_updates_bytes_all_opt_(size)
01318 #define _Inout_updates_bytes_opt_(size)
01319 #define _Inout_updates_bytes_to_(size,count)
01320 #define _Inout_updates_bytes_to_opt_(size,count)
01321 #define _Inout_updates_opt_(size)
01322 #define _Inout_updates_opt_z_(size)
01323 #define _Inout_updates_to_(size,count)
01324 #define _Inout_updates_to_opt_(size,count)
01325 #define _Inout_updates_z_(size)
01326 #define _Inout_z_
01327 #define _Inout_z_bytecap_(size)
01328 #define _Inout_z_bytecap_c_(size)
01329 #define _Inout_z_bytecap_x_(size)
01330 #define _Inout_z_bytecount_(size)
01331 #define _Inout_z_bytecount_c_(size)
01332 #define _Inout_z_cap_(size)
01333 #define _Inout_z_cap_c_(size)
01334 #define _Inout_z_cap_x_(size)
01335 #define _Inout_z_count_(size)
01336 #define _Inout_z_count_c_(size)
01337 #define _Interlocked_operand_
01338 #define _Literal_
01339 #define _Maybenull_
01340 #define _Maybevalid_
01341 #define _Maybe_raises_SEH_exception
01342 #define _Must_inspect_result_
01343 #define _Notliteral_
01344 #define _Notnull_
01345 #define _Notref_
01346 #define _Notvalid_
01347 #define _Null_
01348 #define _Null_terminated_
01349 #define _NullNull_terminated_
01350 #define _On_failure_(annos)
01351 #define _Out_
01352 #define _Out_bound_
01353 #define _Out_bytecap_(size)
01354 #define _Out_bytecap_c_(size)
01355 #define _Out_bytecap_post_bytecount_(cap,count)
01356 #define _Out_bytecap_x_(size)
01357 #define _Out_bytecapcount_(capcount)
01358 #define _Out_bytecapcount_x_(capcount)
01359 #define _Out_cap_(size)
01360 #define _Out_cap_c_(size)
01361 #define _Out_cap_m_(mult,size)
01362 #define _Out_cap_post_count_(cap,count)
01363 #define _Out_cap_x_(size)
01364 #define _Out_capcount_(capcount)
01365 #define _Out_capcount_x_(capcount)
01366 #define _Out_defensive_(annotes)
01367 #define _Out_opt_
01368 #define _Out_opt_bytecap_(size)
01369 #define _Out_opt_bytecap_c_(size)
01370 #define _Out_opt_bytecap_post_bytecount_(cap,count)
01371 #define _Out_opt_bytecap_x_(size)
01372 #define _Out_opt_bytecapcount_(capcount)
01373 #define _Out_opt_bytecapcount_x_(capcount)
01374 #define _Out_opt_cap_(size)
01375 #define _Out_opt_cap_c_(size)
01376 #define _Out_opt_cap_m_(mult,size)
01377 #define _Out_opt_cap_post_count_(cap,count)
01378 #define _Out_opt_cap_x_(size)
01379 #define _Out_opt_capcount_(capcount)
01380 #define _Out_opt_capcount_x_(capcount)
01381 #define _Out_opt_ptrdiff_cap_(size)
01382 #define _Out_opt_z_bytecap_(size)
01383 #define _Out_opt_z_bytecap_c_(size)
01384 #define _Out_opt_z_bytecap_post_bytecount_(cap,count)
01385 #define _Out_opt_z_bytecap_x_(size)
01386 #define _Out_opt_z_bytecapcount_(capcount)
01387 #define _Out_opt_z_cap_(size)
01388 #define _Out_opt_z_cap_c_(size)
01389 #define _Out_opt_z_cap_m_(mult,size)
01390 #define _Out_opt_z_cap_post_count_(cap,count)
01391 #define _Out_opt_z_cap_x_(size)
01392 #define _Out_opt_z_capcount_(capcount)
01393 #define _Out_ptrdiff_cap_(size)
01394 #define _Out_range_(lb,ub)
01395 #define _Out_writes_(size)
01396 #define _Out_writes_all_(size)
01397 #define _Out_writes_all_opt_(size)
01398 #define _Out_writes_bytes_(size)
01399 #define _Out_writes_bytes_all_(size)
01400 #define _Out_writes_bytes_all_opt_(size)
01401 #define _Out_writes_bytes_opt_(size)
01402 #define _Out_writes_bytes_to_(size,count)
01403 #define _Out_writes_bytes_to_opt_(size,count)
01404 #define _Out_writes_opt_(size)
01405 #define _Out_writes_opt_z_(size)
01406 #define _Out_writes_to_(size,count)
01407 #define _Out_writes_to_opt_(size,count)
01408 #define _Out_writes_to_ptr_(ptr)
01409 #define _Out_writes_to_ptr_opt_(ptr)
01410 #define _Out_writes_to_ptr_opt_z_(ptr)
01411 #define _Out_writes_to_ptr_z_(ptr)
01412 #define _Out_writes_z_(size)
01413 #define _Out_z_bytecap_(size)
01414 #define _Out_z_bytecap_c_(size)
01415 #define _Out_z_bytecap_post_bytecount_(cap,count)
01416 #define _Out_z_bytecap_x_(size)
01417 #define _Out_z_bytecapcount_(capcount)
01418 #define _Out_z_cap_(size)
01419 #define _Out_z_cap_c_(size)
01420 #define _Out_z_cap_m_(mult,size)
01421 #define _Out_z_cap_post_count_(cap,count)
01422 #define _Out_z_cap_x_(size)
01423 #define _Out_z_capcount_(capcount)
01424 #define _Outptr_
01425 #define _Outptr_opt_
01426 #define _Outptr_opt_result_buffer_(size)
01427 #define _Outptr_opt_result_buffer_all_(size)
01428 #define _Outptr_opt_result_buffer_all_maybenull_(size)
01429 #define _Outptr_opt_result_buffer_maybenull_(size)
01430 #define _Outptr_opt_result_buffer_to_(size, count)
01431 #define _Outptr_opt_result_buffer_to_maybenull_(size, count)
01432 #define _Outptr_opt_result_bytebuffer_(size)
01433 #define _Outptr_opt_result_bytebuffer_all_(size)
01434 #define _Outptr_opt_result_bytebuffer_all_maybenull_(size)
01435 #define _Outptr_opt_result_bytebuffer_maybenull_(size)
01436 #define _Outptr_opt_result_bytebuffer_to_(size, count)
01437 #define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count)
01438 #define _Outptr_opt_result_maybenull_
01439 #define _Outptr_opt_result_maybenull_z_
01440 #define _Outptr_opt_result_nullonfailure_
01441 #define _Outptr_opt_result_z_
01442 #define _Outptr_result_buffer_(size)
01443 #define _Outptr_result_buffer_all_(size)
01444 #define _Outptr_result_buffer_all_maybenull_(size)
01445 #define _Outptr_result_buffer_maybenull_(size)
01446 #define _Outptr_result_buffer_to_(size, count)
01447 #define _Outptr_result_buffer_to_maybenull_(size, count)
01448 #define _Outptr_result_bytebuffer_(size)
01449 #define _Outptr_result_bytebuffer_all_(size)
01450 #define _Outptr_result_bytebuffer_all_maybenull_(size)
01451 #define _Outptr_result_bytebuffer_maybenull_(size)
01452 #define _Outptr_result_bytebuffer_to_(size, count)
01453 #define _Outptr_result_bytebuffer_to_maybenull_(size, count)
01454 #define _Outptr_result_maybenull_
01455 #define _Outptr_result_maybenull_z_
01456 #define _Outptr_result_nullonfailure_
01457 #define _Outptr_result_z_
01458 #define _Outref_
01459 #define _Outref_result_buffer_(size)
01460 #define _Outref_result_buffer_all_(size)
01461 #define _Outref_result_buffer_all_maybenull_(size)
01462 #define _Outref_result_buffer_maybenull_(size)
01463 #define _Outref_result_buffer_to_(size, count)
01464 #define _Outref_result_buffer_to_maybenull_(size, count)
01465 #define _Outref_result_bytebuffer_(size)
01466 #define _Outref_result_bytebuffer_all_(size)
01467 #define _Outref_result_bytebuffer_all_maybenull_(size)
01468 #define _Outref_result_bytebuffer_maybenull_(size)
01469 #define _Outref_result_bytebuffer_to_(size, count)
01470 #define _Outref_result_bytebuffer_to_maybenull_(size, count)
01471 #define _Outref_result_maybenull_
01472 #define _Outref_result_nullonfailure_
01473 #define _Points_to_data_
01474 #define _Post_
01475 #define _Post_bytecap_(size)
01476 #define _Post_bytecount_(size)
01477 #define _Post_bytecount_c_(size)
01478 #define _Post_bytecount_x_(size)
01479 #define _Post_cap_(size)
01480 #define _Post_count_(size)
01481 #define _Post_count_c_(size)
01482 #define _Post_count_x_(size)
01483 #define _Post_defensive_
01484 #define _Post_equal_to_(expr)
01485 #define _Post_invalid_
01486 #define _Post_maybenull_
01487 #define _Post_maybez_
01488 #define _Post_notnull_
01489 #define _Post_null_
01490 #define _Post_ptr_invalid_
01491 #define _Post_readable_byte_size_(size)
01492 #define _Post_readable_size_(size)
01493 #define _Post_satisfies_(cond)
01494 #define _Post_valid_
01495 #define _Post_writable_byte_size_(size)
01496 #define _Post_writable_size_(size)
01497 #define _Post_z_
01498 #define _Post_z_bytecount_(size)
01499 #define _Post_z_bytecount_c_(size)
01500 #define _Post_z_bytecount_x_(size)
01501 #define _Post_z_count_(size)
01502 #define _Post_z_count_c_(size)
01503 #define _Post_z_count_x_(size)
01504 #define _Pre_
01505 #define _Pre_bytecap_(size)
01506 #define _Pre_bytecap_c_(size)
01507 #define _Pre_bytecap_x_(size)
01508 #define _Pre_bytecount_(size)
01509 #define _Pre_bytecount_c_(size)
01510 #define _Pre_bytecount_x_(size)
01511 #define _Pre_cap_(size)
01512 #define _Pre_cap_c_(size)
01513 #define _Pre_cap_c_one_
01514 #define _Pre_cap_for_(param)
01515 #define _Pre_cap_m_(mult,size)
01516 #define _Pre_cap_x_(size)
01517 #define _Pre_count_(size)
01518 #define _Pre_count_c_(size)
01519 #define _Pre_count_x_(size)
01520 #define _Pre_defensive_
01521 #define _Pre_equal_to_(expr)
01522 #define _Pre_invalid_
01523 #define _Pre_maybenull_
01524 #define _Pre_notnull_
01525 #define _Pre_null_
01526 #define _Pre_opt_bytecap_(size)
01527 #define _Pre_opt_bytecap_c_(size)
01528 #define _Pre_opt_bytecap_x_(size)
01529 #define _Pre_opt_bytecount_(size)
01530 #define _Pre_opt_bytecount_c_(size)
01531 #define _Pre_opt_bytecount_x_(size)
01532 #define _Pre_opt_cap_(size)
01533 #define _Pre_opt_cap_c_(size)
01534 #define _Pre_opt_cap_c_one_
01535 #define _Pre_opt_cap_for_(param)
01536 #define _Pre_opt_cap_m_(mult,size)
01537 #define _Pre_opt_cap_x_(size)
01538 #define _Pre_opt_count_(size)
01539 #define _Pre_opt_count_c_(size)
01540 #define _Pre_opt_count_x_(size)
01541 #define _Pre_opt_ptrdiff_cap_(ptr)
01542 #define _Pre_opt_ptrdiff_count_(ptr)
01543 #define _Pre_opt_valid_
01544 #define _Pre_opt_valid_bytecap_(size)
01545 #define _Pre_opt_valid_bytecap_c_(size)
01546 #define _Pre_opt_valid_bytecap_x_(size)
01547 #define _Pre_opt_valid_cap_(size)
01548 #define _Pre_opt_valid_cap_c_(size)
01549 #define _Pre_opt_valid_cap_x_(size)
01550 #define _Pre_opt_z_
01551 #define _Pre_opt_z_bytecap_(size)
01552 #define _Pre_opt_z_bytecap_c_(size)
01553 #define _Pre_opt_z_bytecap_x_(size)
01554 #define _Pre_opt_z_cap_(size)
01555 #define _Pre_opt_z_cap_c_(size)
01556 #define _Pre_opt_z_cap_x_(size)
01557 #define _Pre_ptrdiff_cap_(ptr)
01558 #define _Pre_ptrdiff_count_(ptr)
01559 #define _Pre_readable_byte_size_(size)
01560 #define _Pre_readable_size_(size)
01561 #define _Pre_readonly_
01562 #define _Pre_satisfies_(cond)
01563 #define _Pre_valid_
01564 #define _Pre_valid_bytecap_(size)
01565 #define _Pre_valid_bytecap_c_(size)
01566 #define _Pre_valid_bytecap_x_(size)
01567 #define _Pre_valid_cap_(size)
01568 #define _Pre_valid_cap_c_(size)
01569 #define _Pre_valid_cap_x_(size)
01570 #define _Pre_writable_byte_size_(size)
01571 #define _Pre_writable_size_(size)
01572 #define _Pre_writeonly_
01573 #define _Pre_z_
01574 #define _Pre_z_bytecap_(size)
01575 #define _Pre_z_bytecap_c_(size)
01576 #define _Pre_z_bytecap_x_(size)
01577 #define _Pre_z_cap_(size)
01578 #define _Pre_z_cap_c_(size)
01579 #define _Pre_z_cap_x_(size)
01580 #define _Prepost_bytecount_(size)
01581 #define _Prepost_bytecount_c_(size)
01582 #define _Prepost_bytecount_x_(size)
01583 #define _Prepost_count_(size)
01584 #define _Prepost_count_c_(size)
01585 #define _Prepost_count_x_(size)
01586 #define _Prepost_opt_bytecount_(size)
01587 #define _Prepost_opt_bytecount_c_(size)
01588 #define _Prepost_opt_bytecount_x_(size)
01589 #define _Prepost_opt_count_(size)
01590 #define _Prepost_opt_count_c_(size)
01591 #define _Prepost_opt_count_x_(size)
01592 #define _Prepost_opt_valid_
01593 #define _Prepost_opt_z_
01594 #define _Prepost_valid_
01595 #define _Prepost_z_
01596 #define _Printf_format_string_
01597 #define _Raises_SEH_exception_
01598 #define _Maybe_raises_SEH_exception_
01599 #define _Readable_bytes_(size)
01600 #define _Readable_elements_(size)
01601 #define _Reserved_
01602 #define _Result_nullonfailure_
01603 #define _Result_zeroonfailure_
01604 #define __inner_callback
01605 #define _Ret_
01606 #define _Ret_bound_
01607 #define _Ret_bytecap_(size)
01608 #define _Ret_bytecap_c_(size)
01609 #define _Ret_bytecap_x_(size)
01610 #define _Ret_bytecount_(size)
01611 #define _Ret_bytecount_c_(size)
01612 #define _Ret_bytecount_x_(size)
01613 #define _Ret_cap_(size)
01614 #define _Ret_cap_c_(size)
01615 #define _Ret_cap_x_(size)
01616 #define _Ret_count_(size)
01617 #define _Ret_count_c_(size)
01618 #define _Ret_count_x_(size)
01619 #define _Ret_maybenull_
01620 #define _Ret_maybenull_z_
01621 #define _Ret_notnull_
01622 #define _Ret_null_
01623 #define _Ret_opt_
01624 #define _Ret_opt_bytecap_(size)
01625 #define _Ret_opt_bytecap_c_(size)
01626 #define _Ret_opt_bytecap_x_(size)
01627 #define _Ret_opt_bytecount_(size)
01628 #define _Ret_opt_bytecount_c_(size)
01629 #define _Ret_opt_bytecount_x_(size)
01630 #define _Ret_opt_cap_(size)
01631 #define _Ret_opt_cap_c_(size)
01632 #define _Ret_opt_cap_x_(size)
01633 #define _Ret_opt_count_(size)
01634 #define _Ret_opt_count_c_(size)
01635 #define _Ret_opt_count_x_(size)
01636 #define _Ret_opt_valid_
01637 #define _Ret_opt_z_
01638 #define _Ret_opt_z_bytecap_(size)
01639 #define _Ret_opt_z_bytecount_(size)
01640 #define _Ret_opt_z_cap_(size)
01641 #define _Ret_opt_z_count_(size)
01642 #define _Ret_range_(lb,ub)
01643 #define _Ret_valid_
01644 #define _Ret_writes_(size)
01645 #define _Ret_writes_bytes_(size)
01646 #define _Ret_writes_bytes_maybenull_(size)
01647 #define _Ret_writes_bytes_to_(size,count)
01648 #define _Ret_writes_bytes_to_maybenull_(size,count)
01649 #define _Ret_writes_maybenull_(size)
01650 #define _Ret_writes_maybenull_z_(size)
01651 #define _Ret_writes_to_(size,count)
01652 #define _Ret_writes_to_maybenull_(size,count)
01653 #define _Ret_writes_z_(size)
01654 #define _Ret_z_
01655 #define _Ret_z_bytecap_(size)
01656 #define _Ret_z_bytecount_(size)
01657 #define _Ret_z_cap_(size)
01658 #define _Ret_z_count_(size)
01659 #define _Return_type_success_(expr)
01660 #define _Scanf_format_string_
01661 #define _Scanf_s_format_string_
01662 #define _Struct_size_bytes_(size)
01663 #define _Success_(expr)
01664 #define _Unchanged_(e)
01665 #define _Use_decl_annotations_
01666 #define _Valid_
01667 #define _When_(expr, annos)
01668 #define _Writable_bytes_(size)
01669 #define _Writable_elements_(size)
01670 
01671 #endif /* _USE_ATTRIBUTES_FOR_SAL || _USE_DECLSPECS_FOR_SAL */
01672 

Generated on Sat May 19 2012 04:30:12 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.