1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 
6 /***
7 *       no_sal2.h - renders the SAL annotations for documenting APIs harmless.
8 *
9 
10 *
11 *Purpose:
12 *       sal.h provides a set of SAL2 annotations to describe how a function uses its
13 *       parameters - the assumptions it makes about them, and the guarantees it makes
14 *       upon finishing. This file redefines all those annotation macros to be harmless.
15 *       It is designed for use in down-level build environments where the tooling may
16 *       be unhappy with the standard SAL2 macro definitions.
17 *
18 *       [Public]
19 *
20 
21 *
22 ****/
23 
24 #ifndef _NO_SAL_2_H_
25 #define _NO_SAL_2_H_
26 
27 #undef _When_
28 #define _When_(c,a)
29 #undef _At_
30 #define _At_(t,a)
31 #undef _At_buffer_
32 #define _At_buffer_(t,i,c,a)
33 #undef _Group_
34 #define _Group_(a)
35 #undef _Pre_
36 #define _Pre_
37 #undef _Post_
38 #define _Post_
39 #undef _Deref_
40 #define _Deref_
41 #undef _Null_
42 #define _Null_
43 #undef _Notnull_
44 #define _Notnull_
45 #undef _Maybenull_
46 #define _Maybenull_
47 #undef _Const_
48 #define _Const_
49 #undef _Check_return_
50 #define _Check_return_
51 #undef _Must_inspect_result_
52 #define _Must_inspect_result_
53 #undef _Pre_satisfies_
54 #define _Pre_satisfies_(e)
55 #undef _Post_satisfies_
56 #define _Post_satisfies_(e)
57 #undef _Writable_elements_
58 #define _Writable_elements_(s)
59 #undef _Writable_bytes_
60 #define _Writable_bytes_(s)
61 #undef _Readable_elements_
62 #define _Readable_elements_(s)
63 #undef _Readable_bytes_
64 #define _Readable_bytes_(s)
65 #undef _Null_terminated_
66 #define _Null_terminated_
67 #undef _NullNull_terminated_
68 #define _NullNull_terminated_
69 #undef _Valid_
70 #define _Valid_
71 #undef _Notvalid_
72 #define _Notvalid_
73 #undef _Success_
74 #define _Success_(c)
75 #undef _Return_type_success_
76 #define _Return_type_success_(c)
77 #undef _On_failure_
78 #define _On_failure_(a)
79 #undef _Always_
80 #define _Always_(a)
81 #undef _Use_decl_annotations_
82 #define _Use_decl_annotations_
83 #undef _Pre_defensive_
84 #define _Pre_defensive_
85 #undef _Post_defensive_
86 #define _Post_defensive_
87 #undef _Pre_unknown_
88 #define _Pre_unknown_
89 #undef _Acquires_lock_
90 #define _Acquires_lock_(e)
91 #undef _Releases_lock_
92 #define _Releases_lock_(e)
93 #undef _Requires_lock_held_
94 #define _Requires_lock_held_(e)
95 #undef _Requires_lock_not_held_
96 #define _Requires_lock_not_held_(e)
97 #undef _Requires_no_locks_held_
98 #define _Requires_no_locks_held_
99 #undef _Guarded_by_
100 #define _Guarded_by_(e)
101 #undef _Write_guarded_by_
102 #define _Write_guarded_by_(e)
103 #undef _Interlocked_
104 #define _Interlocked_
105 #undef _Post_same_lock_
106 #define _Post_same_lock_(e1,e2)
107 #undef _Benign_race_begin_
108 #define _Benign_race_begin_
109 #undef _Benign_race_end_
110 #define _Benign_race_end_
111 #undef _No_competing_thread_
112 #define _No_competing_thread_
113 #undef _No_competing_thread_begin_
114 #define _No_competing_thread_begin_
115 #undef _No_competing_thread_end_
116 #define _No_competing_thread_end_
117 #undef _Acquires_shared_lock_
118 #define _Acquires_shared_lock_(e)
119 #undef _Releases_shared_lock_
120 #define _Releases_shared_lock_(e)
121 #undef _Requires_shared_lock_held_
122 #define _Requires_shared_lock_held_(e)
123 #undef _Acquires_exclusive_lock_
124 #define _Acquires_exclusive_lock_(e)
125 #undef _Releases_exclusive_lock_
126 #define _Releases_exclusive_lock_(e)
127 #undef _Requires_exclusive_lock_held_
128 #define _Requires_exclusive_lock_held_(e)
129 #undef _Has_lock_kind_
130 #define _Has_lock_kind_(n)
131 #undef _Create_lock_level_
132 #define _Create_lock_level_(n)
133 #undef _Has_lock_level_
134 #define _Has_lock_level_(n)
135 #undef _Lock_level_order_
136 #define _Lock_level_order_(n1,n2)
137 #undef _Analysis_assume_lock_acquired_
138 #define _Analysis_assume_lock_acquired_(e)
139 #undef _Analysis_assume_lock_released_
140 #define _Analysis_assume_lock_released_(e)
141 #undef _Analysis_assume_lock_held_
142 #define _Analysis_assume_lock_held_(e)
143 #undef _Analysis_assume_lock_not_held_
144 #define _Analysis_assume_lock_not_held_(e)
145 #undef _Analysis_assume_same_lock_
146 #define _Analysis_assume_same_lock_(e)
147 #undef _In_
148 #define _In_
149 #undef _Out_
150 #define _Out_
151 #undef _Inout_
152 #define _Inout_
153 #undef _In_z_
154 #define _In_z_
155 #undef _Inout_z_
156 #define _Inout_z_
157 #undef _In_reads_
158 #define _In_reads_(s)
159 #undef _In_reads_bytes_
160 #define _In_reads_bytes_(s)
161 #undef _In_reads_z_
162 #define _In_reads_z_(s)
163 #undef _In_reads_or_z_
164 #define _In_reads_or_z_(s)
165 #undef _Out_writes_
166 #define _Out_writes_(s)
167 #undef _Out_writes_bytes_
168 #define _Out_writes_bytes_(s)
169 #undef _Out_writes_z_
170 #define _Out_writes_z_(s)
171 #undef _Inout_updates_
172 #define _Inout_updates_(s)
173 #undef _Inout_updates_bytes_
174 #define _Inout_updates_bytes_(s)
175 #undef _Inout_updates_z_
176 #define _Inout_updates_z_(s)
177 #undef _Out_writes_to_
178 #define _Out_writes_to_(s,c)
179 #undef _Out_writes_bytes_to_
180 #define _Out_writes_bytes_to_(s,c)
181 #undef _Out_writes_all_
182 #define _Out_writes_all_(s)
183 #undef _Out_writes_bytes_all_
184 #define _Out_writes_bytes_all_(s)
185 #undef _Inout_updates_to_
186 #define _Inout_updates_to_(s,c)
187 #undef _Inout_updates_bytes_to_
188 #define _Inout_updates_bytes_to_(s,c)
189 #undef _Inout_updates_all_
190 #define _Inout_updates_all_(s)
191 #undef _Inout_updates_bytes_all_
192 #define _Inout_updates_bytes_all_(s)
193 #undef _In_reads_to_ptr_
194 #define _In_reads_to_ptr_(p)
195 #undef _In_reads_to_ptr_z_
196 #define _In_reads_to_ptr_z_(p)
197 #undef _Out_writes_to_ptr_
198 #define _Out_writes_to_ptr_(p)
199 #undef _Out_writes_to_ptr_z_
200 #define _Out_writes_to_ptr_z_(p)
201 #undef _In_opt_
202 #define _In_opt_
203 #undef _Out_opt_
204 #define _Out_opt_
205 #undef _Inout_opt_
206 #define _Inout_opt_
207 #undef _In_opt_z_
208 #define _In_opt_z_
209 #undef _Inout_opt_z_
210 #define _Inout_opt_z_
211 #undef _In_reads_opt_
212 #define _In_reads_opt_(s)
213 #undef _In_reads_bytes_opt_
214 #define _In_reads_bytes_opt_(s)
215 #undef _Out_writes_opt_
216 #define _Out_writes_opt_(s)
217 #undef _Out_writes_bytes_opt_
218 #define _Out_writes_bytes_opt_(s)
219 #undef _Out_writes_opt_z_
220 #define _Out_writes_opt_z_(s)
221 #undef _Inout_updates_opt_
222 #define _Inout_updates_opt_(s)
223 #undef _Inout_updates_bytes_opt_
224 #define _Inout_updates_bytes_opt_(s)
225 #undef _Inout_updates_opt_z_
226 #define _Inout_updates_opt_z_(s)
227 #undef _Out_writes_to_opt_
228 #define _Out_writes_to_opt_(s,c)
229 #undef _Out_writes_bytes_to_opt_
230 #define _Out_writes_bytes_to_opt_(s,c)
231 #undef _Out_writes_all_opt_
232 #define _Out_writes_all_opt_(s)
233 #undef _Out_writes_bytes_all_opt_
234 #define _Out_writes_bytes_all_opt_(s)
235 #undef _Inout_updates_to_opt_
236 #define _Inout_updates_to_opt_(s,c)
237 #undef _Inout_updates_bytes_to_opt_
238 #define _Inout_updates_bytes_to_opt_(s,c)
239 #undef _Inout_updates_all_opt_
240 #define _Inout_updates_all_opt_(s)
241 #undef _Inout_updates_bytes_all_opt_
242 #define _Inout_updates_bytes_all_opt_(s)
243 #undef _In_reads_to_ptr_opt_
244 #define _In_reads_to_ptr_opt_(p)
245 #undef _In_reads_to_ptr_opt_z_
246 #define _In_reads_to_ptr_opt_z_(p)
247 #undef _Out_writes_to_ptr_opt_
248 #define _Out_writes_to_ptr_opt_(p)
249 #undef _Out_writes_to_ptr_opt_z_
250 #define _Out_writes_to_ptr_opt_z_(p)
251 #undef _Outptr_
252 #define _Outptr_
253 #undef _Outptr_opt_
254 #define _Outptr_opt_
255 #undef _Outptr_result_maybenull_
256 #define _Outptr_result_maybenull_
257 #undef _Outptr_opt_result_maybenull_
258 #define _Outptr_opt_result_maybenull_
259 #undef _Outptr_z_
260 #define _Outptr_z_
261 #undef _Outptr_opt_z_
262 #define _Outptr_opt_z_
263 #undef _Outptr_result_maybenull_z_
264 #define _Outptr_result_maybenull_z_
265 #undef _Outptr_opt_result_maybenull_z_
266 #define _Outptr_opt_result_maybenull_z_
267 #undef _COM_Outptr_
268 #define _COM_Outptr_
269 #undef _COM_Outptr_opt_
270 #define _COM_Outptr_opt_
271 #undef _COM_Outptr_result_maybenull_
272 #define _COM_Outptr_result_maybenull_
273 #undef _COM_Outptr_opt_result_maybenull_
274 #define _COM_Outptr_opt_result_maybenull_
275 #undef _Outptr_result_buffer_
276 #define _Outptr_result_buffer_(s)
277 #undef _Outptr_result_bytebuffer_
278 #define _Outptr_result_bytebuffer_(s)
279 #undef _Outptr_opt_result_buffer_
280 #define _Outptr_opt_result_buffer_(s)
281 #undef _Outptr_opt_result_bytebuffer_
282 #define _Outptr_opt_result_bytebuffer_(s)
283 #undef _Outptr_result_buffer_to_
284 #define _Outptr_result_buffer_to_(s,c)
285 #undef _Outptr_result_bytebuffer_to_
286 #define _Outptr_result_bytebuffer_to_(s,c)
287 #undef _Outptr_opt_result_buffer_to_
288 #define _Outptr_opt_result_buffer_to_(s,c)
289 #undef _Outptr_opt_result_bytebuffer_to_
290 #define _Outptr_opt_result_bytebuffer_to_(s,c)
291 #undef _Ret_
292 #define _Ret_
293 #undef _Ret_valid_
294 #define _Ret_valid_
295 #undef _Ret_z_
296 #define _Ret_z_
297 #undef _Ret_writes_
298 #define _Ret_writes_(s)
299 #undef _Ret_writes_bytes_
300 #define _Ret_writes_bytes_(s)
301 #undef _Ret_writes_z_
302 #define _Ret_writes_z_(s)
303 #undef _Ret_writes_to_
304 #define _Ret_writes_to_(s,c)
305 #undef _Ret_writes_bytes_to_
306 #define _Ret_writes_bytes_to_(s,c)
307 #undef _Ret_writes_maybenull_
308 #define _Ret_writes_maybenull_(s)
309 #undef _Ret_writes_bytes_maybenull_
310 #define _Ret_writes_bytes_maybenull_(s)
311 #undef _Ret_writes_to_maybenull_
312 #define _Ret_writes_to_maybenull_(s,c)
313 #undef _Ret_writes_bytes_to_maybenull_
314 #define _Ret_writes_bytes_to_maybenull_(s,c)
315 #undef _Ret_writes_maybenull_z_
316 #define _Ret_writes_maybenull_z_(s)
317 #undef _Ret_maybenull_
318 #define _Ret_maybenull_
319 #undef _Ret_maybenull_z_
320 #define _Ret_maybenull_z_
321 #undef _Field_size_
322 #define _Field_size_(s)
323 #undef _Field_size_opt_
324 #define _Field_size_opt_(s)
325 #undef _Field_size_bytes_
326 #define _Field_size_bytes_(s)
327 #undef _Field_size_bytes_opt_
328 #define _Field_size_bytes_opt_(s)
329 #undef _Field_size_part_
330 #define _Field_size_part_(s,c)
331 #undef _Field_size_part_opt_
332 #define _Field_size_part_opt_(s,c)
333 #undef _Field_size_bytes_part_
334 #define _Field_size_bytes_part_(s,c)
335 #undef _Field_size_bytes_part_opt_
336 #define _Field_size_bytes_part_opt_(s,c)
337 #undef _Field_size_full_
338 #define _Field_size_full_(s)
339 #undef _Field_size_full_opt_
340 #define _Field_size_full_opt_(s)
341 #undef _Field_size_bytes_full_
342 #define _Field_size_bytes_full_(s)
343 #undef _Field_size_bytes_full_opt_
344 #define _Field_size_bytes_full_opt_(s)
345 #undef _Printf_format_string_
346 #define _Printf_format_string_
347 #undef _Scanf_format_string_
348 #define _Scanf_format_string_
349 #undef _Scanf_s_format_string_
350 #define _Scanf_s_format_string_
351 #undef _Printf_format_string_params_
352 #define _Printf_format_string_params_(x)
353 #undef _Scanf_format_string_params_
354 #define _Scanf_format_string_params_(x)
355 #undef _Scanf_s_format_string_params_
356 #define _Scanf_s_format_string_params_(x)
357 #undef _In_range_
358 #define _In_range_(l,h)
359 #undef _Out_range_
360 #define _Out_range_(l,h)
361 #undef _Ret_range_
362 #define _Ret_range_(l,h)
363 #undef _Deref_in_range_
364 #define _Deref_in_range_(l,h)
365 #undef _Deref_out_range_
366 #define _Deref_out_range_(l,h)
367 #undef _Deref_inout_range_
368 #define _Deref_inout_range_(l,h)
369 #undef _Field_range_
370 #define _Field_range_(l,h)
371 #undef _Pre_equal_to_
372 #define _Pre_equal_to_(e)
373 #undef _Post_equal_to_
374 #define _Post_equal_to_(e)
375 #undef _Struct_size_bytes_
376 #define _Struct_size_bytes_(s)
377 #undef _Analysis_assume_
378 #define _Analysis_assume_
379 #undef _Analysis_mode_
380 #define _Analysis_mode_(m)
381 #undef _Analysis_noreturn_
382 #define _Analysis_noreturn_
383 #undef _Raises_SEH_exception_
384 #define _Raises_SEH_exception_
385 #undef _Maybe_raises_SEH_exception_
386 #define _Maybe_raises_SEH_exception_
387 #undef _Function_class_
388 #define _Function_class_(n)
389 #undef _Literal_
390 #define _Literal_
391 #undef _Notliteral_
392 #define _Notliteral_
393 #undef _Enum_is_bitflag_
394 #define _Enum_is_bitflag_
395 #undef _Strict_type_match_
396 #define _Strict_type_match_
397 #undef _Points_to_data_
398 #define _Points_to_data_
399 #undef _Interlocked_operand_
400 #define _Interlocked_operand_
401 #undef _IRQL_raises_
402 #define _IRQL_raises_(i)
403 #undef _IRQL_requires_
404 #define _IRQL_requires_(i)
405 #undef _IRQL_requires_max_
406 #define _IRQL_requires_max_(i)
407 #undef _IRQL_requires_min_
408 #define _IRQL_requires_min_(i)
409 #undef _IRQL_saves_
410 #define _IRQL_saves_
411 #undef _IRQL_saves_global_
412 #define _IRQL_saves_global_(k,s)
413 #undef _IRQL_restores_
414 #define _IRQL_restores_
415 #undef _IRQL_restores_global_
416 #define _IRQL_restores_global_(k,s)
417 #undef _IRQL_always_function_min_
418 #define _IRQL_always_function_min_(i)
419 #undef _IRQL_always_function_max_
420 #define _IRQL_always_function_max_(i)
421 #undef _IRQL_requires_same_
422 #define _IRQL_requires_same_
423 #undef _IRQL_uses_cancel_
424 #define _IRQL_uses_cancel_
425 #undef _IRQL_is_cancel_
426 #define _IRQL_is_cancel_
427 #undef _Kernel_float_saved_
428 #define _Kernel_float_saved_
429 #undef _Kernel_float_restored_
430 #define _Kernel_float_restored_
431 #undef _Kernel_float_used_
432 #define _Kernel_float_used_
433 #undef _Kernel_acquires_resource_
434 #define _Kernel_acquires_resource_(k)
435 #undef _Kernel_releases_resource_
436 #define _Kernel_releases_resource_(k)
437 #undef _Kernel_requires_resource_held_
438 #define _Kernel_requires_resource_held_(k)
439 #undef _Kernel_requires_resource_not_held_
440 #define _Kernel_requires_resource_not_held_(k)
441 #undef _Kernel_clear_do_init_
442 #define _Kernel_clear_do_init_(yn)
443 #undef _Kernel_IoGetDmaAdapter_
444 #define _Kernel_IoGetDmaAdapter_
445 #undef _Outref_
446 #define _Outref_
447 #undef _Outref_result_maybenull_
448 #define _Outref_result_maybenull_
449 #undef _Outref_result_buffer_
450 #define _Outref_result_buffer_(s)
451 #undef _Outref_result_bytebuffer_
452 #define _Outref_result_bytebuffer_(s)
453 #undef _Outref_result_buffer_to_
454 #define _Outref_result_buffer_to_(s,c)
455 #undef _Outref_result_bytebuffer_to_
456 #define _Outref_result_bytebuffer_to_(s,c)
457 #undef _Outref_result_buffer_all_
458 #define _Outref_result_buffer_all_(s)
459 #undef _Outref_result_bytebuffer_all_
460 #define _Outref_result_bytebuffer_all_(s)
461 #undef _Outref_result_buffer_maybenull_
462 #define _Outref_result_buffer_maybenull_(s)
463 #undef _Outref_result_bytebuffer_maybenull_
464 #define _Outref_result_bytebuffer_maybenull_(s)
465 #undef _Outref_result_buffer_to_maybenull_
466 #define _Outref_result_buffer_to_maybenull_(s,c)
467 #undef _Outref_result_bytebuffer_to_maybenull_
468 #define _Outref_result_bytebuffer_to_maybenull_(s,c)
469 #undef _Outref_result_buffer_all_maybenull_
470 #define _Outref_result_buffer_all_maybenull_(s)
471 #undef _Outref_result_bytebuffer_all_maybenull_
472 #define _Outref_result_bytebuffer_all_maybenull_(s)
473 #undef _In_defensive_
474 #define _In_defensive_(a)
475 #undef _Out_defensive_
476 #define _Out_defensive_(a)
477 #undef _Inout_defensive_
478 #define _Inout_defensive_(a)
479 #undef _Outptr_result_nullonfailure_
480 #define _Outptr_result_nullonfailure_
481 #undef _Outptr_opt_result_nullonfailure_
482 #define _Outptr_opt_result_nullonfailure_
483 #undef _Outref_result_nullonfailure_
484 #define _Outref_result_nullonfailure_
485 #undef _Result_nullonfailure_
486 #define _Result_nullonfailure_
487 #undef _Result_zeroonfailure_
488 #define _Result_zeroonfailure_
489 #undef _Acquires_nonreentrant_lock_
490 #define _Acquires_nonreentrant_lock_(e)
491 #undef _Releases_nonreentrant_lock_
492 #define _Releases_nonreentrant_lock_(e)
493 #undef _Reserved_
494 #define _Reserved_           _Pre_equal_to_(0) _Pre_ _Null_
495 #undef _Pre_z_
496 #define _Pre_z_              _Pre_ _Null_terminated_
497 #undef _Post_z_
498 #define _Post_z_             _Post_ _Null_terminated_
499 #undef _Prepost_z_
500 #define _Prepost_z_          _Pre_z_ _Post_z_
501 #undef _Pre_null_
502 #define _Pre_null_           _Pre_ _Null_
503 #undef _Pre_maybenull_
504 #define _Pre_maybenull_      _Pre_ _Maybenull_
505 #undef _Pre_notnull_
506 #define _Pre_notnull_        _Pre_ _Notnull_
507 #undef _Pre_valid_
508 #define _Pre_valid_          _Pre_notnull_ _Pre_ _Valid_
509 #undef _Pre_opt_valid_
510 #define _Pre_opt_valid_      _Pre_maybenull_ _Pre_ _Valid_
511 #undef _Post_valid_
512 #define _Post_valid_         _Post_ _Valid_
513 #undef _Post_invalid_
514 #define _Post_invalid_       _Post_ _Deref_ _Notvalid_
515 #undef _Post_ptr_invalid_
516 #define _Post_ptr_invalid_   _Post_ _Notvalid_
517 #undef _Pre_readable_size_
518 #define _Pre_readable_size_(s)      _Pre_ _Readable_elements_(s) _Pre_ _Valid_
519 #undef _Pre_writable_size_
520 #define _Pre_writable_size_(s)      _Pre_ _Writable_elements_(s)
521 #undef _Pre_readable_byte_size_
522 #define _Pre_readable_byte_size_(s) _Pre_ _Readable_bytes_(s) _Pre_ _Valid_
523 #undef _Pre_writable_byte_size_
524 #define _Pre_writable_byte_size_(s) _Pre_ _Writable_bytes_(s)
525 #undef _Post_readable_size_
526 #define _Post_readable_size_(s)     _Post_ _Readable_elements_(s) _Post_ _Valid_
527 #undef _Post_writable_size_
528 #define _Post_writable_size_(s)     _Post_ _Writable_elements_(s)
529 #undef _Post_readable_byte_size_
530 #define _Post_readable_byte_size_(s) _Post_ _Readable_bytes_(s) _Post_ _Valid_
531 #undef _Post_writable_byte_size_
532 #define _Post_writable_byte_size_(s) _Post_ _Writable_bytes_(s)
533 
534 #endif /* _NO_SAL_2_H_ */
535