Hello. The attached patch adds several simple macro definitions to sal.h and 
driverspecs.h.  The patch to sal.h contains all of the macros documented on 
these two pages:

https://msdn.microsoft.com/en-us/library/hh916382.aspx
https://msdn.microsoft.com/en-us/library/jj159529.aspx

In addition, this patch adds some undocumented macros to sal.h and 
driverspecs.h that are needed to compile usbview and devcon (two example 
applications destributed by Microsoft).  If someone could apply this patch or 
give me feedback about how to improve them, that would be great!

--David
diff --git a/mingw-w64-headers/include/driverspecs.h 
b/mingw-w64-headers/include/driverspecs.h
index b7d3268..2fa89a1 100644
--- a/mingw-w64-headers/include/driverspecs.h
+++ b/mingw-w64-headers/include/driverspecs.h
@@ -28,3 +28,6 @@
 
 #define __deref_out_ecount(Size)
 
+#define __drv_aliasesMem
+#define __drv_allocatesMem(kind)
+#define __drv_freesMem(kind)
diff --git a/mingw-w64-headers/include/sal.h b/mingw-w64-headers/include/sal.h
index 79a747f..c3b15bf 100644
--- a/mingw-w64-headers/include/sal.h
+++ b/mingw-w64-headers/include/sal.h
@@ -17,12 +17,171 @@
 
 #define __checkReturn __inner_checkReturn
 
+// Pointer parameters
 #define _In_
-#define _In_opt_
 #define _Out_
 #define _Inout_
+#define _In_z_
+#define _Inout_z_
+#define _In_reads_(s)
+#define _In_reads_bytes_(s)
+#define _In_reads_z_(s)
+#define _In_reads_or_z_(s)
+#define _Out_writes_(s)
+#define _Out_writes_bytes_(s)
+#define _Out_writes_z_(s)
+#define _Inout_updates_(s)
+#define _Inout_updates_bytes_(s)
+#define _Inout_updates_z_(s)
+#define _Out_writes_to_(s,c)
+#define _Out_writes_bytes_to_(s, c)
+#define _Out_writes_all_(s)
+#define _Out_writes_bytes_all_(s)
+#define _Inout_updates_to_(s, c)
+#define _Inout_updates_bytes_to_(s, c)
+#define _Inout_updates_all_(s)
+#define _Inout_updates_bytes_all_(s)
+#define _In_reads_to_ptr_(p)
+#define _In_reads_to_ptr_z_(p)
+#define _Out_writes_to_ptr_(p)
+#define _Out_writes_to_ptr_z(p)
+
+// Optional pointer parameters
+#define _In_opt_
+#define _Out_opt_
+#define _Inout_opt_
+#define _In_opt_z_
+#define _Inout_opt_z_
+#define _In_reads_opt_(s)
+#define _In_reads_bytes_opt_(s)
+#define _In_reads_opt_z_(s)
+
+#define _Out_writes_opt_(s)
+#define _Out_writes_opt_z_(s)
+#define _Inout_updates_opt_(s)
+#define _Inout_updates_bytes_opt_(s)
+#define _Inout_updates_opt_z_(s)
+#define _Out_writes_to_opt_(s, c)
+#define _Out_writes_bytes_to_opt_(s, c)
+#define _Out_writes_all_opt_(s)
+#define _Out_writes_bytes_all_opt_(s)
+
+#define _Inout_updates_to_opt_(s, c)
+#define _Inout_updates_bytes_to_opt_(s, c)
+#define _Inout_updates_all_opt_(s, c)
+#define _Inout_updates_bytes_all_opt_(s)
+#define _In_reads_to_ptr_opt_(p)
+#define _In_reads_to_ptr_opt_z_(p)
+#define _Out_writes_to_ptr_opt_(p)
+#define _Out_writes_to_ptr_opt_z_(p)
+
+// Output pointer parameters
+#define _Outptr_
+#define _Outptr_opt_
+#define _Outptr_result_maybenull_
+#define _Outptr_opt_result_maybenull_
+#define _Outptr_result_z_
+#define _Outptr_opt_result_z_
+#define _Outptr_result_maybenull_z_
+#define _Outptr_opt_result_maybenull_z_
+#define _COM_Outptr_
+#define _COM_Outptr_opt_
+#define _COM_Outptr_result_maybenull_
+#define _COM_Outptr_opt_result_maybenull_
+#define _Outptr_result_buffer_(s)
+#define _Outptr_result_bytebuffer_(s)
+#define _Outptr_opt_result_buffer_(s)
+#define _Outptr_opt_result_bytebuffer_(s)
+#define _Outptr_result_buffer_to_(s, c)
+#define _Outptr_result_bytebuffer_to_(s, c)
+#define _Outptr_opt_result_buffer_to_(s, c)
+#define _Outptr_opt_result_bytebuffer_to_(s, c)
+#define _Result_nullonfailure_
+#define _Result_zeroonfailure_
+#define _Outptr_result_nullonfailure_
+#define _Outptr_opt_result_nullonfailure_
+#define _Outref_result_nullonfailure_
+
+// Output reference parameters
+#define _Outref_
+#define _Outref_result_maybenull_
+#define _Outref_result_buffer_(s)
+#define _Outref_result_bytebuffer_(s)
+#define _Outref_result_buffer_to_(s, c)
+#define _Outref_result_bytebuffer_to_(s, c)
+#define _Outref_result_buffer_all_(s)
+#define _Outref_result_bytebuffer_all_(s)
+#define _Outref_result_buffer_maybenull_(s)
+#define _Outref_result_bytebuffer_maybenull_(s)
+#define _Outref_result_buffer_to_maybenull_(s, c)
+#define _Outref_result_bytebuffer_to_maybenull_(s, c)
+#define _Outref_result_buffer_all_maybenull_(s)
+#define _Outref_result_bytebuffer_all_maybenull_(s)
 
+// Return values
+#define _Ret_z_
+#define _Ret_writes_(s)
+#define _Ret_writes_bytes_(s)
+#define _Ret_writes_z_(s)
+#define _Ret_writes_bytes_to_(s, c)
+#define _Ret_writes_maybenull_(s)
+#define _Ret_writes_to_maybenull_(s, c)
+#define _Ret_writes_maybenull_z_(s)
+#define _Ret_maybenull_
+#define _Ret_maybenull_z_
+#define _Ret_null_
+#define _Ret_notnull_
+#define _Ret_writes_bytes_to_(s, c)
+#define _Ret_writes_bytes_maybenull_(s)
+#define _Ret_writes_bytes_to_maybenull_(s, c)
+
+// Other common annotations
+#define _In_range_(low, hi)
+#define _Out_range_(low, hi)
+#define _Ret_range_(low, hi)
+#define _Deref_in_range_(low, hi)
+#define _Deref_out_range_(low, hi)
+#define _Deref_inout_range_(low, hi)
+#define _Field_range_(low, hi)
+#define _Pre_equal_to_(expr)
+#define _Post_equal_to_(expr)
 #define _Struct_size_bytes_(size)
 
+// Function annotations
+#define _Called_from_function_class_(name)
+#define _Check_return_ __checkReturn
+#define _Function_class_(name)
+#define _Raises_SEH_exception_
+#define _Maybe_raises_SEH_exception_
+#define _Must_inspect_result_
+#define _Use_decl_annotations_
+
+// Success/failure annotations
+#define _Always_(anno_list)
+#define _On_failure_(anno_list)
+#define _Return_type_success_(expr)
+#define _Success_(expr)
+
+#define _Reserved_
+#define _Const_
+
+// Buffer properties
+#define _Readable_bytes_(s)
+#define _Readable_elements_(s)
+#define _Writable_bytes_(s)
+#define _Writable_elements_(s)
+#define _Null_terminated_
+#define _NullNull_terminated_
+#define _Pre_readable_size_(s)
+#define _Pre_writable_size_(s)
+#define _Pre_readable_byte_size_(s)
+#define _Pre_writable_byte_size_(s)
+#define _Post_readable_size_(s)
+#define _Post_writable_size_(s)
+#define _Post_readable_byte_size_(s)
+#define _Post_writable_byte_size_(s)
+
+#define _Analysis_assume_(expr)
+
 #endif
 
------------------------------------------------------------------------------
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to