Sync with trunk r47367
[reactos.git] / include / reactos / subsys / csrss / csrss.h
1 #ifndef __INCLUDE_CSRSS_CSRSS_H
2 #define __INCLUDE_CSRSS_CSRSS_H
3
4 #include <drivers/blue/ntddblue.h>
5
6 #define CSR_NATIVE 0x0000
7 #define CSR_CONSOLE 0x0001
8 #define CSR_GUI 0x0002
9 #define CONSOLE_INPUT_MODE_VALID (0x0f)
10 #define CONSOLE_OUTPUT_MODE_VALID (0x03)
11
12 /*
13 typedef union _CSR_API_NUMBER
14 {
15 WORD Index; // CSRSS API number
16 WORD Subsystem; // 0=NTDLL;1=KERNEL32;2=KERNEL32
17 } CSR_API_NUMBER, *PCSR_API_NUMBER;
18 */
19
20 typedef ULONG CSR_API_NUMBER;
21
22 #define MAKE_CSR_API(Number, Server) \
23 ((Server) << 16) + Number
24
25 #define CSR_CSRSS_SECTION_SIZE (65536)
26
27 typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
28
29 typedef struct
30 {
31 ULONG Dummy;
32 } CSRSS_CONNECT_PROCESS, *PCSRSS_CONNECT_PROCESS;
33
34 typedef struct
35 {
36 HANDLE NewProcessId;
37 ULONG Flags;
38 BOOL bInheritHandles;
39 } CSRSS_CREATE_PROCESS, *PCSRSS_CREATE_PROCESS;
40
41 typedef struct
42 {
43 CLIENT_ID ClientId;
44 HANDLE ThreadHandle;
45 } CSRSS_CREATE_THREAD, *PCSRSS_CREATE_THREAD;
46
47 typedef struct
48 {
49 ULONG Dummy;
50 } CSRSS_TERMINATE_PROCESS, *PCSRSS_TERMINATE_PROCESS;
51
52 typedef struct
53 {
54 USHORT nMaxIds;
55 PDWORD ProcessId;
56 ULONG nProcessIdsTotal;
57 } CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
58
59 typedef struct
60 {
61 HANDLE ConsoleHandle;
62 BOOL Unicode;
63 ULONG NrCharactersToWrite;
64 ULONG NrCharactersWritten;
65 HANDLE UnpauseEvent;
66 BYTE Buffer[0];
67 } CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
68
69 typedef struct
70 {
71 HANDLE ConsoleHandle;
72 BOOL Unicode;
73 WORD NrCharactersToRead;
74 WORD nCharsCanBeDeleted; /* number of chars already in buffer that can be backspaced */
75 HANDLE EventHandle;
76 ULONG NrCharactersRead;
77 BYTE Buffer[0];
78 } CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
79
80 typedef struct
81 {
82 PCONTROLDISPATCHER CtrlDispatcher;
83 BOOLEAN ConsoleNeeded;
84 BOOLEAN Visible;
85 HANDLE Console;
86 HANDLE InputHandle;
87 HANDLE OutputHandle;
88 } CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
89
90 typedef struct
91 {
92 ULONG Dummy;
93 } CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
94
95 typedef struct
96 {
97 HANDLE ConsoleHandle;
98 CONSOLE_SCREEN_BUFFER_INFO Info;
99 } CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
100
101 typedef struct
102 {
103 HANDLE ConsoleHandle;
104 COORD Position;
105 } CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
106
107 typedef struct
108 {
109 HANDLE ConsoleHandle;
110 BOOL Unicode;
111 union
112 {
113 CHAR AsciiChar;
114 WCHAR UnicodeChar;
115 } Char;
116 COORD Position;
117 WORD Length;
118 ULONG NrCharactersWritten;
119 } CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
120
121 typedef struct
122 {
123 HANDLE ConsoleHandle;
124 CHAR Attribute;
125 COORD Coord;
126 WORD Length;
127 } CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
128
129 typedef struct
130 {
131 HANDLE ConsoleHandle;
132 BOOL Unicode;
133 INPUT_RECORD Input;
134 BOOL MoreEvents;
135 HANDLE Event;
136 } CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
137
138 typedef struct
139 {
140 HANDLE ConsoleHandle;
141 BOOL Unicode;
142 WORD Length;
143 COORD Coord;
144 COORD EndCoord;
145 ULONG NrCharactersWritten;
146 CHAR String[0];
147 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
148
149 typedef struct
150 {
151 HANDLE ConsoleHandle;
152 WORD Length;
153 COORD Coord;
154 COORD EndCoord;
155 WORD Attribute[0];
156 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
157
158 typedef struct
159 {
160 HANDLE ConsoleHandle;
161 CONSOLE_CURSOR_INFO Info;
162 } CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
163
164 typedef struct
165 {
166 HANDLE ConsoleHandle;
167 CONSOLE_CURSOR_INFO Info;
168 } CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
169
170 typedef struct
171 {
172 HANDLE ConsoleHandle;
173 WORD Attrib;
174 } CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
175
176 typedef struct
177 {
178 HANDLE ConsoleHandle;
179 DWORD Mode;
180 } CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
181
182 typedef struct
183 {
184 HANDLE ConsoleHandle;
185 DWORD ConsoleMode;
186 } CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
187
188 typedef struct
189 {
190 DWORD Access;
191 DWORD ShareMode;
192 BOOL Inheritable;
193 HANDLE OutputHandle; /* handle to newly created screen buffer */
194 } CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
195
196 typedef struct
197 {
198 HANDLE OutputHandle; /* handle to screen buffer to switch to */
199 } CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
200
201 typedef struct
202 {
203 HANDLE UniqueThread;
204 CLIENT_ID Cid;
205 } CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
206
207 typedef struct
208 {
209 DWORD Length;
210 WCHAR Title[0];
211 } CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
212
213 typedef struct
214 {
215 DWORD Length;
216 WCHAR Title[0];
217 } CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
218
219 typedef struct
220 {
221 HANDLE ConsoleHandle;
222 BOOL Unicode;
223 COORD BufferSize;
224 COORD BufferCoord;
225 SMALL_RECT WriteRegion;
226 CHAR_INFO* CharInfo;
227 } CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
228
229 typedef struct
230 {
231 HANDLE ConsoleInput;
232 } CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
233
234 typedef struct
235 {
236 HANDLE ConsoleHandle;
237 BOOL Unicode;
238 SMALL_RECT ScrollRectangle;
239 BOOLEAN UseClipRectangle;
240 SMALL_RECT ClipRectangle;
241 COORD DestinationOrigin;
242 CHAR_INFO Fill;
243 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
244
245 typedef struct
246 {
247 HANDLE ConsoleHandle;
248 BOOL Unicode;
249 DWORD NumCharsToRead;
250 COORD ReadCoord;
251 COORD EndCoord;
252 DWORD CharsRead;
253 CHAR String[0];
254 }CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
255
256 typedef struct
257 {
258 HANDLE ConsoleHandle;
259 DWORD NumAttrsToRead;
260 COORD ReadCoord;
261 COORD EndCoord;
262 WORD Attribute[0];
263 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
264
265 typedef struct
266 {
267 HANDLE ConsoleHandle;
268 DWORD NumInputEvents;
269 }CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
270
271 typedef struct
272 {
273 HANDLE ProcessId;
274 } CSRSS_REGISTER_SERVICES_PROCESS, *PCSRSS_REGISTER_SERVICES_PROCESS;
275
276 typedef struct
277 {
278 UINT Flags;
279 DWORD Reserved;
280 } CSRSS_EXIT_REACTOS, *PCSRSS_EXIT_REACTOS;
281
282 typedef struct
283 {
284 DWORD Level;
285 DWORD Flags;
286 } CSRSS_SET_SHUTDOWN_PARAMETERS, *PCSRSS_SET_SHUTDOWN_PARAMETERS;
287
288 typedef struct
289 {
290 DWORD Level;
291 DWORD Flags;
292 } CSRSS_GET_SHUTDOWN_PARAMETERS, *PCSRSS_GET_SHUTDOWN_PARAMETERS;
293
294 typedef struct
295 {
296 HANDLE ConsoleHandle;
297 BOOL Unicode;
298 DWORD Length;
299 INPUT_RECORD* InputRecord;
300 } CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
301
302 typedef struct
303 {
304 HANDLE ConsoleHandle;
305 BOOL Unicode;
306 COORD BufferSize;
307 COORD BufferCoord;
308 SMALL_RECT ReadRegion;
309 CHAR_INFO* CharInfo;
310 } CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
311
312 typedef struct
313 {
314 HANDLE ConsoleHandle;
315 BOOL Unicode;
316 DWORD Length;
317 INPUT_RECORD* InputRecord;
318 } CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
319
320 typedef struct
321 {
322 DWORD Access;
323 BOOL Inheritable;
324 HANDLE Handle;
325 DWORD ShareMode;
326 } CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
327 CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
328
329 typedef struct
330 {
331 HANDLE Handle;
332 } CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
333
334 typedef struct
335 {
336 HANDLE Handle;
337 } CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
338
339 typedef struct
340 {
341 HANDLE Handle;
342 DWORD Access;
343 BOOL Inheritable;
344 DWORD Options;
345 } CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
346
347 #define CONSOLE_HARDWARE_STATE_GET 0
348 #define CONSOLE_HARDWARE_STATE_SET 1
349
350 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
351 #define CONSOLE_HARDWARE_STATE_DIRECT 1
352
353 typedef struct
354 {
355 HANDLE ConsoleHandle;
356 DWORD SetGet; /* 0=get; 1=set */
357 DWORD State;
358 } CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
359
360 typedef struct
361 {
362 HWND WindowHandle;
363 } CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
364
365 typedef struct
366 {
367 HICON WindowIcon;
368 } CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
369
370 typedef struct
371 {
372 HDESK DesktopHandle;
373 } CSRSS_CREATE_DESKTOP, *PCSRSS_CREATE_DESKTOP;
374
375 typedef struct
376 {
377 HWND DesktopWindow;
378 ULONG Width;
379 ULONG Height;
380 } CSRSS_SHOW_DESKTOP, *PCSRSS_SHOW_DESKTOP;
381
382 typedef struct
383 {
384 HWND DesktopWindow;
385 } CSRSS_HIDE_DESKTOP, *PCSRSS_HIDE_DESKTOP;
386
387 typedef struct
388 {
389 HWND LogonNotifyWindow;
390 } CSRSS_SET_LOGON_NOTIFY_WINDOW, *PCSRSS_SET_LOGON_NOTIFY_WINDOW;
391
392 typedef struct
393 {
394 HANDLE ProcessId;
395 BOOL Register;
396 } CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS;
397
398 typedef struct
399 {
400 UINT CodePage;
401 } CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
402
403 typedef struct
404 {
405 UINT CodePage;
406 } CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
407
408 typedef struct
409 {
410 UINT CodePage;
411 } CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
412
413 typedef struct
414 {
415 UINT CodePage;
416 } CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
417
418 typedef struct
419 {
420 HANDLE InputWaitHandle;
421 } CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
422
423 typedef struct
424 {
425 ULONG SourceLength;
426 ULONG ExeLength;
427 ULONG TargetLength;
428 } CSRSS_ADD_CONSOLE_ALIAS, *PCSRSS_ADD_CONSOLE_ALIAS;
429
430 typedef struct
431 {
432 ULONG SourceLength;
433 ULONG ExeLength;
434 ULONG BytesWritten;
435 ULONG TargetBufferLength;
436 PVOID TargetBuffer;
437 } CSRSS_GET_CONSOLE_ALIAS, *PCSRSS_GET_CONSOLE_ALIAS;
438
439 typedef struct
440 {
441 LPWSTR lpExeName;
442 DWORD BytesWritten;
443 DWORD AliasBufferLength;
444 LPWSTR AliasBuffer;
445 } CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIAS;
446
447 typedef struct
448 {
449 LPWSTR lpExeName;
450 DWORD Length;
451 } CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
452
453 typedef struct
454 {
455 DWORD BytesWritten;
456 DWORD Length;
457 LPWSTR ExeNames;
458 } CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
459
460 typedef struct
461 {
462 DWORD Length;
463 } CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
464
465 typedef struct
466 {
467 DWORD Event;
468 DWORD ProcessGroup;
469 } CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
470
471 typedef struct
472 {
473 HANDLE OutputHandle;
474 COORD Size;
475 } CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
476
477 typedef struct
478 {
479 CONSOLE_SELECTION_INFO Info;
480 } CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
481
482
483 #define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
484 #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
485 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
486 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
487 #define CSRSS_MAX_READ_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE))
488 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
489 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
490 #define CSRSS_MAX_GET_PROCESS_LIST (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_GET_PROCESS_LIST))
491
492 /* WCHARs, not bytes! */
493 #define CSRSS_MAX_TITLE_LENGTH 80
494 #define CSRSS_MAX_ALIAS_TARGET_LENGTH 80
495
496 #define CREATE_PROCESS (0x0)
497 #define TERMINATE_PROCESS (0x1)
498 #define WRITE_CONSOLE (0x2)
499 #define READ_CONSOLE (0x3)
500 #define ALLOC_CONSOLE (0x4)
501 #define FREE_CONSOLE (0x5)
502 #define CONNECT_PROCESS (0x6)
503 #define SCREEN_BUFFER_INFO (0x7)
504 #define SET_CURSOR (0x8)
505 #define FILL_OUTPUT (0x9)
506 #define READ_INPUT (0xA)
507 #define WRITE_CONSOLE_OUTPUT_CHAR (0xB)
508 #define WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
509 #define FILL_OUTPUT_ATTRIB (0xD)
510 #define GET_CURSOR_INFO (0xE)
511 #define SET_CURSOR_INFO (0xF)
512 #define SET_ATTRIB (0x10)
513 #define GET_CONSOLE_MODE (0x11)
514 #define SET_CONSOLE_MODE (0x12)
515 #define CREATE_SCREEN_BUFFER (0x13)
516 #define SET_SCREEN_BUFFER (0x14)
517 #define SET_TITLE (0x15)
518 #define GET_TITLE (0x16)
519 #define WRITE_CONSOLE_OUTPUT (0x17)
520 #define FLUSH_INPUT_BUFFER (0x18)
521 #define SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
522 #define READ_CONSOLE_OUTPUT_CHAR (0x1A)
523 #define READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
524 #define GET_NUM_INPUT_EVENTS (0x1C)
525 #define REGISTER_SERVICES_PROCESS (0x1D)
526 #define EXIT_REACTOS (0x1E)
527 #define GET_SHUTDOWN_PARAMETERS (0x1F)
528 #define SET_SHUTDOWN_PARAMETERS (0x20)
529 #define PEEK_CONSOLE_INPUT (0x21)
530 #define READ_CONSOLE_OUTPUT (0x22)
531 #define WRITE_CONSOLE_INPUT (0x23)
532 #define GET_INPUT_HANDLE (0x24)
533 #define GET_OUTPUT_HANDLE (0x25)
534 #define CLOSE_HANDLE (0x26)
535 #define VERIFY_HANDLE (0x27)
536 #define DUPLICATE_HANDLE (0x28)
537 #define SETGET_CONSOLE_HW_STATE (0x29)
538 #define GET_CONSOLE_WINDOW (0x2A)
539 #define CREATE_DESKTOP (0x2B)
540 #define SHOW_DESKTOP (0x2C)
541 #define HIDE_DESKTOP (0x2D)
542 #define SET_CONSOLE_ICON (0x2E)
543 #define SET_LOGON_NOTIFY_WINDOW (0x2F)
544 #define REGISTER_LOGON_PROCESS (0x30)
545 #define GET_CONSOLE_CP (0x31)
546 #define SET_CONSOLE_CP (0x32)
547 #define GET_CONSOLE_OUTPUT_CP (0x33)
548 #define SET_CONSOLE_OUTPUT_CP (0x34)
549 #define GET_INPUT_WAIT_HANDLE (0x35)
550 #define GET_PROCESS_LIST (0x36)
551 #define START_SCREEN_SAVER (0x37)
552 #define ADD_CONSOLE_ALIAS (0x38)
553 #define GET_CONSOLE_ALIAS (0x39)
554 #define GET_ALL_CONSOLE_ALIASES (0x3A)
555 #define GET_ALL_CONSOLE_ALIASES_LENGTH (0x3B)
556 #define GET_CONSOLE_ALIASES_EXES (0x3C)
557 #define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
558 #define GENERATE_CTRL_EVENT (0x3E)
559 #define CREATE_THREAD (0x3F)
560 #define SET_SCREEN_BUFFER_SIZE (0x40)
561 #define GET_CONSOLE_SELECTION_INFO (0x41)
562
563 /* Keep in sync with definition below. */
564 #define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
565
566 typedef struct _CSR_API_MESSAGE
567 {
568 PORT_MESSAGE Header;
569 PVOID CsrCaptureData;
570 ULONG Type;
571 NTSTATUS Status;
572 union
573 {
574 CSRSS_CREATE_PROCESS CreateProcessRequest;
575 CSRSS_CREATE_THREAD CreateThreadRequest;
576 CSRSS_CONNECT_PROCESS ConnectRequest;
577 CSRSS_WRITE_CONSOLE WriteConsoleRequest;
578 CSRSS_READ_CONSOLE ReadConsoleRequest;
579 CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
580 CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
581 CSRSS_SET_CURSOR SetCursorRequest;
582 CSRSS_FILL_OUTPUT FillOutputRequest;
583 CSRSS_READ_INPUT ReadInputRequest;
584 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
585 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
586 CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
587 CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
588 CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
589 CSRSS_SET_ATTRIB SetAttribRequest;
590 CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
591 CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
592 CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
593 CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
594 CSRSS_SET_TITLE SetTitleRequest;
595 CSRSS_GET_TITLE GetTitleRequest;
596 CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
597 CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
598 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
599 CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest;
600 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest;
601 CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
602 CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
603 CSRSS_EXIT_REACTOS ExitReactosRequest;
604 CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
605 CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest;
606 CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest;
607 CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest;
608 CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
609 CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
610 CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
611 CSRSS_CLOSE_HANDLE CloseHandleRequest;
612 CSRSS_VERIFY_HANDLE VerifyHandleRequest;
613 CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
614 CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
615 CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
616 CSRSS_CREATE_DESKTOP CreateDesktopRequest;
617 CSRSS_SHOW_DESKTOP ShowDesktopRequest;
618 CSRSS_HIDE_DESKTOP HideDesktopRequest;
619 CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
620 CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
621 CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
622 CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
623 CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
624 CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
625 CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
626 CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
627 CSRSS_GET_PROCESS_LIST GetProcessListRequest;
628 CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias;
629 CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias;
630 CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias;
631 CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength;
632 CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
633 CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
634 CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
635 CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
636 CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
637 } Data;
638 } CSR_API_MESSAGE, *PCSR_API_MESSAGE;
639
640 /* Types used in the new CSR. Temporarly here for proper compile of NTDLL */
641 #define CSR_SRV_SERVER 0
642
643 #define CsrSrvClientConnect 0
644 #define CsrSrvIdentifyAlertableThread 3
645 #define CsrSrvSetPriorityClass 4
646
647 #define CSR_MAKE_OPCODE(s,m) ((s) << 16) | (m)
648
649 typedef struct _CSR_CONNECTION_INFO
650 {
651 ULONG Version;
652 ULONG Unknown;
653 HANDLE ObjectDirectory;
654 PVOID SharedSectionBase;
655 PVOID SharedSectionHeap;
656 PVOID SharedSectionData;
657 ULONG DebugFlags;
658 ULONG Unknown2[3];
659 HANDLE ProcessId;
660 } CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
661
662 typedef struct _CSR_CLIENT_CONNECT
663 {
664 ULONG ServerId;
665 PVOID ConnectionInfo;
666 ULONG ConnectionInfoSize;
667 } CSR_CLIENT_CONNECT, *PCSR_CLIENT_CONNECT;
668
669 typedef struct _CSR_IDENTIFY_ALTERTABLE_THREAD
670 {
671 CLIENT_ID Cid;
672 } CSR_IDENTIFY_ALTERTABLE_THREAD, *PCSR_IDENTIFY_ALTERTABLE_THREAD;
673
674 typedef struct _CSR_SET_PRIORITY_CLASS
675 {
676 HANDLE hProcess;
677 ULONG PriorityClass;
678 } CSR_SET_PRIORITY_CLASS, *PCSR_SET_PRIORITY_CLASS;
679
680 typedef struct _CSR_API_MESSAGE2
681 {
682 PORT_MESSAGE Header;
683 union
684 {
685 CSR_CONNECTION_INFO ConnectionInfo;
686 struct
687 {
688 PVOID CsrCaptureData;
689 CSR_API_NUMBER Opcode;
690 ULONG Status;
691 ULONG Reserved;
692 union
693 {
694 CSR_CLIENT_CONNECT ClientConnect;
695 CSR_SET_PRIORITY_CLASS SetPriorityClass;
696 CSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
697 };
698 };
699 };
700 } CSR_API_MESSAGE2, *PCSR_API_MESSAGE2;
701
702 typedef struct _CSR_CAPTURE_BUFFER
703 {
704 ULONG Size;
705 struct _CSR_CAPTURE_BUFFER *PreviousCaptureBuffer;
706 ULONG PointerCount;
707 ULONG_PTR BufferEnd;
708 ULONG_PTR PointerArray[1];
709 } CSR_CAPTURE_BUFFER, *PCSR_CAPTURE_BUFFER;
710
711 #endif /* __INCLUDE_CSRSS_CSRSS_H */