39#ifndef __SPECSTRINGS_STRICT_LEVEL
40#define __SPECSTRINGS_STRICT_LEVEL 1
198#if (_MSC_VER >= 1400) && !defined(__midl) && !defined(_PREFAST_) && (__SPECSTRINGS_STRICT_LEVEL > 0)
201#define __ecount(size) _SAL_VERSION_CHECK(__ecount)
202#define __bcount(size) _SAL_VERSION_CHECK(__bcount)
203#define __xcount(size) _SAL_VERSION_CHECK(__xcount)
204#define __in _SAL_VERSION_CHECK(__in)
205#define __in_ecount(size) _SAL_VERSION_CHECK(__in_ecount)
206#define __in_bcount(size) _SAL_VERSION_CHECK(__in_bcount)
207#define __in_xcount(size) _SAL_VERSION_CHECK(__in_xcount)
208#define __in_z _SAL_VERSION_CHECK(__in_z)
209#define __in_ecount_z(size) _SAL_VERSION_CHECK(__in_ecount_z)
210#define __in_bcount_z(size) _SAL_VERSION_CHECK(__in_bcount_z)
211#define __out _SAL_VERSION_CHECK(__out)
212#define __out_ecount(size) _SAL_VERSION_CHECK(__out_ecount)
213#define __out_bcount(size) _SAL_VERSION_CHECK(__out_bcount)
214#define __out_xcount(size) _SAL_VERSION_CHECK(__out_xcount)
215#define __out_ecount_part(size,len) _SAL_VERSION_CHECK(__out_ecount_part)
216#define __out_bcount_part(size,len) _SAL_VERSION_CHECK(__out_bcount_part)
217#define __out_xcount_part(size,len) _SAL_VERSION_CHECK(__out_xcount_part)
218#define __out_ecount_full(size) _SAL_VERSION_CHECK(__out_ecount_full)
219#define __out_bcount_full(size) _SAL_VERSION_CHECK(__out_bcount_full)
220#define __out_xcount_full(size) _SAL_VERSION_CHECK(__out_xcount_full)
221#define __out_z _SAL_VERSION_CHECK(__out_z)
222#define __out_ecount_z(size) _SAL_VERSION_CHECK(__out_ecount_z)
223#define __out_bcount_z(size) _SAL_VERSION_CHECK(__out_bcount_z)
224#define __inout _SAL_VERSION_CHECK(__inout)
225#define __inout_ecount(size) _SAL_VERSION_CHECK(__inout_ecount)
226#define __inout_bcount(size) _SAL_VERSION_CHECK(__inout_bcount)
227#define __inout_xcount(size) _SAL_VERSION_CHECK(__inout_xcount)
228#define __inout_ecount_part(size,len) _SAL_VERSION_CHECK(__inout_ecount_part)
229#define __inout_bcount_part(size,len) _SAL_VERSION_CHECK(__inout_bcount_part)
230#define __inout_xcount_part(size,len) _SAL_VERSION_CHECK(__inout_xcount_part)
231#define __inout_ecount_full(size) _SAL_VERSION_CHECK(__inout_ecount_full)
232#define __inout_bcount_full(size) _SAL_VERSION_CHECK(__inout_bcount_full)
233#define __inout_xcount_full(size) _SAL_VERSION_CHECK(__inout_xcount_full)
234#define __inout_z __allowed(on_parameter)
235#define __inout_ecount_z(size) __allowed(on_parameter)
236#define __inout_bcount_z(size) __allowed(on_parameter)
237#define __ecount_opt(size) __allowed(on_parameter)
238#define __bcount_opt(size) __allowed(on_parameter)
239#define __xcount_opt(size) __allowed(on_parameter)
240#define __in_opt _SAL_VERSION_CHECK(__in_opt)
241#define __in_ecount_opt(size) _SAL_VERSION_CHECK(__in_ecount_opt)
242#define __in_bcount_opt(size) _SAL_VERSION_CHECK(__in_bcount_opt)
243#define __in_z_opt __allowed(on_parameter)
244#define __in_ecount_z_opt(size) __allowed(on_parameter)
245#define __in_bcount_z_opt(size) __allowed(on_parameter)
246#define __in_xcount_opt(size) __allowed(on_parameter)
247#define __out_opt _SAL_VERSION_CHECK(__out_opt)
248#define __out_ecount_opt(size) _SAL_VERSION_CHECK(__out_ecount_opt)
249#define __out_bcount_opt(size) _SAL_VERSION_CHECK(__out_bcount_opt)
250#define __out_xcount_opt(size) __allowed(on_parameter)
251#define __out_ecount_part_opt(size,len) __allowed(on_parameter)
252#define __out_bcount_part_opt(size,len) __allowed(on_parameter)
253#define __out_xcount_part_opt(size,len) __allowed(on_parameter)
254#define __out_ecount_full_opt(size) __allowed(on_parameter)
255#define __out_bcount_full_opt(size) __allowed(on_parameter)
256#define __out_xcount_full_opt(size) __allowed(on_parameter)
257#define __out_ecount_z_opt(size) __allowed(on_parameter)
258#define __out_bcount_z_opt(size) __allowed(on_parameter)
259#define __inout_opt _SAL_VERSION_CHECK(__inout_opt)
260#define __inout_ecount_opt(size) _SAL_VERSION_CHECK(__inout_ecount_opt)
261#define __inout_bcount_opt(size) _SAL_VERSION_CHECK(__inout_bcount_opt)
262#define __inout_xcount_opt(size) _SAL_VERSION_CHECK(__inout_xcount_opt)
263#define __inout_ecount_part_opt(size,len) _SAL_VERSION_CHECK(__inout_ecount_part_opt)
264#define __inout_bcount_part_opt(size,len) _SAL_VERSION_CHECK(__inout_bcount_part_opt)
265#define __inout_xcount_part_opt(size,len) _SAL_VERSION_CHECK(__inout_xcount_part_opt)
266#define __inout_ecount_full_opt(size) _SAL_VERSION_CHECK(__inout_ecount_full_opt)
267#define __inout_bcount_full_opt(size) _SAL_VERSION_CHECK(__inout_bcount_full_opt)
268#define __inout_xcount_full_opt(size) _SAL_VERSION_CHECK(__inout_xcount_full_opt)
269#define __inout_z_opt __allowed(on_parameter)
270#define __inout_ecount_z_opt(size) __allowed(on_parameter)
271#define __inout_ecount_z_opt(size) __allowed(on_parameter)
272#define __inout_bcount_z_opt(size) __allowed(on_parameter)
273#define __deref_ecount(size) __allowed(on_parameter)
274#define __deref_bcount(size) __allowed(on_parameter)
275#define __deref_xcount(size) __allowed(on_parameter)
276#define __deref_in _SAL_VERSION_CHECK(__deref_in)
277#define __deref_in_ecount(size) _SAL_VERSION_CHECK(__deref_in_ecount)
278#define __deref_in_bcount(size) _SAL_VERSION_CHECK(__deref_in_bcount)
279#define __deref_in_xcount(size) _SAL_VERSION_CHECK(__deref_in_xcount)
280#define __deref_out _SAL_VERSION_CHECK(__deref_out)
281#define __deref_out_ecount(size) _SAL_VERSION_CHECK(__deref_out_ecount)
282#define __deref_out_bcount(size) _SAL_VERSION_CHECK(__deref_out_bcount)
283#define __deref_out_xcount(size) _SAL_VERSION_CHECK(__deref_out_xcount)
284#define __deref_out_ecount_part(size,len) _SAL_VERSION_CHECK(__deref_out_ecount_part)
285#define __deref_out_bcount_part(size,len) _SAL_VERSION_CHECK(__deref_out_bcount_part)
286#define __deref_out_xcount_part(size,len) _SAL_VERSION_CHECK(__deref_out_xcount_part)
287#define __deref_out_ecount_full(size) _SAL_VERSION_CHECK(__deref_out_ecount_full)
288#define __deref_out_bcount_full(size) _SAL_VERSION_CHECK(__deref_out_bcount_full)
289#define __deref_out_xcount_full(size) _SAL_VERSION_CHECK(__deref_out_xcount_full)
290#define __deref_out_z __allowed(on_parameter)
291#define __deref_out_ecount_z(size) __allowed(on_parameter)
292#define __deref_out_bcount_z(size) __allowed(on_parameter)
293#define __deref_inout _SAL_VERSION_CHECK(__deref_inout)
294#define __deref_inout_ecount(size) _SAL_VERSION_CHECK(__deref_inout_ecount)
295#define __deref_inout_bcount(size) _SAL_VERSION_CHECK(__deref_inout_bcount)
296#define __deref_inout_xcount(size) _SAL_VERSION_CHECK(__deref_inout_xcount)
297#define __deref_inout_ecount_part(size,len) __allowed(on_parameter)
298#define __deref_inout_bcount_part(size,len) __allowed(on_parameter)
299#define __deref_inout_xcount_part(size,len) __allowed(on_parameter)
300#define __deref_inout_ecount_full(size) __allowed(on_parameter)
301#define __deref_inout_bcount_full(size) __allowed(on_parameter)
302#define __deref_inout_xcount_full(size) __allowed(on_parameter)
303#define __deref_inout_z __allowed(on_parameter)
304#define __deref_inout_ecount_z(size) __allowed(on_parameter)
305#define __deref_inout_bcount_z(size) __allowed(on_parameter)
306#define __deref_ecount_opt(size) __allowed(on_parameter)
307#define __deref_bcount_opt(size) __allowed(on_parameter)
308#define __deref_xcount_opt(size) __allowed(on_parameter)
309#define __deref_in_opt __allowed(on_parameter)
310#define __deref_in_opt_out __allowed(on_parameter)
311#define __deref_in_ecount_opt(size) __allowed(on_parameter)
312#define __deref_in_bcount_opt(size) __allowed(on_parameter)
313#define __deref_in_xcount_opt(size) __allowed(on_parameter)
314#define __deref_out_opt _SAL_VERSION_CHECK(__deref_out_opt)
315#define __deref_out_ecount_opt(size) _SAL_VERSION_CHECK(__deref_out_ecount_opt)
316#define __deref_out_bcount_opt(size) _SAL_VERSION_CHECK(__deref_out_bcount_opt)
317#define __deref_out_xcount_opt(size) _SAL_VERSION_CHECK(__deref_out_xcount_opt)
318#define __deref_out_ecount_part_opt(size,len) _SAL_VERSION_CHECK(__deref_out_ecount_part_opt)
319#define __deref_out_bcount_part_opt(size,len) _SAL_VERSION_CHECK(__deref_out_bcount_part_opt)
320#define __deref_out_xcount_part_opt(size,len) _SAL_VERSION_CHECK(__deref_out_xcount_part_opt)
321#define __deref_out_ecount_full_opt(size) _SAL_VERSION_CHECK(__deref_out_ecount_full_opt)
322#define __deref_out_bcount_full_opt(size) _SAL_VERSION_CHECK(__deref_out_bcount_full_opt)
323#define __deref_out_xcount_full_opt(size) _SAL_VERSION_CHECK(__deref_out_xcount_full_opt)
324#define __deref_out_z_opt __allowed(on_parameter)
325#define __deref_out_ecount_z_opt(size) __allowed(on_parameter)
326#define __deref_out_bcount_z_opt(size) __allowed(on_parameter)
327#define __deref_inout_opt __allowed(on_parameter)
328#define __deref_inout_ecount_opt(size) __allowed(on_parameter)
329#define __deref_inout_bcount_opt(size) __allowed(on_parameter)
330#define __deref_inout_xcount_opt(size) __allowed(on_parameter)
331#define __deref_inout_ecount_part_opt(size,len) __allowed(on_parameter)
332#define __deref_inout_bcount_part_opt(size,len) __allowed(on_parameter)
333#define __deref_inout_xcount_part_opt(size,len) __allowed(on_parameter)
334#define __deref_inout_ecount_full_opt(size) __allowed(on_parameter)
335#define __deref_inout_bcount_full_opt(size) __allowed(on_parameter)
336#define __deref_inout_xcount_full_opt(size) __allowed(on_parameter)
337#define __deref_inout_z_opt __allowed(on_parameter)
338#define __deref_inout_ecount_z_opt(size) __allowed(on_parameter)
339#define __deref_inout_bcount_z_opt(size) __allowed(on_parameter)
340#define __deref_opt_ecount(size) __allowed(on_parameter)
341#define __deref_opt_bcount(size) __allowed(on_parameter)
342#define __deref_opt_xcount(size) __allowed(on_parameter)
343#define __deref_opt_in __allowed(on_parameter)
344#define __deref_opt_in_ecount(size) __allowed(on_parameter)
345#define __deref_opt_in_bcount(size) __allowed(on_parameter)
346#define __deref_opt_in_xcount(size) __allowed(on_parameter)
347#define __deref_opt_out _SAL_VERSION_CHECK(__deref_opt_out)
348#define __deref_opt_out_ecount(size) _SAL_VERSION_CHECK(__deref_opt_out_ecount)
349#define __deref_opt_out_bcount(size) _SAL_VERSION_CHECK(__deref_opt_out_bcount)
350#define __deref_opt_out_xcount(size) _SAL_VERSION_CHECK(__deref_opt_out_xcount)
351#define __deref_opt_out_ecount_part(size,len) __allowed(on_parameter)
352#define __deref_opt_out_bcount_part(size,len) __allowed(on_parameter)
353#define __deref_opt_out_xcount_part(size,len) __allowed(on_parameter)
354#define __deref_opt_out_ecount_full(size) __allowed(on_parameter)
355#define __deref_opt_out_bcount_full(size) __allowed(on_parameter)
356#define __deref_opt_out_xcount_full(size) __allowed(on_parameter)
357#define __deref_opt_inout __allowed(on_parameter)
358#define __deref_opt_inout_ecount(size) __allowed(on_parameter)
359#define __deref_opt_inout_bcount(size) __allowed(on_parameter)
360#define __deref_opt_inout_xcount(size) __allowed(on_parameter)
361#define __deref_opt_inout_ecount_part(size,len) __allowed(on_parameter)
362#define __deref_opt_inout_bcount_part(size,len) __allowed(on_parameter)
363#define __deref_opt_inout_xcount_part(size,len) __allowed(on_parameter)
364#define __deref_opt_inout_ecount_full(size) __allowed(on_parameter)
365#define __deref_opt_inout_bcount_full(size) __allowed(on_parameter)
366#define __deref_opt_inout_xcount_full(size) __allowed(on_parameter)
367#define __deref_opt_inout_z __allowed(on_parameter)
368#define __deref_opt_inout_ecount_z(size) __allowed(on_parameter)
369#define __deref_opt_inout_bcount_z(size) __allowed(on_parameter)
370#define __deref_opt_ecount_opt(size) __allowed(on_parameter)
371#define __deref_opt_bcount_opt(size) __allowed(on_parameter)
372#define __deref_opt_xcount_opt(size) __allowed(on_parameter)
373#define __deref_opt_in_opt __allowed(on_parameter)
374#define __deref_opt_in_ecount_opt(size) __allowed(on_parameter)
375#define __deref_opt_in_bcount_opt(size) __allowed(on_parameter)
376#define __deref_opt_in_xcount_opt(size) __allowed(on_parameter)
377#define __deref_opt_out_opt __allowed(on_parameter)
378#define __deref_opt_out_ecount_opt(size) __allowed(on_parameter)
379#define __deref_opt_out_bcount_opt(size) __allowed(on_parameter)
380#define __deref_opt_out_xcount_opt(size) __allowed(on_parameter)
381#define __deref_opt_out_ecount_part_opt(size,len) __allowed(on_parameter)
382#define __deref_opt_out_bcount_part_opt(size,len) __allowed(on_parameter)
383#define __deref_opt_out_xcount_part_opt(size,len) __allowed(on_parameter)
384#define __deref_opt_out_ecount_full_opt(size) __allowed(on_parameter)
385#define __deref_opt_out_bcount_full_opt(size) __allowed(on_parameter)
386#define __deref_opt_out_xcount_full_opt(size) __allowed(on_parameter)
387#define __deref_opt_out_z_opt __allowed(on_parameter)
388#define __deref_opt_out_ecount_z_opt(size) __allowed(on_parameter)
389#define __deref_opt_out_bcount_z_opt(size) __allowed(on_parameter)
390#define __deref_opt_inout_opt __allowed(on_parameter)
391#define __deref_opt_inout_ecount_opt(size) __allowed(on_parameter)
392#define __deref_opt_inout_bcount_opt(size) __allowed(on_parameter)
393#define __deref_opt_inout_xcount_opt(size) __allowed(on_parameter)
394#define __deref_opt_inout_ecount_part_opt(size,len) __allowed(on_parameter)
395#define __deref_opt_inout_bcount_part_opt(size,len) __allowed(on_parameter)
396#define __deref_opt_inout_xcount_part_opt(size,len) __allowed(on_parameter)
397#define __deref_opt_inout_ecount_full_opt(size) __allowed(on_parameter)
398#define __deref_opt_inout_bcount_full_opt(size) __allowed(on_parameter)
399#define __deref_opt_inout_xcount_full_opt(size) __allowed(on_parameter)
400#define __deref_opt_inout_z_opt __allowed(on_parameter)
401#define __deref_opt_inout_ecount_z_opt(size) __allowed(on_parameter)
402#define __deref_opt_inout_bcount_z_opt(size) __allowed(on_parameter)
403#define __deref_in_ecount_iterator(size,incr) __allowed(on_parameter)
404#define __deref_out_ecount_iterator(size,incr) __allowed(on_parameter)
405#define __deref_inout_ecount_iterator(size,incr) __allowed(on_parameter)
406#define __deref_realloc_bcount(insize,outsize) __allowed(on_parameter)
412#define _Outptr_ __allowed(on_parameter)
413#define _Outptr_result_maybenull_ __allowed(on_parameter)
414#define _Outptr_opt_ __allowed(on_parameter)
415#define _Outptr_opt_result_maybenull_ __allowed(on_parameter)
416#define _Outptr_result_z_ __allowed(on_parameter)
417#define _Outptr_opt_result_z_ __allowed(on_parameter)
418#define _Outptr_result_maybenull_z_ __allowed(on_parameter)
419#define _Outptr_opt_result_maybenull_z_ __allowed(on_parameter)
420#define _Outptr_result_nullonfailure_ __allowed(on_parameter)
421#define _Outptr_opt_result_nullonfailure_ __allowed(on_parameter)
422#define _COM_Outptr_ __allowed(on_parameter)
423#define _COM_Outptr_result_maybenull_ __allowed(on_parameter)
424#define _COM_Outptr_opt_ __allowed(on_parameter)
425#define _COM_Outptr_opt_result_maybenull_ __allowed(on_parameter)
426#define _Outptr_result_buffer_(size) __allowed(on_parameter)
427#define _Outptr_opt_result_buffer_(size) __allowed(on_parameter)
428#define _Outptr_result_buffer_to_(size, count) __allowed(on_parameter)
429#define _Outptr_opt_result_buffer_to_(size, count) __allowed(on_parameter)
430#define _Outptr_result_buffer_all_(size) __allowed(on_parameter)
431#define _Outptr_opt_result_buffer_all_(size) __allowed(on_parameter)
432#define _Outptr_result_buffer_maybenull_(size) __allowed(on_parameter)
433#define _Outptr_opt_result_buffer_maybenull_(size) __allowed(on_parameter)
434#define _Outptr_result_buffer_to_maybenull_(size, count) __allowed(on_parameter)
435#define _Outptr_opt_result_buffer_to_maybenull_(size, count) __allowed(on_parameter)
436#define _Outptr_result_buffer_all_maybenull_(size) __allowed(on_parameter)
437#define _Outptr_opt_result_buffer_all_maybenull_(size) __allowed(on_parameter)
438#define _Outptr_result_bytebuffer_(size) __allowed(on_parameter)
439#define _Outptr_opt_result_bytebuffer_(size) __allowed(on_parameter)
440#define _Outptr_result_bytebuffer_to_(size, count) __allowed(on_parameter)
441#define _Outptr_opt_result_bytebuffer_to_(size, count) __allowed(on_parameter)
442#define _Outptr_result_bytebuffer_all_(size) __allowed(on_parameter)
443#define _Outptr_opt_result_bytebuffer_all_(size) __allowed(on_parameter)
444#define _Outptr_result_bytebuffer_maybenull_(size) __allowed(on_parameter)
445#define _Outptr_opt_result_bytebuffer_maybenull_(size) __allowed(on_parameter)
446#define _Outptr_result_bytebuffer_to_maybenull_(size, count) __allowed(on_parameter)
447#define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count) __allowed(on_parameter)
448#define _Outptr_result_bytebuffer_all_maybenull_(size) __allowed(on_parameter)
449#define _Outptr_opt_result_bytebuffer_all_maybenull_(size) __allowed(on_parameter)
454#define _Deref_out_ _SAL_VERSION_CHECK(_Deref_out_)
455#define _Deref_out_opt_ _SAL_VERSION_CHECK(_Deref_out_opt_)
456#define _Deref_opt_out_ _SAL_VERSION_CHECK(_Deref_opt_out_)
457#define _Deref_opt_out_opt_ _SAL_VERSION_CHECK(_Deref_opt_out_opt_)
458#define _In_count_(size) _SAL_VERSION_CHECK(_In_count_)
459#define _In_opt_count_(size) _SAL_VERSION_CHECK(_In_opt_count_)
460#define _In_bytecount_(size) _SAL_VERSION_CHECK(_In_bytecount_)
461#define _In_opt_bytecount_(size) _SAL_VERSION_CHECK(_In_opt_bytecount_)
462#define _Out_cap_(size) _SAL_VERSION_CHECK(_Out_cap_)
463#define _Out_opt_cap_(size) _SAL_VERSION_CHECK(_Out_opt_cap_)
464#define _Out_bytecap_(size) _SAL_VERSION_CHECK(_Out_bytecap_)
465#define _Out_opt_bytecap_(size) _SAL_VERSION_CHECK(_Out_opt_bytecap_)
466#define _Deref_post_count_(size) _SAL_VERSION_CHECK(_Deref_post_count_)
467#define _Deref_post_opt_count_(size) _SAL_VERSION_CHECK(_Deref_post_opt_count_)
468#define _Deref_post_bytecount_(size) _SAL_VERSION_CHECK(_Deref_post_bytecount_)
469#define _Deref_post_opt_bytecount_(size) _SAL_VERSION_CHECK(_Deref_post_opt_bytecount_)
470#define _Deref_post_cap_(size) _SAL_VERSION_CHECK(_Deref_post_cap_)
471#define _Deref_post_opt_cap_(size) _SAL_VERSION_CHECK(_Deref_post_opt_cap_)
472#define _Deref_post_bytecap_(size) _SAL_VERSION_CHECK(_Deref_post_bytecap_)
473#define _Deref_post_opt_bytecap_(size) _SAL_VERSION_CHECK(_Deref_post_opt_bytecap_)
630#define _At_(expr, annotes) __allowed(on_parameter_or_return)
631#define _When_(expr, annotes) __allowed(on_parameter_or_return)
632#define __success(expr) _SAL_VERSION_CHECK(__success)
633#define __out_awcount(expr,size) __allowed(on_parameter)
634#define __in_awcount(expr,size) __allowed(on_parameter)
635#define __nullterminated _SAL_VERSION_CHECK(__nullterminated)
636#define __nullnullterminated _SAL_VERSION_CHECK(__nullnullterminated)
637#define __reserved _SAL_VERSION_CHECK(__reserved)
638#define __checkReturn _SAL_VERSION_CHECK(__checkReturn)
639#define __typefix(ctype) __allowed(on_parameter_or_return)
640#define __override __allowed(on_function)
641#define __callback __allowed(on_function)
642#define __format_string __allowed(on_parameter_or_return)
643#define __blocksOn(resource) __allowed(on_function)
644#define __fallthrough __allowed(as_statement)
645#define __range(lb,ub) __allowed(on_return)
646#define __in_range(lb,ub) _SAL_VERSION_CHECK(__in_range)
647#define __out_range(lb,ub) _SAL_VERSION_CHECK(__out_range)
648#define __deref_in_range(lb,ub) __allowed(on_parameter)
649#define __deref_out_range(lb,ub) _SAL_VERSION_CHECK(__deref_out_range)
650#define __deref_inout_range(lb,ub) __allowed(on_parameter)
651#define __field_range(lb,ub) _SAL_VERSION_CHECK(__field_range)
652#define __range_max(a,b) __allowed(on_return)
653#define __range_min(a,b) __allowed(on_return)
654#define __bound __allowed(on_return)
655#define __in_bound __allowed(on_parameter)
656#define __out_bound __allowed(on_parameter)
657#define __deref_out_bound __allowed(on_parameter)
658#define __assume_bound(i) __allowed(as_statement_with_arg(i))
659#define __analysis_assume_nullterminated(x) \
660 __allowed(as_statement_with_arg(x))
661#define __allocator __allowed(on_function)
662#define __deallocate(kind) __allowed(on_parameter)
663#define __deallocate_opt(kind) __allowed(on_parameter)
664#define __post_invalid __allowed(on_parameter_or_return)
665#define __post_nullnullterminated \
666 __allowed(on_parameter_or_return)
670#define __null __allowed(on_typedecl)
671#define __notnull __allowed(on_typedecl)
672#define __maybenull __allowed(on_typedecl)
673#define __exceptthat __allowed(on_typedecl)
826#define __field_ecount(size) _SAL_VERSION_CHECK(__field_ecount)
827#define __field_bcount(size) _SAL_VERSION_CHECK(__field_bcount)
828#define __field_xcount(size) __allowed(on_field)
829#define __field_ecount_opt(size) __allowed(on_field)
830#define __field_bcount_opt(size) __allowed(on_field)
831#define __field_xcount_opt(size) __allowed(on_field)
832#define __field_ecount_part(size,init) __allowed(on_field)
833#define __field_bcount_part(size,init) __allowed(on_field)
834#define __field_xcount_part(size,init) __allowed(on_field)
835#define __field_ecount_part_opt(size,init) __allowed(on_field)
836#define __field_bcount_part_opt(size,init) __allowed(on_field)
837#define __field_xcount_part_opt(size,init) __allowed(on_field)
838#define __field_ecount_full(size) __allowed(on_field)
839#define __field_bcount_full(size) __allowed(on_field)
840#define __field_xcount_full(size) __allowed(on_field)
841#define __field_ecount_full_opt(size) __allowed(on_field)
842#define __field_bcount_full_opt(size) __allowed(on_field)
843#define __field_xcount_full_opt(size) __allowed(on_field)
844#define __field_nullterminated __allowed(on_field)
845#define __struct_bcount(size) __allowed(on_struct)
846#define __struct_xcount(size) __allowed(on_struct)
856#define __control_entrypoint(category) __allowed(on_function)
857#define __rpc_entry __allowed(on_function)
858#define __kernel_entry __allowed(on_function)
859#define __gdi_entry __allowed(on_function)
873#define __in_data_source(src_sym) __allowed(on_parameter)
874#define __out_data_source(src_sym) __allowed(on_parameter)
875#define __field_data_source(src_sym) __allowed(on_field)
876#define __this_out_data_source(src_syn) __allowed(on_function)
898#define __out_validated(filetype_sym) __allowed(on_parameter)
899#define __this_out_validated(filetype_sym) __allowed(on_function)
900#define __file_parser(filetype_sym) __allowed(on_function)
901#define __file_parser_class(filetype_sym) __allowed(on_struct)
902#define __file_parser_library(filetype_sym) __allowed(as_global_decl)
910#define __source_code_content(codetype_sym) __allowed(as_global_decl)
918#define __class_code_content(codetype_sym) __allowed(on_struct)
923#define __encoded_pointer
924#define __encoded_array
925#define __field_encoded_pointer __allowed(on_field)
926#define __field_encoded_array __allowed(on_field)
928#define __transfer(formal) __allowed(on_parameter_or_return)
929#define __assume_validated(exp) __allowed(as_statement_with_arg(exp))
945#define __analysis_assume(expr) __allowed(as_statement_with_arg(expr))
946#define __analysis_assert(expr) __allowed(as_statement_with_arg(expr))
962#define __analysis_hint(hint) __allowed(on_function)
967#define __type_has_adt_prop(adt,prop) __allowed(on_typdecl)
968#define __out_has_adt_prop(adt,prop) __allowed(on_parameter)
969#define __out_not_has_adt_prop(adt,prop) __allowed(on_parameter)
970#define __out_transfer_adt_prop(arg) __allowed(on_parameter)
971#define __out_has_type_adt_props(typ) __allowed(on_parameter)
982#define __possibly_notnullterminated __allowed(on_parameter_or_return)
1010#define __volatile __allowed(on_global_or_field)
1011#define __deref_volatile __allowed(on_global_or_field)
1012#define __nonvolatile __allowed(on_global_or_field)
1013#define __deref_nonvolatile __allowed(on_global_or_field)
1018#if (__SPECSTRINGS_STRICT_LEVEL > 1)
1020#pragma deprecated(__in_nz)
1021#pragma deprecated(__in_ecount_nz)
1022#pragma deprecated(__in_bcount_nz)
1023#pragma deprecated(__out_nz)
1024#pragma deprecated(__out_nz_opt)
1025#pragma deprecated(__out_ecount_nz)
1026#pragma deprecated(__out_bcount_nz)
1027#pragma deprecated(__inout_nz)
1028#pragma deprecated(__inout_ecount_nz)
1029#pragma deprecated(__inout_bcount_nz)
1030#pragma deprecated(__in_nz_opt)
1031#pragma deprecated(__in_ecount_nz_opt)
1032#pragma deprecated(__in_bcount_nz_opt)
1033#pragma deprecated(__out_ecount_nz_opt)
1034#pragma deprecated(__out_bcount_nz_opt)
1035#pragma deprecated(__inout_nz_opt)
1036#pragma deprecated(__inout_ecount_nz_opt)
1037#pragma deprecated(__inout_bcount_nz_opt)
1038#pragma deprecated(__deref_out_nz)
1039#pragma deprecated(__deref_out_ecount_nz)
1040#pragma deprecated(__deref_out_bcount_nz)
1041#pragma deprecated(__deref_inout_nz)
1042#pragma deprecated(__deref_inout_ecount_nz)
1043#pragma deprecated(__deref_inout_bcount_nz)
1044#pragma deprecated(__deref_out_nz_opt)
1045#pragma deprecated(__deref_out_ecount_nz_opt)
1046#pragma deprecated(__deref_out_bcount_nz_opt)
1047#pragma deprecated(__deref_inout_nz_opt)
1048#pragma deprecated(__deref_inout_ecount_nz_opt)
1049#pragma deprecated(__deref_inout_bcount_nz_opt)
1050#pragma deprecated(__deref_opt_inout_nz)
1051#pragma deprecated(__deref_opt_inout_ecount_nz)
1052#pragma deprecated(__deref_opt_inout_bcount_nz)
1053#pragma deprecated(__deref_opt_out_nz_opt)
1054#pragma deprecated(__deref_opt_out_ecount_nz_opt)
1055#pragma deprecated(__deref_opt_out_bcount_nz_opt)
1056#pragma deprecated(__deref_opt_inout_nz_opt)
1057#pragma deprecated(__deref_opt_inout_ecount_nz_opt)
1058#pragma deprecated(__deref_opt_inout_bcount_nz_opt)
1059#pragma deprecated(__deref)
1060#pragma deprecated(__pre)
1061#pragma deprecated(__post)
1062#pragma deprecated(__readableTo)
1063#pragma deprecated(__writableTo)
1064#pragma deprecated(__maybevalid)
1065#pragma deprecated(__data_entrypoint)
1066#pragma deprecated(__inexpressible_readableTo)
1067#pragma deprecated(__readonly)
1068#pragma deprecated(__byte_writableTo)
1069#pragma deprecated(__byte_readableTo)
1070#pragma deprecated(__elem_readableTo)
1071#pragma deprecated(__elem_writableTo)
1072#pragma deprecated(__valid)
1073#pragma deprecated(__notvalid)
1074#pragma deprecated(__refparam)
1075#pragma deprecated(__precond)
1079#define __in_ecount_nz(size)
1080#define __in_bcount_nz(size)
1083#define __out_ecount_nz(size)
1084#define __out_bcount_nz(size)
1086#define __inout_ecount_nz(size)
1087#define __inout_bcount_nz(size)
1089#define __in_ecount_nz_opt(size)
1090#define __in_bcount_nz_opt(size)
1091#define __out_ecount_nz_opt(size)
1092#define __out_bcount_nz_opt(size)
1093#define __inout_nz_opt
1094#define __inout_ecount_nz_opt(size)
1095#define __inout_bcount_nz_opt(size)
1096#define __deref_out_nz
1097#define __deref_out_ecount_nz(size)
1098#define __deref_out_bcount_nz(size)
1099#define __deref_inout_nz
1100#define __deref_inout_ecount_nz(size)
1101#define __deref_inout_bcount_nz(size)
1102#define __deref_out_nz_opt
1103#define __deref_out_ecount_nz_opt(size)
1104#define __deref_out_bcount_nz_opt(size)
1105#define __deref_inout_nz_opt
1106#define __deref_inout_ecount_nz_opt(size)
1107#define __deref_inout_bcount_nz_opt(size)
1108#define __deref_opt_inout_nz
1109#define __deref_opt_inout_ecount_nz(size)
1110#define __deref_opt_inout_bcount_nz(size)
1111#define __deref_opt_out_nz_opt
1112#define __deref_opt_out_ecount_nz_opt(size)
1113#define __deref_opt_out_bcount_nz_opt(size)
1114#define __deref_opt_inout_nz_opt
1115#define __deref_opt_inout_ecount_nz_opt(size)
1116#define __deref_opt_inout_bcount_nz_opt(size)
1120#define __readableTo(count)
1121#define __writableTo(count)
1123#define __inexpressible_readableTo(string)
1124#define __data_entrypoint(category)
1126#define __byte_writableTo(count)
1127#define __byte_readableTo(count)
1128#define __elem_readableTo(count)
1129#define __elem_writableTo(count)
1133#define __precond(condition)
1139#if !defined(_MSC_EXTENSIONS) && !defined(_PREFAST_) && !defined(OACR)
1142#define __allowed(p) __$allowed_##p
1143#define __$allowed_as_global_decl
1144#define __$allowed_as_statement_with_arg(x) \
1145 __pragma(warning(push)) __pragma(warning(disable : 4548)) \
1146 do {__noop(x);} while((0,0) __pragma(warning(pop)) )
1147#define __$allowed_as_statement __$allowed_as_statement_with_arg(1)
1153#define __$allowed_on_function_or_typedecl
1154#if (__SPECSTRINGS_STRICT_LEVEL == 1) || (__SPECSTRINGS_STRICT_LEVEL == 2)
1155#define __$allowed_on_typedecl
1156#define __$allowed_on_return
1157#define __$allowed_on_parameter
1158#define __$allowed_on_function
1159#define __$allowed_on_struct
1160#define __$allowed_on_field
1161#define __$allowed_on_parameter_or_return
1162#define __$allowed_on_global_or_field
1163#elif __SPECSTRINGS_STRICT_LEVEL == 3
1164#define __$allowed_on_typedecl
1166#define __$allowed_on_return [returnvalue: OnReturnOnly]
1167#define __$allowed_on_parameter [OnParameterOnly]
1168#define __$allowed_on_function [method: OnFunctionOnly]
1169#define __$allowed_on_struct [OnStructOnly]
1170#define __$allowed_on_field [OnFieldOnly]
1171#define __$allowed_on_parameter_or_return [OnParameterOrReturnOnly]
1172#define __$allowed_on_global_or_field
1173#pragma push_macro( "DECL_SA" )
1174#pragma push_macro( "SA" )
1177#define DECL_SA(name,loc) \
1179 [source_annotation_attribute( loc )] \
1180 struct name##Attribute { name##Attribute(); const char* ignored; };
1183#define DECL_SA(name,loc) \
1184 [source_annotation_attribute( loc )] \
1185 struct name { const char* ignored; };\
1186 typedef struct name name;
1190DECL_SA(OnFunctionOnly,SA(Method));
1191DECL_SA(OnStructOnly,SA(Struct));
1192DECL_SA(OnFieldOnly,SA(Field));
1194#pragma pop_macro( "SA" )
1195#pragma pop_macro( "DECL_SA" )
UINT32 void void ** ReturnValue
_Inout_opt_ PVOID Parameter