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