Reactos
at master 504 lines 15 kB view raw
1// 2// conio.h 3// 4// Copyright (c) Microsoft Corporation. All rights reserved. 5// 6// This file declares the direct console I/O functions. 7// 8#pragma once 9#ifndef _INC_CONIO // include guard for 3rd party interop 10#define _INC_CONIO 11 12#include <corecrt.h> 13#include <corecrt_wconio.h> 14 15#pragma warning(push) 16#pragma warning(disable: _UCRT_DISABLED_WARNINGS) 17_UCRT_DISABLE_CLANG_WARNINGS 18 19_CRT_BEGIN_C_HEADER 20 21 _Check_return_wat_ 22 _Success_(_BufferCount > 0) 23 _DCRTIMP errno_t __cdecl _cgets_s( 24 _Out_writes_z_(_BufferCount) char* _Buffer, 25 _In_ size_t _BufferCount, 26 _Out_ size_t* _SizeRead 27 ); 28 29 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1( 30 _Success_(return == 0) 31 errno_t, _cgets_s, 32 _Out_writes_z_(*_Buffer) char, _Buffer, 33 _Out_ size_t*, _SizeRead 34 ) 35 36 _Check_return_opt_ 37 _DCRTIMP int __cdecl _cputs( 38 _In_z_ char const* _Buffer 39 ); 40 41 //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 42 // 43 // Narrow Character Formatted Output Functions (Console) 44 // 45 //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 46 _Check_return_opt_ 47 _DCRTIMP int __cdecl __conio_common_vcprintf( 48 _In_ unsigned __int64 _Options, 49 _In_z_ _Printf_format_string_params_(2) char const* _Format, 50 _In_opt_ _locale_t _Locale, 51 va_list _ArgList 52 ); 53 54 _Check_return_opt_ 55 _DCRTIMP int __cdecl __conio_common_vcprintf_s( 56 _In_ unsigned __int64 _Options, 57 _In_z_ _Printf_format_string_params_(2) char const* _Format, 58 _In_opt_ _locale_t _Locale, 59 va_list _ArgList 60 ); 61 62 _Check_return_opt_ 63 _DCRTIMP int __cdecl __conio_common_vcprintf_p( 64 _In_ unsigned __int64 _Options, 65 _In_z_ _Printf_format_string_params_(2) char const* _Format, 66 _In_opt_ _locale_t _Locale, 67 va_list _ArgList 68 ); 69 70 _Check_return_opt_ 71 _CRT_STDIO_INLINE int __CRTDECL _vcprintf_l( 72 _In_z_ _Printf_format_string_params_(2) char const* const _Format, 73 _In_opt_ _locale_t const _Locale, 74 va_list _ArgList 75 ) 76#if defined _NO_CRT_STDIO_INLINE 77; 78#else 79 { 80 return __conio_common_vcprintf( 81 _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, 82 _Format, _Locale, _ArgList); 83 } 84#endif 85 86 _Check_return_opt_ 87 _CRT_STDIO_INLINE int __CRTDECL _vcprintf( 88 _In_z_ _Printf_format_string_ char const* const _Format, 89 va_list _ArgList 90 ) 91#if defined _NO_CRT_STDIO_INLINE 92; 93#else 94 { 95 return _vcprintf_l(_Format, NULL, _ArgList); 96 } 97#endif 98 99 _Check_return_opt_ 100 _CRT_STDIO_INLINE int __CRTDECL _vcprintf_s_l( 101 _In_z_ _Printf_format_string_params_(2) char const* const _Format, 102 _In_opt_ _locale_t const _Locale, 103 va_list _ArgList 104 ) 105#if defined _NO_CRT_STDIO_INLINE 106; 107#else 108 { 109 return __conio_common_vcprintf_s( 110 _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, 111 _Format, _Locale, _ArgList); 112 } 113#endif 114 115 _Check_return_opt_ 116 _CRT_STDIO_INLINE int __CRTDECL _vcprintf_s( 117 _In_z_ _Printf_format_string_ char const* const _Format, 118 va_list _ArgList 119 ) 120#if defined _NO_CRT_STDIO_INLINE 121; 122#else 123 { 124 return _vcprintf_s_l(_Format, NULL, _ArgList); 125 } 126#endif 127 128 _Check_return_opt_ 129 _CRT_STDIO_INLINE int __CRTDECL _vcprintf_p_l( 130 _In_z_ _Printf_format_string_params_(2) char const* const _Format, 131 _In_opt_ _locale_t const _Locale, 132 va_list _ArgList 133 ) 134#if defined _NO_CRT_STDIO_INLINE 135; 136#else 137 { 138 return __conio_common_vcprintf_p( 139 _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, 140 _Format, _Locale, _ArgList); 141 } 142#endif 143 144 _Check_return_opt_ 145 _CRT_STDIO_INLINE int __CRTDECL _vcprintf_p( 146 _In_z_ char const* const _Format, 147 va_list _ArgList 148 ) 149#if defined _NO_CRT_STDIO_INLINE 150; 151#else 152 { 153 return _vcprintf_p_l(_Format, NULL, _ArgList); 154 } 155#endif 156 157 _Check_return_opt_ 158 _CRT_STDIO_INLINE int __CRTDECL _cprintf_l( 159 _In_z_ _Printf_format_string_params_(0) char const* const _Format, 160 _In_opt_ _locale_t const _Locale, 161 ...) 162#if defined _NO_CRT_STDIO_INLINE 163; 164#else 165 { 166 int _Result; 167 va_list _ArgList; 168 __crt_va_start(_ArgList, _Locale); 169 _Result = _vcprintf_l(_Format, _Locale, _ArgList); 170 __crt_va_end(_ArgList); 171 return _Result; 172 } 173#endif 174 175 _Check_return_opt_ 176 _CRT_STDIO_INLINE int __CRTDECL _cprintf( 177 _In_z_ _Printf_format_string_ char const* const _Format, 178 ...) 179#if defined _NO_CRT_STDIO_INLINE 180; 181#else 182 { 183 int _Result; 184 va_list _ArgList; 185 __crt_va_start(_ArgList, _Format); 186 _Result = _vcprintf_l(_Format, NULL, _ArgList); 187 __crt_va_end(_ArgList); 188 return _Result; 189 } 190#endif 191 192 _Check_return_opt_ 193 _CRT_STDIO_INLINE int __CRTDECL _cprintf_s_l( 194 _In_z_ _Printf_format_string_params_(0) char const* const _Format, 195 _In_opt_ _locale_t const _Locale, 196 ...) 197#if defined _NO_CRT_STDIO_INLINE 198; 199#else 200 { 201 int _Result; 202 va_list _ArgList; 203 __crt_va_start(_ArgList, _Locale); 204 _Result = _vcprintf_s_l(_Format, _Locale, _ArgList); 205 __crt_va_end(_ArgList); 206 return _Result; 207 } 208#endif 209 210 _Check_return_opt_ 211 _CRT_STDIO_INLINE int __CRTDECL _cprintf_s( 212 _In_z_ _Printf_format_string_ char const* const _Format, 213 ...) 214#if defined _NO_CRT_STDIO_INLINE 215; 216#else 217 { 218 int _Result; 219 va_list _ArgList; 220 __crt_va_start(_ArgList, _Format); 221 _Result = _vcprintf_s_l(_Format, NULL, _ArgList); 222 __crt_va_end(_ArgList); 223 return _Result; 224 } 225#endif 226 227 _Check_return_opt_ 228 _CRT_STDIO_INLINE int __CRTDECL _cprintf_p_l( 229 _In_z_ _Printf_format_string_params_(0) char const* const _Format, 230 _In_opt_ _locale_t const _Locale, 231 ...) 232#if defined _NO_CRT_STDIO_INLINE 233; 234#else 235 { 236 int _Result; 237 va_list _ArgList; 238 __crt_va_start(_ArgList, _Locale); 239 _Result = _vcprintf_p_l(_Format, _Locale, _ArgList); 240 __crt_va_end(_ArgList); 241 return _Result; 242 } 243#endif 244 245 _Check_return_opt_ 246 _CRT_STDIO_INLINE int __CRTDECL _cprintf_p( 247 _In_z_ _Printf_format_string_ char const* const _Format, 248 ...) 249#if defined _NO_CRT_STDIO_INLINE 250; 251#else 252 { 253 int _Result; 254 va_list _ArgList; 255 __crt_va_start(_ArgList, _Format); 256 _Result = _vcprintf_p_l(_Format, NULL, _ArgList); 257 __crt_va_end(_ArgList); 258 return _Result; 259 } 260#endif 261 262 263 //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 264 // 265 // Narrow Character Formatted Input Functions (Console) 266 // 267 //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 268 _Check_return_opt_ 269 _DCRTIMP int __cdecl __conio_common_vcscanf( 270 _In_ unsigned __int64 _Options, 271 _In_z_ _Scanf_format_string_params_(2) char const* _Format, 272 _In_opt_ _locale_t _Locale, 273 va_list _ArgList 274 ); 275 276 _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_vcscanf_s_l) 277 _CRT_STDIO_INLINE int __CRTDECL _vcscanf_l( 278 _In_z_ _Scanf_format_string_params_(2) char const* const _Format, 279 _In_opt_ _locale_t const _Locale, 280 va_list _ArgList 281 ) 282#if defined _NO_CRT_STDIO_INLINE 283; 284#else 285 { 286 return __conio_common_vcscanf( 287 _CRT_INTERNAL_LOCAL_SCANF_OPTIONS, 288 _Format, _Locale, _ArgList); 289 } 290#endif 291 292 _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_vcscanf_s) 293 _CRT_STDIO_INLINE int __CRTDECL _vcscanf( 294 _In_z_ _Scanf_format_string_params_(1) char const* const _Format, 295 va_list _ArgList 296 ) 297#if defined _NO_CRT_STDIO_INLINE 298; 299#else 300 { 301 return _vcscanf_l(_Format, NULL, _ArgList); 302 } 303#endif 304 305 _Check_return_opt_ 306 _CRT_STDIO_INLINE int __CRTDECL _vcscanf_s_l( 307 _In_z_ _Scanf_format_string_params_(2) char const* const _Format, 308 _In_opt_ _locale_t const _Locale, 309 va_list _ArgList 310 ) 311#if defined _NO_CRT_STDIO_INLINE 312; 313#else 314 { 315 return __conio_common_vcscanf( 316 _CRT_INTERNAL_LOCAL_SCANF_OPTIONS | _CRT_INTERNAL_SCANF_SECURECRT, 317 _Format, _Locale, _ArgList); 318 } 319#endif 320 321 _Check_return_opt_ 322 _CRT_STDIO_INLINE int __CRTDECL _vcscanf_s( 323 _In_z_ _Scanf_format_string_params_(1) char const* const _Format, 324 va_list _ArgList 325 ) 326#if defined _NO_CRT_STDIO_INLINE 327; 328#else 329 { 330 return _vcscanf_s_l(_Format, NULL, _ArgList); 331 } 332#endif 333 334 _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_cscanf_s_l) 335 _CRT_STDIO_INLINE int __CRTDECL _cscanf_l( 336 _In_z_ _Scanf_format_string_params_(0) char const* const _Format, 337 _In_opt_ _locale_t const _Locale, 338 ...) 339#if defined _NO_CRT_STDIO_INLINE 340; 341#else 342 { 343 int _Result; 344 va_list _ArgList; 345 __crt_va_start(_ArgList, _Locale); 346 347 _Result = _vcscanf_l(_Format, _Locale, _ArgList); 348 349 __crt_va_end(_ArgList); 350 return _Result; 351 } 352#endif 353 354 _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_cscanf_s) 355 _CRT_STDIO_INLINE int __CRTDECL _cscanf( 356 _In_z_ _Scanf_format_string_ char const* const _Format, 357 ...) 358#if defined _NO_CRT_STDIO_INLINE 359; 360#else 361 { 362 int _Result; 363 va_list _ArgList; 364 __crt_va_start(_ArgList, _Format); 365 366 _Result = _vcscanf_l(_Format, NULL, _ArgList); 367 368 __crt_va_end(_ArgList); 369 return _Result; 370 } 371#endif 372 373 _Check_return_opt_ 374 _CRT_STDIO_INLINE int __CRTDECL _cscanf_s_l( 375 _In_z_ _Scanf_format_string_params_(0) char const* const _Format, 376 _In_opt_ _locale_t const _Locale, 377 ...) 378#if defined _NO_CRT_STDIO_INLINE 379; 380#else 381 { 382 int _Result; 383 va_list _ArgList; 384 __crt_va_start(_ArgList, _Locale); 385 _Result = _vcscanf_s_l(_Format, _Locale, _ArgList); 386 __crt_va_end(_ArgList); 387 return _Result; 388 } 389#endif 390 391 _Check_return_opt_ 392 _CRT_STDIO_INLINE int __CRTDECL _cscanf_s( 393 _In_z_ _Scanf_format_string_ char const* const _Format, 394 ...) 395#if defined _NO_CRT_STDIO_INLINE 396; 397#else 398 { 399 int _Result; 400 va_list _ArgList; 401 __crt_va_start(_ArgList, _Format); 402 _Result = _vcscanf_s_l(_Format, NULL, _ArgList); 403 __crt_va_end(_ArgList); 404 return _Result; 405 } 406#endif 407 408 409 _DCRTIMP int __cdecl _kbhit(void); 410 411 _Check_return_ _DCRTIMP int __cdecl _getch(void); 412 _Check_return_ _DCRTIMP int __cdecl _getche(void); 413 _Check_return_opt_ _DCRTIMP int __cdecl _putch (_In_ int _Ch); 414 _Check_return_opt_ _DCRTIMP int __cdecl _ungetch(_In_ int _Ch); 415 416 _Check_return_ _DCRTIMP int __cdecl _getch_nolock (void); 417 _Check_return_ _DCRTIMP int __cdecl _getche_nolock (void); 418 _Check_return_opt_ _DCRTIMP int __cdecl _putch_nolock (_In_ int _Ch); 419 _Check_return_opt_ _DCRTIMP int __cdecl _ungetch_nolock(_In_ int _Ch); 420 421 #if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES 422 423 // Suppress double-deprecation warnings: 424 #pragma warning(push) 425 #pragma warning(disable: 4141) 426 427 _Success_(return != 0) 428 _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_cgets) _CRT_INSECURE_DEPRECATE(_cgets_s) 429 _DCRTIMP char* __cdecl cgets( 430 _At_(&_Buffer[0], _In_reads_(1)) 431 _At_(&_Buffer[1], _Out_writes_(1)) 432 _At_(&_Buffer[2], _Post_z_ _Out_writes_to_(_Buffer[0], _Buffer[1])) 433 char* _Buffer 434 ); 435 436 #pragma warning(pop) 437 438 _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_cputs) 439 _DCRTIMP int __cdecl cputs( 440 _In_z_ char const* _String 441 ); 442 443 _Check_return_ _CRT_NONSTDC_DEPRECATE(_getch) 444 _DCRTIMP int __cdecl getch(void); 445 446 _Check_return_ _CRT_NONSTDC_DEPRECATE(_getche) 447 _DCRTIMP int __cdecl getche(void); 448 449 _Check_return_ _CRT_NONSTDC_DEPRECATE(_kbhit) 450 _DCRTIMP int __cdecl kbhit(void); 451 452 _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_putch) 453 _DCRTIMP int __cdecl putch( 454 _In_ int _Ch 455 ); 456 457 _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_ungetch) 458 _DCRTIMP int __cdecl ungetch( 459 _In_ int _Ch 460 ); 461 462 _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_cprintf) 463 _CRT_STDIO_INLINE int __CRTDECL cprintf( 464 _In_z_ _Printf_format_string_ char const* const _Format, 465 ...) 466#if defined _NO_CRT_STDIO_INLINE 467; 468#else 469 { 470 int _Result; 471 va_list _ArgList; 472 __crt_va_start(_ArgList, _Format); 473 _Result = _vcprintf_l(_Format, NULL, _ArgList); 474 __crt_va_end(_ArgList); 475 return _Result; 476 } 477#endif 478 479 _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_cscanf) 480 _CRT_STDIO_INLINE int __CRTDECL cscanf( 481 _In_z_ _Scanf_format_string_ char const* const _Format, 482 ...) 483#if defined _NO_CRT_STDIO_INLINE 484; 485#else 486 { 487 int _Result; 488 va_list _ArgList; 489 __crt_va_start(_ArgList, _Format); 490 491 _Result = _vcscanf_l(_Format, NULL, _ArgList); 492 493 __crt_va_end(_ArgList); 494 return _Result; 495 } 496#endif 497 498 #endif // _CRT_INTERNAL_NONSTDC_NAMES 499 500_CRT_END_C_HEADER 501 502_UCRT_RESTORE_CLANG_WARNINGS 503#pragma warning(pop) // _UCRT_DISABLED_WARNINGS 504#endif // _INC_CONIO