#endif // ]
/* Check for deprecated use of declspecs for sal */
-#if _USE_DECLSPECS_FOR_SAL // [
+#if defined(_USE_DECLSPECS_FOR_SAL) && _USE_DECLSPECS_FOR_SAL // [
#pragma message("declspecs for sal are deprecated.")
#ifdef _PREFAST_ // [
#error Support for _USE_DECLSPECS_FOR_SAL is dropped
#define _SA_annotes2(n,pp1,pp2) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1), p2=_SA_SPECSTRIZE(pp2))]
#define _SA_annotes3(n,pp1,pp2,pp3) [SAL_annotes(Name=#n, p1=_SA_SPECSTRIZE(pp1), p2=_SA_SPECSTRIZE(pp2), p3=_SA_SPECSTRIZE(pp3))]
-#define _SAL2_Name(Name) _SA_annotes3(SAL_name, #Name, "", "2")
-#define _SAL11_Name(Name) _SA_annotes3(SAL_name, #Name, "", "1.1")
+#define _SAL2_NAME(Name) _SA_annotes3(SAL_name, #Name, "", "2")
+#define _SAL11_NAME(Name) _SA_annotes3(SAL_name, #Name, "", "1.1")
#define _Pre_ [SAL_pre]
#define _Post_ [SAL_post]
#define _Deref_impl_ [SAL_deref]
#define _Notref_impl_ [SAL_notref]
#define __inner_exceptthat [SAL_except]
-#define __inner_typefix(ctype) [SAL_typefix(p1=#ctype)]
+#define __inner_typefix(ctype) [SAL_typefix(p1=_SA_SPECSTRIZE(ctype))]
#define _Group_(annos) [SAL_begin] annos [SAL_end]
#define _When_(expr, annos) [SAL_when(p1=_SA_SPECSTRIZE(expr))] _Group_(annos)
-#define _At_(target, annos) [SAL_at(p1=#target)] _Group_(annos)
-#define _At_buffer_(target, iter, bound, annos) [SAL_at_buffer(p1=#target, p2=#iter, p3=#bound)] [SAL_begin] annos [SAL_end]
+#define _At_(target, annos) [SAL_at(p1=_SA_SPECSTRIZE(target))] _Group_(annos)
+#define _At_buffer_(target, iter, bound, annos) [SAL_at_buffer(p1=_SA_SPECSTRIZE(target), p2=_SA_SPECSTRIZE(iter), p3=_SA_SPECSTRIZE(bound))] [SAL_begin] annos [SAL_end]
#define _On_failure_(annos) [SAL_context(p1="SAL_failed")] _Group_(_Post_ _Group_(annos))
#define _Always_(annos) _Group_(annos) _On_failure_(annos)
-#define _Analysis_noreturn_ _SAL2_Name(_Analysis_noreturn_) [SAL_annotes(Name="SAL_terminates")]
+#define _Analysis_noreturn_ _SAL2_NAME(_Analysis_noreturn_) [SAL_annotes(Name="SAL_terminates")]
#define _Analysis_assume_(expr) __assume(expr)
-#define _Check_return_ _SAL2_Name(_Check_return_) [SA_Post(MustCheck=SA_Yes)]
-#define _COM_Outptr_ _SAL2_Name(_COM_Outptr_) _Group_(_Outptr_ _On_failure_(_Deref_post_null_))
-#define _COM_Outptr_opt_ _SAL2_Name(_COM_Outptr_opt_) _Group_(_Outptr_opt_ _On_failure_(_Deref_post_null_))
-#define _COM_Outptr_opt_result_maybenull_ _SAL2_Name(_COM_Outptr_opt_result_maybenull_) _Group_(_Outptr_opt_result_maybenull_ _On_failure_(_Deref_post_null_))
-#define _COM_Outptr_result_maybenull_ _SAL2_Name(_COM_Outptr_result_maybenull_) _Group_(_Outptr_opt_result_maybenull_ _On_failure_(_Deref_post_null_))
-#define _Const_ _SAL2_Name(_Const_) [SA_Pre(Access=SA_Read,Notref=1)]
-#define _Deref_in_bound_ _SAL2_Name(_Deref_in_bound_) [SA_PreBound(Deref=1)]
+#define _Check_return_ _SAL2_NAME(_Check_return_) [SA_Post(MustCheck=SA_Yes)]
+#define _COM_Outptr_ _SAL2_NAME(_COM_Outptr_) _Group_(_Outptr_ _On_failure_(_Deref_post_null_))
+#define _COM_Outptr_opt_ _SAL2_NAME(_COM_Outptr_opt_) _Group_(_Outptr_opt_ _On_failure_(_Deref_post_null_))
+#define _COM_Outptr_opt_result_maybenull_ _SAL2_NAME(_COM_Outptr_opt_result_maybenull_) _Group_(_Outptr_opt_result_maybenull_ _On_failure_(_Deref_post_null_))
+#define _COM_Outptr_result_maybenull_ _SAL2_NAME(_COM_Outptr_result_maybenull_) _Group_(_Outptr_opt_result_maybenull_ _On_failure_(_Deref_post_null_))
+#define _Const_ _SAL2_NAME(_Const_) [SA_Pre(Access=SA_Read,Notref=1)]
+#define _Deref_in_bound_ _SAL2_NAME(_Deref_in_bound_) [SA_PreBound(Deref=1)]
//#define _Deref_in_range_(lb,ub)
//#define _Deref_inout_bound_
//#define _Deref_inout_z_
//#define _Deref_opt_out_opt_
//#define _Deref_opt_out_opt_z_
//#define _Deref_opt_out_z_
-#define _Deref_out_ _SAL2_Name(_Deref_out_) _Group_(_Out_ _Deref_post_valid_)
+#define _Deref_out_ _SAL2_NAME(_Deref_out_) _Group_(_Out_ _Deref_post_valid_)
//#define _Deref_out_bound_
//#define _Deref_out_opt_
//#define _Deref_out_opt_z_
-#define _Deref_out_range_(lb,ub) _SAL2_Name(_Deref_out_range_) _Group_(_Post_ [SAL_notref] [SAL_deref] [SAL_annotes(Name="SAL_range", p1=#lb, p2=#ub)])
-//#define _Deref_out_z_
+#define _Deref_out_range_(lb,ub) _SAL2_NAME(_Deref_out_range_) _Group_(_Post_ [SAL_notref] [SAL_deref] [SAL_annotes(Name="SAL_range", p1=_SA_SPECSTRIZE(lb), p2=_SA_SPECSTRIZE(ub))])
+#define _Deref_out_z_ _SAL11_NAME(_Deref_out_z_) _Group_(_Out_ _Deref_post_z_)
//#define _Deref_out_z_bytecap_c_(size)
//#define _Deref_out_z_cap_c_(size)
-//#define _Deref_post_bytecap_(size)
+#define _Deref_post_bytecap_(size) _SAL11_NAME(_Deref_post_bytecap_) _Group_([SA_Post(Deref=1,Null=SA_No,Notref=1)] [SA_Post(Deref=1,WritableBytes="\n" _SA_SPECSTRIZE(size))])
//#define _Deref_post_bytecap_c_(size)
//#define _Deref_post_bytecap_x_(size)
-//#define _Deref_post_bytecount_(size)
+#define _Deref_post_bytecount_(size)
//#define _Deref_post_bytecount_c_(size)
//#define _Deref_post_bytecount_x_(size)
//#define _Deref_post_cap_(size)
//#define _Deref_post_count_x_(size)
//#define _Deref_post_maybenull_
//#define _Deref_post_notnull_
-//#define _Deref_post_null_
+#define _Deref_post_null_ _SAL11_NAME(_Deref_post_null_) _Group_([SA_Post(Deref=1,Null=SA_Yes,Notref=1)] )
//#define _Deref_post_opt_bytecap_(size)
//#define _Deref_post_opt_bytecap_c_(size)
//#define _Deref_post_opt_bytecap_x_(size)
//#define _Deref_post_opt_count_(size)
//#define _Deref_post_opt_count_c_(size)
//#define _Deref_post_opt_count_x_(size)
-//#define _Deref_post_opt_valid_
+#define _Deref_post_opt_valid_ _SAL11_NAME(_Deref_post_opt_valid_) _Group_([SA_Post(Deref=1,Null=SA_Maybe,Notref=1)] [SA_Post(Valid=SA_Yes)])
//#define _Deref_post_opt_valid_bytecap_(size)
//#define _Deref_post_opt_valid_bytecap_c_(size)
//#define _Deref_post_opt_valid_bytecap_x_(size)
//#define _Deref_post_opt_z_cap_(size)
//#define _Deref_post_opt_z_cap_c_(size)
//#define _Deref_post_opt_z_cap_x_(size)
-#define _Deref_post_valid_ _SAL2_Name(_Deref_post_valid_) _Group_([SA_Post(Deref=1,Null=SA_No,Notref=1)] [SA_Post(Valid=SA_Yes)])
+#define _Deref_post_valid_ _SAL2_NAME(_Deref_post_valid_) _Group_([SA_Post(Deref=1,Null=SA_No,Notref=1)] [SA_Post(Valid=SA_Yes)])
//#define _Deref_post_valid_bytecap_(size)
//#define _Deref_post_valid_bytecap_c_(size)
//#define _Deref_post_valid_bytecap_x_(size)
//#define _Deref_post_valid_cap_(size)
//#define _Deref_post_valid_cap_c_(size)
//#define _Deref_post_valid_cap_x_(size)
-//#define _Deref_post_z_
+#define _Deref_post_z_ _SAL11_NAME(_Deref_post_z_) _Group_([SA_Post(Deref=1,Null=SA_No,Notref=1)] [SA_Post(Deref=1,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
//#define _Deref_post_z_bytecap_(size)
//#define _Deref_post_z_bytecap_c_(size)
//#define _Deref_post_z_bytecap_x_(size)
//#define _Deref_pre_bytecap_(size)
//#define _Deref_pre_bytecap_c_(size)
//#define _Deref_pre_bytecap_x_(size)
-//#define _Deref_pre_bytecount_(size)
+#define _Deref_pre_bytecount_(size) _SAL11_NAME(_Deref_pre_bytecount_) _Group_([SA_Pre(Deref=1,Null=SA_No,Notref=1)] [SA_Pre(Deref=1,ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
//#define _Deref_pre_bytecount_c_(size)
//#define _Deref_pre_bytecount_x_(size)
//#define _Deref_pre_cap_(size)
//#define _Deref_pre_maybenull_
//#define _Deref_pre_notnull_
//#define _Deref_pre_null_
-#define _Deref_pre_opt_bytecap_(size) _SAL11_Name(_Pre_opt_bytecap_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size))])
+#define _Deref_pre_opt_bytecap_(size) _SAL11_NAME(_Pre_opt_bytecap_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size))])
//#define _Deref_pre_opt_bytecap_c_(size)
//#define _Deref_pre_opt_bytecap_x_(size)
//#define _Deref_pre_opt_bytecount_(size)
//#define _Deref_pre_opt_count_(size)
//#define _Deref_pre_opt_count_c_(size)
//#define _Deref_pre_opt_count_x_(size)
-//#define _Deref_pre_opt_valid_
+#define _Deref_pre_opt_valid_ _SAL11_NAME(_Deref_pre_opt_valid_) _Group_([SA_Pre(Deref=1,Null=SA_Maybe,Notref=1)] [SA_Pre(Valid=SA_Yes)])
//#define _Deref_pre_opt_valid_bytecap_(size)
//#define _Deref_pre_opt_valid_bytecap_c_(size)
//#define _Deref_pre_opt_valid_bytecap_x_(size)
//#define _Deref_pre_opt_z_cap_(size)
//#define _Deref_pre_opt_z_cap_c_(size)
//#define _Deref_pre_opt_z_cap_x_(size)
-#define _Deref_pre_readonly_ _SAL2_Name(_Deref_pre_readonly_) _Group_([SA_Pre(Deref=1,Access=SA_Read,Notref=1)])
+#define _Deref_pre_readonly_ _SAL2_NAME(_Deref_pre_readonly_) _Group_([SA_Pre(Deref=1,Access=SA_Read,Notref=1)])
//#define _Deref_pre_valid_
//#define _Deref_pre_valid_bytecap_(size)
//#define _Deref_pre_valid_bytecap_c_(size)
//#define _Deref_pre_valid_cap_c_(size)
//#define _Deref_pre_valid_cap_x_(size)
//#define _Deref_pre_writeonly_
-//#define _Deref_pre_z_
+#define _Deref_pre_z_ _SAL11_NAME(_Deref_pre_z_) _Group_([SA_Pre(Deref=1,Null=SA_No,Notref=1)] [SA_Pre(Deref=1,NullTerminated=SA_Yes)] [SA_Pre(Valid=SA_Yes)])
//#define _Deref_pre_z_bytecap_(size)
//#define _Deref_pre_z_bytecap_c_(size)
//#define _Deref_pre_z_bytecap_x_(size)
//#define _Deref_prepost_opt_cap_x_(size)
//#define _Deref_prepost_opt_count_(size)
//#define _Deref_prepost_opt_count_x_(size)
-//#define _Deref_prepost_opt_valid_
+#define _Deref_prepost_opt_valid_ _SAL11_NAME(_Deref_prepost_opt_valid_) _Group_(_Deref_pre_opt_valid_ _Deref_post_opt_valid_)
//#define _Deref_prepost_opt_valid_bytecap_(size)
//#define _Deref_prepost_opt_valid_bytecap_x_(size)
//#define _Deref_prepost_opt_valid_cap_(size)
//#define _Deref_prepost_valid_bytecap_x_(size)
//#define _Deref_prepost_valid_cap_(size)
//#define _Deref_prepost_valid_cap_x_(size)
-//#define _Deref_prepost_z_
+#define _Deref_prepost_z_ _SAL11_NAME(_Deref_prepost_z_) _Group_(_Deref_pre_z_ _Deref_post_z_)
//#define _Deref_prepost_z_bytecap_(size)
//#define _Deref_prepost_z_cap_(size)
//#define _Deref_ret_bound_
//#define _Deref_ret_range_(lb,ub)
//#define _Deref_ret_z_
//#define _Deref2_pre_readonly_
-#define _Field_range_(min,max) _SAL2_Name(_Field_range_) _Group_(_SA_annotes2(SAL_range,min,max))
-#define _Field_size_(size) _SAL2_Name(_Field_size_) _Group_(_Notnull_ _Writable_elements_(size))
-#define _Field_size_bytes_(size) _SAL2_Name(_Field_size_bytes_) _Group_(_Notnull_ _Writable_bytes_(size))
+#define _Field_range_(min,max) _SAL2_NAME(_Field_range_) _Group_(_SA_annotes2(SAL_range,min,max))
+#define _Field_size_(size) _SAL2_NAME(_Field_size_) _Group_(_Notnull_ _Writable_elements_(size))
+#define _Field_size_opt_(size) _SAL2_NAME(_Field_size_opt_) _Group_(_Maybenull_ _Writable_elements_(size))
+#define _Field_size_bytes_(size) _SAL2_NAME(_Field_size_bytes_) _Group_(_Notnull_ _Writable_bytes_(size))
//#define _Field_size_bytes_full_(size)
//#define _Field_size_bytes_full_opt_(size)
-#define _Field_size_bytes_opt_(size) _SAL2_Name(_Field_size_bytes_opt_) _Group_(_Maybenull_ _Writable_bytes_(size))
+#define _Field_size_bytes_opt_(size) _SAL2_NAME(_Field_size_bytes_opt_) _Group_(_Maybenull_ _Writable_bytes_(size))
//#define _Field_size_bytes_part_(size, count)
-#define _Field_size_bytes_part_opt_(size, count) _SAL2_Name(_Field_size_bytes_part_opt_) _Group_(_Maybenull_ _Writable_bytes_(size) _Readable_bytes_(count))
+#define _Field_size_bytes_part_opt_(size, count) _SAL2_NAME(_Field_size_bytes_part_opt_) _Group_(_Maybenull_ _Writable_bytes_(size) _Readable_bytes_(count))
//#define _Field_size_full_(size)
//#define _Field_size_full_opt_(size)
-//#define _Field_size_opt_(size)
-//#define _Field_size_part_(size, count)
+#define _Field_size_part_(size,count) _SAL2_NAME(_Field_size_part_) _Group_(_Notnull_ _Writable_elements_(size) _Readable_elements_(count))
//#define _Field_size_part_opt_(size, count)
//#define _Field_z_
-#define _Function_class_(x) _SA_annotes1(SAL_functionClassNew, #x)
-#define _In_ _SAL2_Name(_In_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(Valid=SA_Yes)] [SA_Pre(Deref=1,Access=SA_Read,Notref=1)])
+#define _Function_class_(x) _SA_annotes1(SAL_functionClassNew, _SA_SPECSTRIZE(x))
+#define _In_ _SAL2_NAME(_In_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(Valid=SA_Yes)] [SA_Pre(Deref=1,Access=SA_Read,Notref=1)])
//#define _In_bound_
-#define _In_bytecount_(size) _SAL11_Name(_In_bytecount_) _Group_(_Pre_bytecount_(size) _Deref_pre_readonly_)
+#define _In_bytecount_(size) _SAL11_NAME(_In_bytecount_) _Group_(_Pre_bytecount_(size) _Deref_pre_readonly_)
//#define _In_bytecount_c_(size)
//#define _In_bytecount_x_(size)
-#define _In_count_(size)
-#define _In_count_c_(size)
+#define _In_count_(size) _SAL11_NAME(_In_count_) _Group_(_Pre_count_(size) _Deref_pre_readonly_)
+#define _In_count_c_(size) _SAL11_NAME(_In_count_c_) _Group_(_Pre_count_c_(size) _Deref_pre_readonly_)
//#define _In_count_x_(size)
//#define _In_defensive_(annotes)
-#define _In_opt_ _SAL2_Name(_In_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(Valid=SA_Yes)] _Deref_pre_readonly_)
-#define _In_opt_bytecount_(size)
+#define _In_opt_ _SAL2_NAME(_In_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(Valid=SA_Yes)] _Deref_pre_readonly_)
+#define _In_opt_bytecount_(size) _SAL11_NAME(_In_opt_bytecount_) _Group_(_Pre_opt_bytecount_(size) _Deref_pre_readonly_)
//#define _In_opt_bytecount_c_(size)
//#define _In_opt_bytecount_x_(size)
//#define _In_opt_count_(size)
//#define _In_opt_count_c_(size)
//#define _In_opt_count_x_(size)
//#define _In_opt_ptrdiff_count_(size)
-#define _In_opt_z_
+#define _In_opt_z_ _SAL2_NAME(_In_opt_z_) _Group_(_In_opt_ [SA_Pre(NullTerminated=SA_Yes)])
//#define _In_opt_z_bytecount_(size)
//#define _In_opt_z_bytecount_c_(size)
-#define _In_opt_z_count_(size)
+#define _In_opt_z_count_(size) _SAL11_NAME(_In_opt_z_count_) _Group_(_Pre_opt_z_ _Pre_opt_count_(size) _Deref_pre_readonly_)
//#define _In_opt_z_count_c_(size)
//#define _In_ptrdiff_count_(size)
-#define _In_range_(lb,ub)
-#define _In_reads_(size)
-#define _In_reads_bytes_(size)
-#define _In_reads_bytes_opt_(size)
-#define _In_reads_opt_(size)
+#define _In_range_(lb,ub) _SAL2_NAME(_In_range_) _Group_([SAL_pre] [SAL_annotes(Name="SAL_range", p1=_SA_SPECSTRIZE(lb), p2=_SA_SPECSTRIZE(ub))])
+#define _In_reads_(size) _SAL2_NAME(_In_reads_) _Group_(_Pre_count_(size) _Deref_pre_readonly_)
+#define _In_reads_bytes_(size) _SAL2_NAME(_In_reads_bytes_) _Group_(_Pre_bytecount_(size) _Deref_pre_readonly_)
+#define _In_reads_bytes_opt_(size) _SAL2_NAME(_In_reads_bytes_opt_) _Group_(_Pre_opt_bytecount_(size) _Deref_pre_readonly_)
+#define _In_reads_opt_(size) _SAL2_NAME(_In_reads_opt_) _Group_(_Pre_opt_count_(size) _Deref_pre_readonly_)
//#define _In_reads_opt_z_(size)
-#define _In_reads_or_z_(size)
+#define _In_reads_or_z_(size) _SAL2_NAME(_In_reads_or_z_) _Group_(_In_ _When_(_String_length_(_Curr_) < (size), _Pre_z_) _When_(_String_length_(_Curr_) >= (size), [SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(size))]))
//#define _In_reads_to_ptr_(ptr)
//#define _In_reads_to_ptr_opt_(ptr)
//#define _In_reads_to_ptr_opt_z_(ptr)
//#define _In_reads_to_ptr_z_(ptr)
-//#define _In_reads_z_(size)
-#define _In_z_
-#define _In_z_bytecount_(size)
+#define _In_reads_z_(size) _SAL2_NAME(_In_reads_z_) _Group_(_In_reads_(size) _Pre_z_)
+#define _In_z_ _SAL2_NAME(_In_z_) _Group_(_In_ [SA_Pre(NullTerminated=SA_Yes)])
+#define _In_z_bytecount_(size) _SAL11_NAME(_In_z_bytecount_) _Group_(_Pre_z_ _Pre_bytecount_(size) _Deref_pre_readonly_)
//#define _In_z_bytecount_c_(size)
-#define _In_z_count_(size)
+#define _In_z_count_(size) _SAL11_NAME(_In_z_count_) _Group_(_Pre_z_ _Pre_count_(size) _Deref_pre_readonly_)
//#define _In_z_count_c_(size)
-#define _Inout_ _SAL2_Name(_Inout_) _Group_(_Prepost_valid_)
-//#define _Inout_bytecap_(size)
+#define _Inout_ _SAL2_NAME(_Inout_) _Group_(_Prepost_valid_)
+#define _Inout_bytecap_(size) _SAL11_NAME(_Inout_bytecap_) _Group_(_Pre_valid_bytecap_(size) _Post_valid_)
//#define _Inout_bytecap_c_(size)
//#define _Inout_bytecap_x_(size)
-#define _Inout_bytecount_(size)
+#define _Inout_bytecount_(size) _SAL11_NAME(_Inout_bytecount_) _Group_(_Prepost_bytecount_(size))
//#define _Inout_bytecount_c_(size)
//#define _Inout_bytecount_x_(size)
//#define _Inout_cap_(size)
//#define _Inout_count_c_(size)
//#define _Inout_count_x_(size)
//#define _Inout_defensive_(annotes)
-#define _Inout_opt_ _SAL2_Name(_Inout_opt_) _Group_(_Prepost_opt_valid_)
+#define _Inout_opt_ _SAL2_NAME(_Inout_opt_) _Group_(_Prepost_opt_valid_)
//#define _Inout_opt_bytecap_(size)
//#define _Inout_opt_bytecap_c_(size)
//#define _Inout_opt_bytecap_x_(size)
//#define _Inout_opt_count_c_(size)
//#define _Inout_opt_count_x_(size)
//#define _Inout_opt_ptrdiff_count_(size)
-//#define _Inout_opt_z_
+#define _Inout_opt_z_ _SAL2_NAME(_Inout_opt_z_) _Group_(_Prepost_opt_z_)
//#define _Inout_opt_z_bytecap_(size)
//#define _Inout_opt_z_bytecap_c_(size)
//#define _Inout_opt_z_bytecap_x_(size)
//#define _Inout_opt_z_count_(size)
//#define _Inout_opt_z_count_c_(size)
//#define _Inout_ptrdiff_count_(size)
-#define _Inout_updates_(size)
+#define _Inout_updates_(size) _SAL2_NAME(_Inout_updates_) _Group_(_Pre_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] )
//#define _Inout_updates_all_(size)
//#define _Inout_updates_all_opt_(size)
-#define _Inout_updates_bytes_(size)
+#define _Inout_updates_bytes_(size) _SAL2_NAME(_Inout_updates_bytes_) _Group_(_Pre_bytecap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] )
//#define _Inout_updates_bytes_all_(size)
//#define _Inout_updates_bytes_all_opt_(size)
-//#define _Inout_updates_bytes_opt_(size)
-#define _Inout_updates_bytes_to_(size,count)
-#define _Inout_updates_bytes_to_opt_(size,count)
-#define _Inout_updates_opt_(size)
-//#define _Inout_updates_opt_z_(size)
+#define _Inout_updates_bytes_opt_(size) _SAL2_NAME(_Inout_updates_bytes_opt_) _Group_(_Pre_opt_bytecap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)])
+#define _Inout_updates_bytes_to_(size,count) _SAL2_NAME(_Inout_updates_bytes_to_) _Group_(_Out_writes_bytes_to_(size,count) [SA_Pre(Valid=SA_Yes)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(count))])
+#define _Inout_updates_bytes_to_opt_(size,count) _SAL2_NAME(_Inout_updates_bytes_to_opt_) _Group_(_Out_writes_bytes_to_opt_(size,count) [SA_Pre(Valid=SA_Yes)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(count))])
+#define _Inout_updates_opt_(size) _SAL2_NAME(_Inout_updates_opt_) _Group_(_Pre_opt_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)])
+#define _Inout_updates_opt_z_(size) _SAL2_NAME(_Inout_updates_opt_z_) _Group_(_Pre_opt_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Post(NullTerminated=SA_Yes)])
//#define _Inout_updates_to_(size,count)
//#define _Inout_updates_to_opt_(size,count)
-#define _Inout_updates_z_(size) _SAL2_Name(_Inout_updates_z_) _Group_(_Pre_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Post(NullTerminated=SA_Yes)])
-//#define _Inout_z_
+#define _Inout_updates_z_(size) _SAL2_NAME(_Inout_updates_z_) _Group_(_Pre_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Post(NullTerminated=SA_Yes)])
+#define _Inout_z_ _SAL2_NAME(_Inout_z_) _Group_(_Prepost_z_)
//#define _Inout_z_bytecap_(size)
//#define _Inout_z_bytecap_c_(size)
//#define _Inout_z_bytecap_x_(size)
//#define _Inout_z_cap_x_(size)
//#define _Inout_z_count_(size)
//#define _Inout_z_count_c_(size)
-#define _Interlocked_operand_
-#define _Literal_
+#define _Interlocked_operand_ [SAL_pre] [SAL_annotes(Name="SAL_interlocked")]
+#define _Literal_ _SAL2_NAME(_Literal_) _Group_([SAL_pre] [SAL_annotes(Name="SAL_constant", p1="__yes")])
#define _Maybenull_ [SAL_annotes(Name="SAL_null", p1="__maybe")]
#define _Maybevalid_ [SAL_annotes(Name="SAL_valid", p1="__maybe")]
//#define _Maybe_raises_SEH_exception
-#define _Must_inspect_result_ _SAL2_Name(_Must_inspect_result_) _Group_(_Post_ [SAL_annotes(Name="SAL_mustInspect")] [SA_Post(MustCheck=SA_Yes)])
-#define _Notliteral_
+#define _Must_inspect_result_ _SAL2_NAME(_Must_inspect_result_) _Group_(_Post_ [SAL_annotes(Name="SAL_mustInspect")] [SA_Post(MustCheck=SA_Yes)])
+#define _Notliteral_ _SAL2_NAME(_Notliteral_) _Group_([SAL_pre] [SAL_annotes(Name="SAL_constant", p1="__no")] )
#define _Notnull_ [SAL_annotes(Name="SAL_null", p1="__no")]
//#define _Notref_
//#define _Notvalid_
-#define _Null_
-#define _Null_terminated_ _SAL2_Name(_Null_terminated_) _Group_([SAL_annotes(Name="SAL_nullTerminated", p1="__yes")])
-#define _NullNull_terminated_
+#define _Null_ [SAL_annotes(Name="SAL_null", p1="__yes")]
+#define _Null_terminated_ _SAL2_NAME(_Null_terminated_) _Group_([SAL_annotes(Name="SAL_nullTerminated", p1="__yes")])
+#define _NullNull_terminated_ _SAL2_NAME(_NullNull_terminated_) _Group_([SAL_annotes(Name="SAL_nullTerminated", p1="__yes")] [SAL_annotes(Name="SAL_readableTo", p1="inexpressibleCount(\"NullNull terminated string\")")])
//#define _On_failure_(annos)
-#define _Out_ _SAL2_Name(_Out_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)])
+#define _Out_ _SAL2_NAME(_Out_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)])
//#define _Out_bound_
-#define _Out_bytecap_(size)
+#define _Out_bytecap_(size) _SAL11_NAME(_Out_bytecap_) _Group_(_Pre_bytecap_(size) [SA_Post(Valid=SA_Yes)])
//#define _Out_bytecap_c_(size)
//#define _Out_bytecap_post_bytecount_(cap,count)
//#define _Out_bytecap_x_(size)
//#define _Out_bytecapcount_(capcount)
//#define _Out_bytecapcount_x_(capcount)
-#define _Out_cap_(size)
+#define _Out_cap_(size) _SAL11_NAME(_Out_cap_) _Group_(_Pre_cap_(size) [SA_Post(Valid=SA_Yes)])
//#define _Out_cap_c_(size)
//#define _Out_cap_m_(mult,size)
//#define _Out_cap_post_count_(cap,count)
//#define _Out_capcount_(capcount)
//#define _Out_capcount_x_(capcount)
//#define _Out_defensive_(annotes)
-#define _Out_opt_ _SAL2_Name(_Out_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)])
-#define _Out_opt_bytecap_(size)
+#define _Out_opt_ _SAL2_NAME(_Out_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)])
+#define _Out_opt_bytecap_(size) _SAL11_NAME(_Out_opt_bytecap_) _Group_(_Pre_opt_bytecap_(size) [SA_Post(Valid=SA_Yes)])
//#define _Out_opt_bytecap_c_(size)
//#define _Out_opt_bytecap_post_bytecount_(cap,count)
//#define _Out_opt_bytecap_x_(size)
//#define _Out_opt_bytecapcount_(capcount)
//#define _Out_opt_bytecapcount_x_(capcount)
-#define _Out_opt_cap_(size)
+#define _Out_opt_cap_(size) _SAL11_NAME(_Out_opt_cap_) _Group_(_Pre_opt_cap_(size) [SA_Post(Valid=SA_Yes)])
//#define _Out_opt_cap_c_(size)
//#define _Out_opt_cap_m_(mult,size)
//#define _Out_opt_cap_post_count_(cap,count)
//#define _Out_opt_capcount_(capcount)
//#define _Out_opt_capcount_x_(capcount)
//#define _Out_opt_ptrdiff_cap_(size)
-//#define _Out_opt_z_bytecap_(size)
+#define _Out_opt_z_bytecap_(size) _SAL11_NAME(_Out_opt_z_bytecap_) _Group_(_Pre_opt_bytecap_(size) [SA_Post(Valid=SA_Yes)] _Post_z_)
//#define _Out_opt_z_bytecap_c_(size)
//#define _Out_opt_z_bytecap_post_bytecount_(cap,count)
//#define _Out_opt_z_bytecap_x_(size)
//#define _Out_opt_z_cap_x_(size)
//#define _Out_opt_z_capcount_(capcount)
//#define _Out_ptrdiff_cap_(size)
-#define _Out_range_(lb,ub) _SAL2_Name(_Out_range_) _Group_(_Post_ _SA_annotes2(SAL_range, lb, ub))
-#define _Out_writes_(size)
-//#define _Out_writes_all_(size)
-//#define _Out_writes_all_opt_(size)
-#define _Out_writes_bytes_(size)
-#define _Out_writes_bytes_all_(size)
-//#define _Out_writes_bytes_all_opt_(size)
-#define _Out_writes_bytes_opt_(size)
-#define _Out_writes_bytes_to_(size,count)
-#define _Out_writes_bytes_to_opt_(size,count)
-#define _Out_writes_opt_(size)
-//#define _Out_writes_opt_z_(size)
-#define _Out_writes_to_(size,count)
-#define _Out_writes_to_opt_(size,count)
+#define _Out_range_(lb,ub) _SAL2_NAME(_Out_range_) _Group_(_Post_ _SA_annotes2(SAL_range, lb, ub))
+#define _Out_writes_(size) _SAL2_NAME(_Out_writes_) _Group_(_Pre_cap_(size) [SA_Post(Valid=SA_Yes)])
+#define _Out_writes_all_(size) _SAL2_NAME(_Out_writes_all_) _Group_(_Out_writes_to_(_Old_(size), _Old_(size)))
+#define _Out_writes_all_opt_(size) _SAL2_NAME(_Out_writes_all_opt_) _Group_(_Out_writes_to_opt_(_Old_(size), _Old_(size)))
+#define _Out_writes_bytes_(size) _SAL2_NAME(_Out_writes_bytes_) _Group_(_Pre_bytecap_(size) [SA_Post(Valid=SA_Yes)])
+#define _Out_writes_bytes_all_(size) _SAL2_NAME(_Out_writes_bytes_all_) _Group_(_Out_writes_bytes_to_(_Old_(size), _Old_(size)))
+#define _Out_writes_bytes_all_opt_(size) _SAL2_NAME(_Out_writes_bytes_all_opt_) _Group_(_Out_writes_bytes_to_opt_(_Old_(size), _Old_(size)))
+#define _Out_writes_bytes_opt_(size) _SAL2_NAME(_Out_writes_bytes_opt_) _Group_(_Pre_opt_bytecap_(size) [SA_Post(Valid=SA_Yes)])
+#define _Out_writes_bytes_to_(size,count) _SAL2_NAME(_Out_writes_bytes_to_) _Group_(_Pre_bytecap_(size) [SA_Post(Valid=SA_Yes)] _Post_bytecount_(count))
+#define _Out_writes_bytes_to_opt_(size,count) _SAL2_NAME(_Out_writes_bytes_to_opt_) _Group_(_Pre_opt_bytecap_(size) [SA_Post(Valid=SA_Yes)] _Post_bytecount_(count) )
+#define _Out_writes_opt_(size) _SAL2_NAME(_Out_writes_opt_) _Group_(_Pre_opt_cap_(size) [SA_Post(Valid=SA_Yes)])
+#define _Out_writes_opt_z_(size) _SAL2_NAME(_Out_writes_opt_z_) _Group_(_Pre_opt_cap_(size) [SA_Post(Valid=SA_Yes)] _Post_z_)
+#define _Out_writes_to_(size,count) _SAL2_NAME(_Out_writes_to_) _Group_(_Pre_cap_(size) [SA_Post(Valid=SA_Yes)] _Post_count_(count))
+#define _Out_writes_to_opt_(size,count) _SAL2_NAME(_Out_writes_to_opt_) _Group_(_Pre_opt_cap_(size) [SA_Post(Valid=SA_Yes)] _Post_count_(count))
//#define _Out_writes_to_ptr_(ptr)
//#define _Out_writes_to_ptr_opt_(ptr)
//#define _Out_writes_to_ptr_opt_z_(ptr)
//#define _Out_writes_to_ptr_z_(ptr)
-//#define _Out_writes_z_(size)
-#define _Out_z_bytecap_(size)
+#define _Out_writes_z_(size) _SAL2_NAME(_Out_writes_z_) _Group_(_Pre_cap_(size) [SA_Post(Valid=SA_Yes)] _Post_z_)
+#define _Out_z_bytecap_(size) _SAL11_NAME(_Out_z_bytecap_) _Group_(_Pre_bytecap_(size) [SA_Post(Valid=SA_Yes)] _Post_z_)
//#define _Out_z_bytecap_c_(size)
-//#define _Out_z_bytecap_post_bytecount_(cap,count)
+#define _Out_z_bytecap_post_bytecount_(cap,count) _SAL11_NAME(_Out_z_bytecap_post_bytecount_) _Group_(_Pre_bytecap_(cap) [SA_Post(Valid=SA_Yes)] _Post_z_bytecount_(count))
//#define _Out_z_bytecap_x_(size)
//#define _Out_z_bytecapcount_(capcount)
//#define _Out_z_cap_(size)
//#define _Out_z_cap_post_count_(cap,count)
//#define _Out_z_cap_x_(size)
//#define _Out_z_capcount_(capcount)
-#define _Outptr_ _SAL2_Name(_Outptr_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,ValidElements="\n""1")])
-#define _Outptr_opt_ _SAL2_Name(_Outptr_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,ValidElements="\n""1")])
-//#define _Outptr_opt_result_buffer_(size)
+#define _Outptr_ _SAL2_NAME(_Outptr_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,ValidElements="\n""1")])
+#define _Outptr_opt_ _SAL2_NAME(_Outptr_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,ValidElements="\n""1")])
+#define _Outptr_opt_result_buffer_(size) _SAL2_NAME(_Outptr_opt_result_buffer_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableElements="\n" _SA_SPECSTRIZE(size))])
//#define _Outptr_opt_result_buffer_all_(size)
//#define _Outptr_opt_result_buffer_all_maybenull_(size)
//#define _Outptr_opt_result_buffer_maybenull_(size)
//#define _Outptr_opt_result_buffer_to_(size, count)
//#define _Outptr_opt_result_buffer_to_maybenull_(size, count)
-//#define _Outptr_opt_result_bytebuffer_(size)
+#define _Outptr_opt_result_bytebuffer_(size) _SAL2_NAME(_Outptr_opt_result_bytebuffer_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableBytes="\n" _SA_SPECSTRIZE(size))])
//#define _Outptr_opt_result_bytebuffer_all_(size)
-#define _Outptr_opt_result_bytebuffer_all_maybenull_(size) _SAL2_Name(_Outptr_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,ValidBytes="\n"#size)])
+#define _Outptr_opt_result_bytebuffer_all_maybenull_(size) _SAL2_NAME(_Outptr_opt_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,ValidBytes="\n" _SA_SPECSTRIZE(size))])
//#define _Outptr_opt_result_bytebuffer_maybenull_(size)
//#define _Outptr_opt_result_bytebuffer_to_(size, count)
//#define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count)
-#define _Outptr_opt_result_maybenull_ _SAL2_Name(_Outptr_opt_result_maybenull_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,ValidElements="\n""1")])
+#define _Outptr_opt_result_maybenull_ _SAL2_NAME(_Outptr_opt_result_maybenull_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,ValidElements="\n""1")])
//#define _Outptr_opt_result_maybenull_z_
//#define _Outptr_opt_result_nullonfailure_
//#define _Outptr_opt_result_z_
-#define _Outptr_result_buffer_(size)
+#define _Outptr_result_buffer_(size) _SAL2_NAME(_Outptr_result_buffer_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableElements="\n" _SA_SPECSTRIZE(size))] )
//#define _Outptr_result_buffer_all_(size)
//#define _Outptr_result_buffer_all_maybenull_(size)
-//#define _Outptr_result_buffer_maybenull_(size)
+#define _Outptr_result_buffer_maybenull_(size) _SAL2_NAME(_Outptr_result_buffer_maybenull_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,WritableElements="\n" _SA_SPECSTRIZE(size))])
//#define _Outptr_result_buffer_to_(size, count)
//#define _Outptr_result_buffer_to_maybenull_(size, count)
-#define _Outptr_result_bytebuffer_(size)
+#define _Outptr_result_bytebuffer_(size) _SAL2_NAME(_Outptr_result_bytebuffer_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableBytes="\n" _SA_SPECSTRIZE(size))])
//#define _Outptr_result_bytebuffer_all_(size)
//#define _Outptr_result_bytebuffer_all_maybenull_(size)
-//#define _Outptr_result_bytebuffer_maybenull_(size)
-//#define _Outptr_result_bytebuffer_to_(size, count)
+#define _Outptr_result_bytebuffer_maybenull_(size) _SAL2_NAME(_Outptr_result_bytebuffer_maybenull_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,WritableBytes="\n" _SA_SPECSTRIZE(size))])
+#define _Outptr_result_bytebuffer_to_(size, count) _SAL2_NAME(_Outptr_result_bytebuffer_to_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_No,Notref=1,WritableBytes="\n" _SA_SPECSTRIZE(size), ValidBytes="\n" _SA_SPECSTRIZE(count))])
//#define _Outptr_result_bytebuffer_to_maybenull_(size, count)
-//#define _Outptr_result_maybenull_
+#define _Outptr_result_maybenull_ _SAL2_NAME(_Outptr_result_maybenull_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] [SA_Post(Deref=1,Null=SA_Maybe,Notref=1,ValidElements="\n""1")] )
//#define _Outptr_result_maybenull_z_
-#define _Outptr_result_nullonfailure_
-//#define _Outptr_result_z_
+#define _Outptr_result_nullonfailure_ _SAL2_NAME(_Outptr_result_nullonfailure_) _Group_(_Outptr_ [SAL_context(p1="SAL_failed")] _Group_([SAL_post] _Deref_post_null_) )
+#define _Outptr_result_z_ _SAL2_NAME(_Outptr_result_z_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElementsConst=1,Notref=1)] [SA_Post(Valid=SA_Yes)] _Deref_post_z_)
//#define _Outref_
//#define _Outref_result_buffer_(size)
//#define _Outref_result_buffer_all_(size)
//#define _Outref_result_bytebuffer_to_maybenull_(size, count)
//#define _Outref_result_maybenull_
//#define _Outref_result_nullonfailure_
-#define _Points_to_data_
-//#define _Post_bytecap_(size)
-//#define _Post_bytecount_(size)
+#define _Points_to_data_ _SAL2_NAME(_Points_to_data_) _Group_([SAL_pre] [SAL_at(p1="*_Curr_")] _Group_([SAL_annotes(Name="SAL_mayBePointer", p1="__no")]) )
+#define _Post_bytecap_(size) _SAL11_NAME(_Post_bytecap_) _Group_([SA_Post(WritableBytes="\n" _SA_SPECSTRIZE(size))])
+#define _Post_bytecount_(size) _SAL11_NAME(_Post_bytecount_) _Group_([SA_Post(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
//#define _Post_bytecount_c_(size)
//#define _Post_bytecount_x_(size)
//#define _Post_cap_(size)
-//#define _Post_count_(size)
+#define _Post_count_(size) _SAL11_NAME(_Post_count_) _Group_([SA_Post(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)] )
//#define _Post_count_c_(size)
//#define _Post_count_x_(size)
//#define _Post_defensive_
-#define _Post_equal_to_(expr)
-#define _Post_invalid_ _SAL2_Name(_Post_invalid_) _Group_([SA_Post(Deref=1,Valid=SA_No)])
-#define _Post_maybenull_ _SAL2_Name(_Post_maybenull_) _Group_([SA_Post(Null=SA_Maybe)])
-//#define _Post_maybez_
-#define _Post_notnull_
+#define _Post_equal_to_(expr) _SAL2_NAME(_Post_equal_to_) _Group_(_Out_range_(==,expr))
+#define _Post_invalid_ _SAL2_NAME(_Post_invalid_) _Group_([SA_Post(Deref=1,Valid=SA_No)])
+#define _Post_maybenull_ _SAL2_NAME(_Post_maybenull_) _Group_([SA_Post(Null=SA_Maybe)])
+#define _Post_maybez_ _SAL11_NAME(_Post_maybez_) _Group_([SA_Post(NullTerminated=SA_Maybe)])
+#define _Post_notnull_ _SAL2_NAME(_Post_notnull_) _Group_([SA_Post(Null=SA_No)])
//#define _Post_null_
-#define _Post_ptr_invalid_ _SAL2_Name(_Post_ptr_invalid_) _Group_([SA_Post(Valid=SA_No)])
-//#define _Post_readable_byte_size_(size)
-//#define _Post_readable_size_(size)
-#define _Post_satisfies_(cond)
-#define _Post_valid_ _SAL2_Name(_Post_valid_) _Group_([SA_Post(Valid=SA_Yes)])
-#define _Post_writable_byte_size_(size)
+#define _Post_ptr_invalid_ _SAL2_NAME(_Post_ptr_invalid_) _Group_([SA_Post(Valid=SA_No)])
+#define _Post_readable_byte_size_(size) _SAL2_NAME(_Post_readable_byte_size_) _Group_([SA_Post(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
+#define _Post_readable_size_(size) _SAL2_NAME(_Post_readable_size_) _Group_([SA_Post(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
+#define _Post_satisfies_(cond) _SAL2_NAME(_Post_satisfies_) _Group_([SAL_post] [SAL_annotes(Name="SAL_satisfies", p1=_SA_SPECSTRIZE(cond))])
+#define _Post_valid_ _SAL2_NAME(_Post_valid_) _Group_([SA_Post(Valid=SA_Yes)])
+#define _Post_writable_byte_size_(size) _SAL2_NAME(_Post_writable_byte_size_) _Group_([SA_Post(WritableBytes="\n" _SA_SPECSTRIZE(size))] )
//#define _Post_writable_size_(size)
-#define _Post_z_ _SAL2_Name(_Post_z_) _Group_([SA_Post(NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
-//#define _Post_z_bytecount_(size)
+#define _Post_z_ _SAL2_NAME(_Post_z_) _Group_([SA_Post(NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
+#define _Post_z_bytecount_(size) _SAL11_NAME(_Post_z_bytecount_) _Group_([SA_Post(NullTerminated=SA_Yes,ValidBytes="\n" _SA_SPECSTRIZE(size) )] [SA_Post(Valid=SA_Yes)])
//#define _Post_z_bytecount_c_(size)
//#define _Post_z_bytecount_x_(size)
//#define _Post_z_count_(size)
//#define _Post_z_count_c_(size)
//#define _Post_z_count_x_(size)
-//#define _Pre_bytecap_(size)
+#define _Pre_bytecap_(size) _SAL11_NAME(_Pre_bytecap_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size) )])
//#define _Pre_bytecap_c_(size)
//#define _Pre_bytecap_x_(size)
-#define _Pre_bytecount_(size)
+#define _Pre_bytecount_(size) _SAL11_NAME(_Pre_bytecount_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
//#define _Pre_bytecount_c_(size)
//#define _Pre_bytecount_x_(size)
-#define _Pre_cap_(size) _SAL11_Name(_Pre_cap_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElements="\n" #size )])
+#define _Pre_cap_(size) _SAL11_NAME(_Pre_cap_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableElements="\n" _SA_SPECSTRIZE(size) )])
//#define _Pre_cap_c_(size)
//#define _Pre_cap_c_one_
//#define _Pre_cap_for_(param)
//#define _Pre_cap_m_(mult,size)
//#define _Pre_cap_x_(size)
-//#define _Pre_count_(size)
-//#define _Pre_count_c_(size)
+#define _Pre_count_(size) _SAL11_NAME(_Pre_count_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)])
+#define _Pre_count_c_(size) _SAL11_NAME(_Pre_count_c_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(ValidElementsConst=size)] [SA_Pre(Valid=SA_Yes)])
//#define _Pre_count_x_(size)
//#define _Pre_defensive_
//#define _Pre_equal_to_(expr)
//#define _Pre_invalid_
-#define _Pre_maybenull_ _SAL2_Name(_Pre_maybenull_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)])
-//#define _Pre_notnull_
+#define _Pre_maybenull_ _SAL2_NAME(_Pre_maybenull_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)])
+#define _Pre_notnull_ _SAL2_NAME(_Pre_notnull_) _Group_([SA_Pre(Null=SA_No,Notref=1)])
//#define _Pre_null_
-//#define _Pre_opt_bytecap_(size)
+#define _Pre_opt_bytecap_(size) _SAL11_NAME(_Pre_opt_bytecap_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size))] )
//#define _Pre_opt_bytecap_c_(size)
//#define _Pre_opt_bytecap_x_(size)
-//#define _Pre_opt_bytecount_(size)
+#define _Pre_opt_bytecount_(size) _SAL11_NAME(_Pre_opt_bytecount_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
//#define _Pre_opt_bytecount_c_(size)
//#define _Pre_opt_bytecount_x_(size)
-//#define _Pre_opt_cap_(size)
+#define _Pre_opt_cap_(size) _SAL11_NAME(_Pre_opt_cap_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(WritableElements="\n" _SA_SPECSTRIZE(size))] )
//#define _Pre_opt_cap_c_(size)
//#define _Pre_opt_cap_c_one_
//#define _Pre_opt_cap_for_(param)
//#define _Pre_opt_cap_m_(mult,size)
//#define _Pre_opt_cap_x_(size)
-//#define _Pre_opt_count_(size)
+#define _Pre_opt_count_(size) _SAL11_NAME(_Pre_opt_count_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
//#define _Pre_opt_count_c_(size)
//#define _Pre_opt_count_x_(size)
//#define _Pre_opt_ptrdiff_cap_(ptr)
//#define _Pre_opt_ptrdiff_count_(ptr)
-#define _Pre_opt_valid_ _SAL2_Name(_Pre_opt_valid_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(Valid=SA_Yes)])
+#define _Pre_opt_valid_ _SAL2_NAME(_Pre_opt_valid_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(Valid=SA_Yes)])
//#define _Pre_opt_valid_bytecap_(size)
//#define _Pre_opt_valid_bytecap_c_(size)
//#define _Pre_opt_valid_bytecap_x_(size)
//#define _Pre_opt_valid_cap_(size)
//#define _Pre_opt_valid_cap_c_(size)
//#define _Pre_opt_valid_cap_x_(size)
-//#define _Pre_opt_z_
+#define _Pre_opt_z_ _SAL11_NAME(_Pre_opt_z_) _Group_([SA_Pre(Null=SA_Maybe,Notref=1)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Pre(Valid=SA_Yes)])
//#define _Pre_opt_z_bytecap_(size)
//#define _Pre_opt_z_bytecap_c_(size)
//#define _Pre_opt_z_bytecap_x_(size)
//#define _Pre_ptrdiff_cap_(ptr)
//#define _Pre_ptrdiff_count_(ptr)
//#define _Pre_readable_byte_size_(size)
-#define _Pre_readable_size_(size)
+#define _Pre_readable_size_(size) _SAL2_NAME(_Pre_readable_size_) _Group_([SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
//#define _Pre_readonly_
-//#define _Pre_satisfies_(cond)
-//#define _Pre_valid_
-//#define _Pre_valid_bytecap_(size)
+#define _Pre_satisfies_(cond) _SAL2_NAME(_Pre_satisfies_) _Group_([SAL_pre] [SAL_annotes(Name="SAL_satisfies", p1=_SA_SPECSTRIZE(cond))])
+#define _Pre_unknown_
+#define _Pre_valid_ _SAL2_NAME(_Pre_valid_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(Valid=SA_Yes)] )
+#define _Pre_valid_bytecap_(size) _SAL11_NAME(_Pre_valid_bytecap_) _Group_([SA_Pre(Null=SA_No,Notref=1)] [SA_Pre(WritableBytes="\n" _SA_SPECSTRIZE(size))] [SA_Pre(Valid=SA_Yes)] )
//#define _Pre_valid_bytecap_c_(size)
//#define _Pre_valid_bytecap_x_(size)
//#define _Pre_valid_cap_(size)
//#define _Pre_writable_byte_size_(size)
//#define _Pre_writable_size_(size)
//#define _Pre_writeonly_
-//#define _Pre_z_
+#define _Pre_z_ _SAL2_NAME(_Pre_z_) _Group_([SA_Pre(NullTerminated=SA_Yes)] [SA_Pre(Valid=SA_Yes)])
//#define _Pre_z_bytecap_(size)
//#define _Pre_z_bytecap_c_(size)
//#define _Pre_z_bytecap_x_(size)
//#define _Pre_z_cap_(size)
//#define _Pre_z_cap_c_(size)
//#define _Pre_z_cap_x_(size)
-//#define _Prepost_bytecount_(size)
+#define _Prepost_bytecount_(size) _SAL11_NAME(_Prepost_bytecount_) _Group_(_Pre_bytecount_(size) _Post_bytecount_(size))
//#define _Prepost_bytecount_c_(size)
//#define _Prepost_bytecount_x_(size)
//#define _Prepost_count_(size)
//#define _Prepost_opt_count_(size)
//#define _Prepost_opt_count_c_(size)
//#define _Prepost_opt_count_x_(size)
-#define _Prepost_opt_valid_ _SAL2_Name(_Prepost_opt_valid_) _Group_(_Pre_opt_valid_ _Post_valid_)
-//#define _Prepost_opt_z_
-#define _Prepost_valid_
-//#define _Prepost_z_
-#define _Printf_format_string_
+#define _Prepost_opt_valid_ _SAL2_NAME(_Prepost_opt_valid_) _Group_(_Pre_opt_valid_ _Post_valid_)
+#define _Prepost_opt_z_ _SAL11_NAME(_Prepost_opt_z_) _Group_(_Pre_opt_z_ _Post_z_)
+#define _Prepost_valid_ _SAL11_NAME(_Prepost_valid_) _Group_(_Pre_valid_ _Post_valid_)
+#define _Prepost_z_ _SAL2_NAME(_Prepost_z_) _Group_(_Pre_z_ _Post_z_)
+#define _Printf_format_string_ _SAL2_NAME(_Printf_format_string_) _Group_([SA_FormatString(Style="printf")] )
//#define _Raises_SEH_exception_
#define _Maybe_raises_SEH_exception_
-#define _Readable_bytes_(size) _SAL2_Name(_Readable_bytes_) _Group_(_SA_annotes1(SAL_readableTo, byteCount(size)))
-//#define _Readable_elements_(size)
-#define _Reserved_ _SAL2_Name(_Reserved_) _Group_([SA_Pre(Null=SA_Yes)])
+#define _Readable_bytes_(size) _SAL2_NAME(_Readable_bytes_) _Group_(_SA_annotes1(SAL_readableTo, byteCount(size)))
+#define _Readable_elements_(size) _SAL2_NAME(_Readable_elements_) _Group_([SAL_annotes(Name="SAL_readableTo", p1="elementCount(size)")])
+#define _Reserved_ _SAL2_NAME(_Reserved_) _Group_([SA_Pre(Null=SA_Yes)])
//#define _Result_nullonfailure_
//#define _Result_zeroonfailure_
-//#define __inner_callback
+#define __inner_callback [SAL_annotes(Name="__callback")]
//#define _Ret_
//#define _Ret_bound_
//#define _Ret_bytecap_(size)
//#define _Ret_count_(size)
//#define _Ret_count_c_(size)
//#define _Ret_count_x_(size)
-#define _Ret_maybenull_ _SAL2_Name(_Ret_maybenull_) _Group_([SA_Post(Null=SA_Maybe)])
+#define _Ret_maybenull_ _SAL2_NAME(_Ret_maybenull_) _Group_([SA_Post(Null=SA_Maybe)])
//#define _Ret_maybenull_z_
-//#define _Ret_notnull_
+#define _Ret_notnull_ _SAL2_NAME(_Ret_notnull_) _Group_([SA_Post(Null=SA_No)])
//#define _Ret_null_
//#define _Ret_opt_
-#define _Ret_opt_bytecap_(size)
+#define _Ret_opt_bytecap_(size) _SAL11_NAME(_Ret_opt_bytecap_) _Group_([SA_Post(Null=SA_Maybe,Notref=1)] [SA_Post(WritableBytes="\n" _SA_SPECSTRIZE(size))])
//#define _Ret_opt_bytecap_c_(size)
//#define _Ret_opt_bytecap_x_(size)
-#define _Ret_opt_bytecount_(size)
+#define _Ret_opt_bytecount_(size) _SAL11_NAME(_Ret_opt_bytecount_) _Group_([SA_Post(Null=SA_Maybe,Notref=1)] [SA_Post(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
//#define _Ret_opt_bytecount_c_(size)
//#define _Ret_opt_bytecount_x_(size)
//#define _Ret_opt_cap_(size)
//#define _Ret_opt_count_c_(size)
//#define _Ret_opt_count_x_(size)
//#define _Ret_opt_valid_
-//#define _Ret_opt_z_
+#define _Ret_opt_z_ _SAL11_NAME(_Ret_opt_z_) _Group_([SA_Post(Null=SA_Maybe,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)] )
//#define _Ret_opt_z_bytecap_(size)
//#define _Ret_opt_z_bytecount_(size)
//#define _Ret_opt_z_cap_(size)
//#define _Ret_opt_z_count_(size)
-#define _Ret_range_(lb,ub)
+#define _Ret_range_(lb,ub) _SAL2_NAME(_Ret_range_) _Group_([SAL_post] [SAL_annotes(Name="SAL_range", p1=_SA_SPECSTRIZE(lb), p2=_SA_SPECSTRIZE(ub))] )
//#define _Ret_valid_
//#define _Ret_writes_(size)
//#define _Ret_writes_bytes_(size)
//#define _Ret_writes_to_(size,count)
//#define _Ret_writes_to_maybenull_(size,count)
//#define _Ret_writes_z_(size)
-#define _Ret_z_ _SAL2_Name(_Ret_z_) _Group_([SA_Post(Null=SA_No,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
+#define _Ret_z_ _SAL2_NAME(_Ret_z_) _Group_([SA_Post(Null=SA_No,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
//#define _Ret_z_bytecap_(size)
//#define _Ret_z_bytecount_(size)
//#define _Ret_z_cap_(size)
//#define _Ret_z_count_(size)
-#define _Return_type_success_(expr)
-//#define _Scanf_format_string_
-//#define _Scanf_s_format_string_
-#define _Struct_size_bytes_(size)
-#define _Success_(expr) _SAL2_Name(_Success_) _Group_([SA_Success(Condition=_SA_SPECSTRIZE(expr))])
-#define _Unchanged_(e)
+#define _Return_type_success_(expr) _SAL2_NAME(_Return_type_success_) _Group_([SA_Success(Condition=_SA_SPECSTRIZE(expr))])
+#define _Scanf_format_string_ _SAL2_NAME(_Scanf_format_string_) _Group_([SA_FormatString(Style="scanf")])
+#define _Scanf_s_format_string_ _SAL2_NAME(_Scanf_s_format_string_) _Group_([SA_FormatString(Style="scanf_s")])
+#define _Struct_size_bytes_(size) _SAL2_NAME(_Struct_size_bytes_) _Group_(_Writable_bytes_(byteCount(size)))
+#define _Success_(expr) _SAL2_NAME(_Success_) _Group_([SA_Success(Condition=_SA_SPECSTRIZE(expr))])
+#define _Unchanged_(expr) _SAL2_NAME(_Unchanged_) _Group_([SAL_at(p1=_SA_SPECSTRIZE(expr))] _Group_(_Post_equal_to_(expr) _Const_))
//#define _Use_decl_annotations_
-//#define _Valid_
-#define _Writable_bytes_(size) _SAL2_Name(_Writable_bytes_) _Group_(_SA_annotes1(SAL_writableTo, byteCount(size)))
-#define _Writable_elements_(size) _SAL2_Name(_Writable_elements_) _Group_(_SA_annotes1(SAL_writableTo, elementCount(size)))
+#define _Valid_ [SAL_annotes(Name="SAL_valid", p1="__yes")]
+#define _Writable_bytes_(size) _SAL2_NAME(_Writable_bytes_) _Group_(_SA_annotes1(SAL_writableTo, byteCount(size)))
+#define _Writable_elements_(size) _SAL2_NAME(_Writable_elements_) _Group_(_SA_annotes1(SAL_writableTo, elementCount(size)))
#define __In_impl_ [SA_Pre(Valid=SA_Yes)] [SA_Pre(Deref=1, Notref=1, Access=SA_Read)]
#define __AuToQuOtE _SA_annotes0(SAL_AuToQuOtE)
#define _In_function_class_(x) _In_function_class_(#x)
#define _Called_from_function_class_(x) _In_function_class_(x)
-#define _Function_class_(x) _SA_annotes1(SAL_functionClassNew, #x)
#else // ] [ !_PREFAST_
#define _Pre_readable_size_(size)
#define _Pre_readonly_
#define _Pre_satisfies_(cond)
+#define _Pre_unknown_
#define _Pre_valid_
#define _Pre_valid_bytecap_(size)
#define _Pre_valid_bytecap_c_(size)