[NDK] Add SAL 2 annotations, use dummy annotations, if no SAL is available
[reactos.git] / reactos / include / psdk / driverspecs.h
1 /*
2 * PROJECT: ReactOS DDK
3 * COPYRIGHT: This file is in the Public Domain.
4 * FILE: driverspecs.h
5 * ABSTRACT: This header stubs out Driver Verifier annotations to
6 * allow drivers using them to compile with our header set.
7 */
8
9 #pragma once
10 #define DRIVERSPECS_H
11
12 #ifndef SPECSTRINGS_H
13 #include <specstrings.h>
14 #endif
15
16 #include <concurrencysal.h>
17
18 #ifdef _PREFAST_
19
20 // Stubs
21 #define ___drv_unit_internal_kernel_driver
22 #define ___drv_unit_kernel_code
23 #define ___drv_unit_kernel_driver
24 #define ___drv_unit_user_code
25 #define ___drv_unit_user_driver
26 #define __drv_acquiresCancelSpinLock
27 #define __drv_acquiresCriticalRegion
28 #define __drv_acquiresExclusiveResource(kind)
29 #define __drv_acquiresExclusiveResourceGlobal(kind,param)
30 #define __drv_acquiresPriorityRegion
31 #define __drv_acquiresResource(kind)
32 #define __drv_acquiresResourceGlobal(kind,param)
33 #define __drv_aliasesMem _Post_ _SA_annotes0(SAL_IsAliased)
34 #define __drv_allocatesMem(kind) _Post_ _SA_annotes1(SAL_NeedsRelease,__yes)
35 #define __drv_arg(expr,annotes)
36 #define __drv_at(expr,annotes)
37 #define __drv_callbackType(kind)
38 #define __drv_clearDoInit
39 #define __drv_completionType(kindlist)
40 #define __drv_constant
41 #define __drv_defined(x)
42 #define __drv_deref(annotes)
43 #define __drv_dispatchType_other
44 #define __drv_dispatchType(x)
45 #define __drv_floatRestored
46 #define __drv_floatSaved
47 #define __drv_floatUsed
48 #define __drv_formatString(kind)
49 #define __drv_freesMem(kind) _Post_ _SA_annotes1(SAL_NeedsRelease,__no)
50 #define __drv_fun(annotes)
51 #define __drv_functionClass
52 #define __drv_holdsCancelSpinLock()
53 #define __drv_holdsCriticalRegion()
54 #define __drv_holdsPriorityRegion()
55 #define __drv_in_deref(annotes)
56 #define __drv_in(annotes)
57 #define __drv_innerAcquiresGlobal(kind,param)
58 #define __drv_innerMustHoldGlobal(kind,param)
59 #define __drv_innerNeverHoldGlobal(kind,param)
60 #define __drv_innerReleasesGlobal(kind,param)
61 #define __drv_interlocked
62 #define __drv_IoGetDmaAdapter
63 #define __drv_isCancelIRQL
64 #define __drv_isObjectPointer
65 #define __drv_KMDF
66 #define __drv_maxFunctionIRQL
67 #define __drv_maxIRQL
68 #define __drv_minFunctionIRQL
69 #define __drv_minIRQL
70 #define __drv_Mode_impl(x)
71 #define __drv_mustHold(kind)
72 #define __drv_mustHoldCancelSpinLock
73 #define __drv_mustHoldCriticalRegion
74 #define __drv_mustHoldGlobal(kind,param)
75 #define __drv_mustHoldPriorityRegion
76 #define __drv_NDIS
77 #define __drv_neverHold(kind)
78 #define __drv_neverHoldCancelSpinLock
79 #define __drv_neverHoldCriticalRegion
80 #define __drv_neverHoldGlobal(kind,param)
81 #define __drv_neverHoldPriorityRegion
82 #define __drv_nonConstant
83 #define __drv_notInTry
84 #define __drv_notPointer
85 #define __drv_out_deref(annotes)
86 #define __drv_out(annotes)
87 #define __drv_preferredFunction(func,why)
88 #define __drv_raisesIRQL
89 #define __drv_releasesCancelSpinLock
90 #define __drv_releasesCriticalRegion
91 #define __drv_releasesExclusiveResource(kind)
92 #define __drv_releasesExclusiveResourceGlobal(kind,param)
93 #define __drv_releasesPriorityRegion
94 #define __drv_releasesResource(kind)
95 #define __drv_releasesResourceGlobal(kind,param)
96 #define __drv_reportError(why)
97 #define __drv_requiresIRQL
98 #define __drv_restoresIRQL
99 #define __drv_restoresIRQLGlobal
100 #define __drv_ret(annotes)
101 #define __drv_sameIRQL
102 #define __drv_savesIRQL
103 #define __drv_savesIRQLGlobal
104 #define __drv_setsIRQL(irql)
105 #define __drv_strictType(typename,mode)
106 #define __drv_strictTypeMatch(mode)
107 #define __drv_unit(p)
108 #define __drv_useCancelIRQL
109 #define __drv_valueIs(arglist)
110 #define __drv_WDM
111 #define __drv_when(cond,annotes)
112 #define __internal_kernel_driver
113 #define __kernel_code
114 #define __kernel_driver
115 #define __prefast_operator_new_null
116 #define __prefast_operator_new_throws
117 #define __user_code
118 #define __user_driver
119 #define _Dispatch_type_
120 #define _IRQL_always_function_max_(irql)
121 #define _IRQL_always_function_min_(irql)
122 #define _IRQL_is_cancel_
123 #define _IRQL_raises_(irql)
124 #define _IRQL_requires_(irql)
125 #define _IRQL_requires_max_(irql) _Pre_ _SA_annotes1(SAL_maxIRQL,irql)
126 #define _IRQL_requires_max_defined
127 #define _IRQL_requires_min_(irql)
128 #define _IRQL_requires_same_
129 #define _IRQL_restores_
130 #define _IRQL_restores_global_(kind,param)
131 #define _IRQL_saves_
132 #define _IRQL_saves_global_(kind,param)
133 #define _IRQL_uses_cancel_
134 #define _Kernel_clear_do_init_(yesNo)
135 #define _Kernel_float_restored_
136 #define _Kernel_float_saved_
137 #define _Kernel_float_used_
138 #define _Kernel_IoGetDmaAdapter_
139 #define _Kernel_releases_resource_(kind)
140 #define _Kernel_requires_resource_held_(kind)
141 #define _Kernel_requires_resource_not_held_(kind) _Pre_ _SA_annotes1(SAL_neverHold, #kind)
142 #define _Kernel_acquires_resource_(kind) _Post_ _SA_annotes1(SAL_acquire, #kind)
143
144 __ANNOTATION(SAL_maxIRQL(__int64);)
145 __ANNOTATION(SAL_IsAliased(void);)
146 __ANNOTATION(SAL_NeedsRelease(enum __SAL_YesNo);)
147 __ANNOTATION(SAL_neverHold(__In_impl_ char *);)
148 __ANNOTATION(SAL_acquire(__In_impl_ char *);)
149
150 #else
151
152 /* Dummys */
153 #define ___drv_unit_internal_kernel_driver
154 #define ___drv_unit_kernel_code
155 #define ___drv_unit_kernel_driver
156 #define ___drv_unit_user_code
157 #define ___drv_unit_user_driver
158 #define __drv_acquiresCancelSpinLock
159 #define __drv_acquiresCriticalRegion
160 #define __drv_acquiresExclusiveResource(kind)
161 #define __drv_acquiresExclusiveResourceGlobal(kind,param)
162 #define __drv_acquiresPriorityRegion
163 #define __drv_acquiresResource(kind)
164 #define __drv_acquiresResourceGlobal(kind,param)
165 #define __drv_aliasesMem
166 #define __drv_allocatesMem(kind)
167 #define __drv_arg(expr,annotes)
168 #define __drv_at(expr,annotes)
169 #define __drv_callbackType(kind)
170 #define __drv_clearDoInit
171 #define __drv_completionType(kindlist)
172 #define __drv_constant
173 #define __drv_defined(x)
174 #define __drv_deref(annotes)
175 #define __drv_dispatchType_other
176 #define __drv_dispatchType(x)
177 #define __drv_floatRestored
178 #define __drv_floatSaved
179 #define __drv_floatUsed
180 #define __drv_formatString(kind)
181 #define __drv_freesMem(kind)
182 #define __drv_fun(annotes)
183 #define __drv_functionClass
184 #define __drv_holdsCancelSpinLock()
185 #define __drv_holdsCriticalRegion()
186 #define __drv_holdsPriorityRegion()
187 #define __drv_in_deref(annotes)
188 #define __drv_in(annotes)
189 #define __drv_innerAcquiresGlobal(kind,param)
190 #define __drv_innerMustHoldGlobal(kind,param)
191 #define __drv_innerNeverHoldGlobal(kind,param)
192 #define __drv_innerReleasesGlobal(kind,param)
193 #define __drv_interlocked
194 #define __drv_IoGetDmaAdapter
195 #define __drv_isCancelIRQL
196 #define __drv_isObjectPointer
197 #define __drv_KMDF
198 #define __drv_maxFunctionIRQL
199 #define __drv_maxIRQL
200 #define __drv_minFunctionIRQL
201 #define __drv_minIRQL
202 #define __drv_Mode_impl(x)
203 #define __drv_mustHold(kind)
204 #define __drv_mustHoldCancelSpinLock
205 #define __drv_mustHoldCriticalRegion
206 #define __drv_mustHoldGlobal(kind,param)
207 #define __drv_mustHoldPriorityRegion
208 #define __drv_NDIS
209 #define __drv_neverHold(kind)
210 #define __drv_neverHoldCancelSpinLock
211 #define __drv_neverHoldCriticalRegion
212 #define __drv_neverHoldGlobal(kind,param)
213 #define __drv_neverHoldPriorityRegion
214 #define __drv_nonConstant
215 #define __drv_notInTry
216 #define __drv_notPointer
217 #define __drv_out_deref(annotes)
218 #define __drv_out(annotes)
219 #define __drv_preferredFunction(func,why)
220 #define __drv_raisesIRQL
221 #define __drv_releasesCancelSpinLock
222 #define __drv_releasesCriticalRegion
223 #define __drv_releasesExclusiveResource(kind)
224 #define __drv_releasesExclusiveResourceGlobal(kind,param)
225 #define __drv_releasesPriorityRegion
226 #define __drv_releasesResource(kind)
227 #define __drv_releasesResourceGlobal(kind,param)
228 #define __drv_reportError(why)
229 #define __drv_requiresIRQL
230 #define __drv_restoresIRQL
231 #define __drv_restoresIRQLGlobal
232 #define __drv_ret(annotes)
233 #define __drv_sameIRQL
234 #define __drv_savesIRQL
235 #define __drv_savesIRQLGlobal
236 #define __drv_setsIRQL(irql)
237 #define __drv_strictType(typename,mode)
238 #define __drv_strictTypeMatch(mode)
239 #define __drv_unit(p)
240 #define __drv_useCancelIRQL
241 #define __drv_valueIs(arglist)
242 #define __drv_WDM
243 #define __drv_when(cond,annotes)
244 #define __internal_kernel_driver
245 #define __kernel_code
246 #define __kernel_driver
247 #define __prefast_operator_new_null
248 #define __prefast_operator_new_throws
249 #define __user_code
250 #define __user_driver
251 #define _Dispatch_type_
252 #define _IRQL_always_function_max_(irql)
253 #define _IRQL_always_function_min_(irql)
254 #define _IRQL_is_cancel_
255 #define _IRQL_raises_(irql)
256 #define _IRQL_requires_(irql)
257 #define _IRQL_requires_max_(irql)
258 #define _IRQL_requires_min_(irql)
259 #define _IRQL_requires_same_
260 #define _IRQL_restores_
261 #define _IRQL_restores_global_(kind,param)
262 #define _IRQL_saves_
263 #define _IRQL_saves_global_(kind,param)
264 #define _IRQL_uses_cancel_
265 #define _Kernel_clear_do_init_(yesNo)
266 #define _Kernel_float_restored_
267 #define _Kernel_float_saved_
268 #define _Kernel_float_used_
269 #define _Kernel_IoGetDmaAdapter_
270 #define _Kernel_releases_resource_(kind)
271 #define _Kernel_requires_resource_held_(kind)
272 #define _Kernel_requires_resource_not_held_(kind)
273 #define _Kernel_acquires_resource_(kind)
274
275 #endif
276