mirror of
https://github.com/reactos/reactos.git
synced 2025-05-25 12:14:32 +00:00

Imported from https://www.nuget.org/packages/Microsoft.Windows.SDK.CRTSource/10.0.22621.3 License: MIT
39 lines
1 KiB
C++
39 lines
1 KiB
C++
//
|
|
// putwch.cpp
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// Defines _putwch(), which writes a wide character to the console.
|
|
//
|
|
#include <conio.h>
|
|
#include <corecrt_internal_lowio.h>
|
|
#include <corecrt_internal_ptd_propagation.h>
|
|
|
|
// Writes a wide character to the console. Returns the character on success,
|
|
// WEOF on failure.
|
|
extern "C" wint_t __cdecl _putwch(wchar_t const c)
|
|
{
|
|
return __acrt_lock_and_call(__acrt_conio_lock, [&]
|
|
{
|
|
return _putwch_nolock(c);
|
|
});
|
|
}
|
|
|
|
extern "C" wint_t __cdecl _putwch_nolock(wchar_t const c)
|
|
{
|
|
if (__dcrt_lowio_ensure_console_output_initialized() == FALSE)
|
|
return WEOF;
|
|
|
|
// Write character to console:
|
|
DWORD charsWritten;
|
|
if (__dcrt_write_console(&c, 1, &charsWritten) == FALSE)
|
|
return WEOF;
|
|
|
|
return c;
|
|
}
|
|
|
|
extern "C" wint_t __cdecl _putwch_nolock_internal(wchar_t const c, __crt_cached_ptd_host&)
|
|
{
|
|
// Currently _putwch_nolock does not require any PTD access. Do not need to propagate __crt_cached_ptd_host&.
|
|
return _putwch_nolock(c);
|
|
}
|