reactos/dll/win32/kernel32/include/console.h

80 lines
1.9 KiB
C
Raw Normal View History

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS System Libraries
* FILE: dll/win32/kernel32/include/console.h
* PURPOSE: Console API Client Definitions
[REACTOS] Merge of the ros-csrss branch created with a three-fold purpose: - Use the new Windows-compatible Client-Server Runtime Subsystem (csrss + csrsrv) written by Alex Ionescu to replace the old hacked one. Also the CSR client part, residing in ntdll, is updated. Some work also done on the dlls side, which communicate with CSR, namely kernel32. - Replace our very old win32csr.dll CSR server by the collection basesrv.dll / winsrv.dll as it is done under Windows. - Since the console subsystem is (for historical purposes on Windows) the only subsystem which exploits all the possibilities of the CSR, I decided to put it in a new CSR dll called 'consrv.dll', even if on Windows it is included together with other APIs inside the winsrv dll (since Windows NT 3.1 release) (I took the name 'consrv' from the dll where it was included in Windows NT 3.1 beta from October 1991). Some work was also done on its internal architecture (the external interface is of course unchanged for compatibility reasons) and a two-layer approach was developed, using the existing idea of console functions + GUI or TUI we already had in win32csr: * the "console server" which dialogs with the console applications, and which maintains a list of all the created consoles. * different "front-ends" corresponding to where you want to output the information (~= console hardware) (Work-In-Progress). Another idea would be to make those front-ends dynamically-loadable (instead of being compiled inside consrv). - I also fixed some parts of the console properties dialog box. More information can be found in http://www.reactos.org/archives/public/ros-dev/2013-April/016121.html CORE-122 CORE-2510 CORE-7002 #resolve #comment Committed in revision r58xxx. svn path=/trunk/; revision=58770
2013-04-15 19:32:00 +00:00
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
*/
#pragma once
/* CONSTANTS ******************************************************************/
#define HANDLE_DETACHED_PROCESS (HANDLE)-2
#define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
#define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
/* FUNCTION PROTOTYPES ********************************************************/
BOOL WINAPI
BasepInitConsole(VOID);
VOID WINAPI
BasepUninitConsole(VOID);
VOID WINAPI
InitConsoleCtrlHandling(VOID);
[CONSOLE.DLL-KERNEL32-CONSRV] Fix the console properties dialog, when launching and transmitting console properties. Before, the properties dialog was directly launched by the console server (consrv), running with CSRSS (System) privileges, what constituted a security hole. Now, I create a remote thread in the running process owning the console for launching the properties dialog (thus it has only user privileges, and not System ones anymore). For that purpose, I basically took the technique described in the following paper (Cesar Cerrudo, "Story of a dumb patch", http://www.argeniss.com/research/MSBugPaper.pdf or http://www.scn.rain.com/~neighorn/PDF/MSBugPaper.pdf), where basically the console server shares the console properties via a shared memory section with the console properties dialog dll. The address of the thread which launches the dialog in the context of the console app is given to the console server the same way as we do for the control handler (called e.g. when you press Ctrl-C, etc...) Of course this is quite hackish, because you have the GUI interface split between the console server and the console properties dialog dll. Something far more elegant would be to put all the GUI thingie into a dedicated dll or exe, running with the same privileges as the console program itself (a kind of console -- or terminal -- emulator). [CONSOLE.DLL] Fix retriving / setting colors.c and other things. [CONSRV.DLL] - Fix retrieving / setting console properties from the registry (via the HKCU\Console\* keys), via the shell shortcuts (not totally done at the moment, because somebody has to implement properly that thing : http://msdn.microsoft.com/en-us/library/windows/desktop/bb773359(v=vs.85).aspx (NT_CONSOLE_PROPS structure stored as a shortcut data block) (at application launching time), and via the console properties dialog. - Few DPRINTs removed. svn path=/branches/ros-csrss/; revision=58415
2013-03-03 15:35:12 +00:00
DWORD WINAPI
ConsoleControlDispatcher(IN LPVOID lpThreadParameter);
DWORD WINAPI
PropDialogHandler(IN LPVOID lpThreadParameter);
HANDLE WINAPI
DuplicateConsoleHandle(HANDLE hConsole,
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwOptions);
BOOL WINAPI
GetConsoleHandleInformation(IN HANDLE hHandle,
OUT LPDWORD lpdwFlags);
BOOL WINAPI
SetConsoleHandleInformation(IN HANDLE hHandle,
IN DWORD dwMask,
IN DWORD dwFlags);
BOOL WINAPI
VerifyConsoleIoHandle(HANDLE Handle);
BOOL WINAPI
CloseConsoleHandle(HANDLE Handle);
HANDLE WINAPI
GetConsoleInputWaitHandle(VOID);
HANDLE
TranslateStdHandle(HANDLE hHandle);
VOID
InitConsoleInfo(IN OUT PCONSOLE_START_INFO ConsoleStartInfo,
IN PUNICODE_STRING ImagePathName);
LPCWSTR
IntCheckForConsoleFileName(IN LPCWSTR pszName,
IN DWORD dwDesiredAccess);
HANDLE WINAPI
OpenConsoleW(LPCWSTR wsName,
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwShareMode);
BOOL WINAPI
SetConsoleInputExeNameW(LPCWSTR lpInputExeName);
/* EOF */