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) 1082 #define __out_nz_opt 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) 1122 #define __maybevalid 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) 1140 #define __allowed(p) 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; }; 1182 #define SA(x) SA_##x 1183 #define DECL_SA(name,loc) \ 1184 [source_annotation_attribute( loc )] \ 1185 struct name { const char* ignored; };\ 1186 typedef struct name name; 1190 DECL_SA(OnFunctionOnly,SA(Method));
1191 DECL_SA(OnStructOnly,SA(Struct));
1192 DECL_SA(OnFieldOnly,SA(Field));
1194 #pragma pop_macro( "SA" ) 1195 #pragma pop_macro( "DECL_SA" )
UINT32 void void ** ReturnValue