* Sync up to trunk r55544.
[reactos.git] / include / psdk / specstrings.h
1 /*
2 * specstrings.h
3 *
4 * Standard Annotation Language (SAL) definitions
5 *
6 * This file is part of the ReactOS PSDK package.
7 *
8 * Contributors:
9 * Timo Kreuzer (timo.kreuzer@reactos.org)
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #pragma once
24 #define SPECSTRINGS_H
25
26 #include <sal.h>
27 #include <driverspecs.h>
28
29 #define __field_bcount(size) __notnull __byte_writableTo(size)
30 #define __field_ecount(size) __notnull __elem_writableTo(size)
31
32 #define __deref_in
33 #define __deref_in_ecount(size)
34 #define __deref_in_bcount(size)
35 #define __deref_in_opt
36 #define __deref_in_ecount_opt(size)
37 #define __deref_in_bcount_opt(size)
38 #define __deref_opt_in
39 #define __deref_opt_in_ecount(size)
40 #define __deref_opt_in_bcount(size)
41 #define __deref_opt_in_opt
42 #define __deref_opt_in_ecount_opt(size)
43 #define __deref_opt_in_bcount_opt(size)
44 #define __out_awcount(expr,size)
45 #define __in_awcount(expr,size)
46 #define __nullnullterminated
47 #define __in_data_source(src_sym)
48 #define __analysis_noreturn
49 #define __kernel_entry
50
51 #if (_MSC_VER >= 1000) && !defined(__midl) && defined(_PREFAST_)
52
53 #define __inner_data_source(src_raw) _SA_annotes1(SAL_untrusted_data_source,src_raw)
54 #define __out_data_source(src_sym) _Post_ __inner_data_source(#src_sym)
55
56 #else
57
58 #define __out_data_source(src_sym)
59
60 #endif