2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Console Server DLL
4 * FILE: win32ss/user/consrv/consrv.h
5 * PURPOSE: Main header - Definitions
6 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
14 /* PSDK/NDK Headers */
15 #define WIN32_NO_STATUS
17 #define NTOS_MODE_USER
18 #include <ndk/ntndk.h>
20 /* Public Win32K Headers */
24 #include <csr/csrsrv.h>
27 #include <win/console.h>
28 #include <win/conmsg.h>
32 /* Shared header with console.dll */
36 extern HINSTANCE ConSrvDllInstance
;
37 extern HANDLE ConSrvHeap
;
38 // extern HANDLE BaseSrvSharedHeap;
39 // extern PBASE_STATIC_SERVER_DATA BaseStaticServerData;
41 /* Object type magic numbers */
42 #define CONIO_CONSOLE_MAGIC 0x00000001 // --> Input-type handles
43 #define CONIO_SCREEN_BUFFER_MAGIC 0x00000002 // --> Output-type handles
45 /* Common things to input/output/console objects */
46 typedef struct Object_tt
49 struct _CONSOLE
*Console
;
50 LONG AccessRead
, AccessWrite
;
51 LONG ExclusiveRead
, ExclusiveWrite
;
56 typedef struct _CONSOLE_IO_HANDLE
58 Object_t
*Object
; /* The object on which the handle points to */
62 } CONSOLE_IO_HANDLE
, *PCONSOLE_IO_HANDLE
;
65 #define ConsoleGetPerProcessData(Process) \
66 ((PCONSOLE_PROCESS_DATA)((Process)->ServerData[CONSRV_SERVERDLL_INDEX]))
68 typedef struct _CONSOLE_PROCESS_DATA
70 LIST_ENTRY ConsoleLink
;
71 PCSR_PROCESS Process
; // Process owning this structure.
73 /* PCONSOLE */ struct _CONSOLE
* Console
;
74 /* PCONSOLE */ struct _CONSOLE
* ParentConsole
;
76 BOOL ConsoleApp
; // TRUE if it is a CUI app, FALSE otherwise.
78 RTL_CRITICAL_SECTION HandleTableLock
;
79 ULONG HandleTableSize
;
80 PCONSOLE_IO_HANDLE HandleTable
; // Length-varying table
82 LPTHREAD_START_ROUTINE CtrlDispatcher
;
83 } CONSOLE_PROCESS_DATA
, *PCONSOLE_PROCESS_DATA
;
87 CSR_API(SrvAddConsoleAlias
);
88 CSR_API(SrvGetConsoleAlias
);
89 CSR_API(SrvGetConsoleAliases
);
90 CSR_API(SrvGetConsoleAliasesLength
);
91 CSR_API(SrvGetConsoleAliasExes
);
92 CSR_API(SrvGetConsoleAliasExesLength
);
95 CSR_API(SrvGetConsoleInput
);
96 CSR_API(SrvWriteConsoleInput
);
97 CSR_API(SrvReadConsole
);
98 CSR_API(SrvFlushConsoleInputBuffer
);
99 CSR_API(SrvGetConsoleNumberOfInputEvents
);
102 CSR_API(SrvReadConsoleOutput
);
103 CSR_API(SrvWriteConsoleOutput
);
104 CSR_API(SrvReadConsoleOutputString
);
105 CSR_API(SrvWriteConsoleOutputString
);
106 CSR_API(SrvFillConsoleOutput
);
107 CSR_API(SrvWriteConsole
);
108 CSR_API(SrvSetConsoleCursorPosition
);
109 CSR_API(SrvGetConsoleCursorInfo
);
110 CSR_API(SrvSetConsoleCursorInfo
);
111 CSR_API(SrvSetConsoleTextAttribute
);
112 CSR_API(SrvCreateConsoleScreenBuffer
);
113 CSR_API(SrvGetConsoleScreenBufferInfo
);
114 CSR_API(SrvSetConsoleActiveScreenBuffer
);
115 CSR_API(SrvScrollConsoleScreenBuffer
);
116 CSR_API(SrvSetConsoleScreenBufferSize
);
119 CSR_API(SrvOpenConsole
);
120 CSR_API(SrvAllocConsole
);
121 CSR_API(SrvAttachConsole
);
122 CSR_API(SrvFreeConsole
);
123 CSR_API(SrvSetConsoleMode
);
124 CSR_API(SrvGetConsoleMode
);
125 CSR_API(SrvSetConsoleTitle
);
126 CSR_API(SrvGetConsoleTitle
);
127 CSR_API(SrvGetConsoleHardwareState
);
128 CSR_API(SrvSetConsoleHardwareState
);
129 CSR_API(SrvGetConsoleWindow
);
130 CSR_API(SrvSetConsoleIcon
);
131 CSR_API(SrvGetConsoleCP
);
132 CSR_API(SrvSetConsoleCP
);
133 CSR_API(SrvGetConsoleProcessList
);
134 CSR_API(SrvGenerateConsoleCtrlEvent
);
135 CSR_API(SrvGetConsoleSelectionInfo
);
138 CSR_API(SrvCloseHandle
);
139 CSR_API(SrvVerifyConsoleIoHandle
);
140 CSR_API(SrvDuplicateHandle
);
141 /// CSR_API(CsrGetInputWaitHandle);
143 NTSTATUS FASTCALL
Win32CsrInitHandlesTable(IN OUT PCONSOLE_PROCESS_DATA ProcessData
,
144 OUT PHANDLE pInputHandle
,
145 OUT PHANDLE pOutputHandle
,
146 OUT PHANDLE pErrorHandle
);
147 NTSTATUS FASTCALL
Win32CsrInheritHandlesTable(IN PCONSOLE_PROCESS_DATA SourceProcessData
,
148 IN PCONSOLE_PROCESS_DATA TargetProcessData
);
149 VOID FASTCALL
Win32CsrFreeHandlesTable(PCONSOLE_PROCESS_DATA ProcessData
);
150 NTSTATUS FASTCALL
Win32CsrInsertObject(PCONSOLE_PROCESS_DATA ProcessData
,
156 NTSTATUS FASTCALL
Win32CsrLockObject(PCONSOLE_PROCESS_DATA ProcessData
,
161 VOID FASTCALL
Win32CsrUnlockObject(Object_t
*Object
);
162 NTSTATUS FASTCALL
Win32CsrReleaseObject(PCONSOLE_PROCESS_DATA ProcessData
,
165 NTSTATUS FASTCALL
Win32CsrAllocateConsole(PCONSOLE_PROCESS_DATA ProcessData
,
166 PHANDLE pInputHandle
,
167 PHANDLE pOutputHandle
,
168 PHANDLE pErrorHandle
,
170 PCSR_PROCESS CsrProcess
);
171 VOID FASTCALL
Win32CsrReleaseConsole(PCONSOLE_PROCESS_DATA ProcessData
);
173 NTSTATUS NTAPI
ConsoleNewProcess(PCSR_PROCESS SourceProcess
,
174 PCSR_PROCESS TargetProcess
);
175 NTSTATUS NTAPI
ConsoleConnect(IN PCSR_PROCESS CsrProcess
,
176 IN OUT PVOID ConnectionInfo
,
177 IN OUT PULONG ConnectionInfoLength
);
178 VOID NTAPI
ConsoleDisconnect(PCSR_PROCESS Process
);
181 CSR_API(SrvGetConsoleCommandHistoryLength
);
182 CSR_API(SrvGetConsoleCommandHistory
);
183 CSR_API(SrvExpungeConsoleCommandHistory
);
184 CSR_API(SrvSetConsoleNumberOfCommands
);
185 CSR_API(SrvGetConsoleHistory
);
186 CSR_API(SrvSetConsoleHistory
);
188 #endif // __CONSRV_H__