CORE-17601, CORE-17803
Replaces PR #4281.
Implement SrvGetConsoleLangId() (server-side) and set the new current
thread's locale after connecting to a console, or changing its output
code page.
Based on API tracing on Windows 2003, as well as on comments and code
gathered from: https://github.com/microsoft/terminal
Tests results are listed in PR #4301.
- Move ConSrvInitHandlesTable() & rename it ConSrvInitProcessHandles()
since its purpose is to initialize the standard input, output and
error handles for a console process.
- Move ConSrvAllocateConsole(), ConSrvInheritConsole() and
ConSrvRemoveConsole().
All the per-API message structure unpacking and console validation done
with ConSrvGetConsole() is now automatically generated using the macros,
so that the actual implementation of each API can be done independently
of how the console object is obtained.
This could also allow reusing these API implementations with a different
mechanism for obtaining the console without changing anything in them.
In addition, honour the maximum number of history buffers allowed when
creating new ones.
Some implementation information has been obtained from
https://github.com/microsoft/terminal
(under MIT License).
- Update the documentation of members of CONSOLE_INPUT_BUFFER.
- Simplify ConDrvGetConsoleNumberOfInputEvents().
- Simplify ConDrvFlushConsoleInputBuffer().
- Use also GetConsoleInputBufferMode() more often.