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