This helps Ragnarok: The New World launcher which otherwise complains about not finding Steam process (exaltedly titling that "Unhandled Promise Rejection"). This is javscript / asar app which uses libuv (https://github.com/libuv/libuv), in particular, for creating processes with uv_spawn(). To find Steam it executes "cmd /d /s /c tasklist" and expects the result in narrow chars, while we end up having that as wide chars. tasklist is using wsprintf which is normally converted to narrow chars in ucrtbase in default stdout stream fd state (which is O_TEXT implying such a conversion). However, when uv_spawn() creates the process with app requested 'UV_CREATE_PIPE' type of stdout, it manually fills lpReserved2 in STARTUPINFO setting stdout flags to 0x9 (WX_OPEN | WX_PIPE). Currently that results in the stdout being treated as binary and printf conversion to narrow chars does not happen. My tests show that native CRT ignores those flags for std handle (while it might still use the handle value to set for std fd, while that won't result in updating kernelbase's std handles which my second patch is about). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11710#note_149329