670e8ab85f3c981e4a62e2462587debcfa910f7e
[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 _BASE_SXS_CREATEPROCESS_MSG
35 {
36 ULONG Flags;
37 ULONG ProcessParameterFlags;
38 HANDLE FileHandle;
39 UNICODE_STRING SxsWin32ExePath;
40 UNICODE_STRING SxsNtExePath;
41 SIZE_T OverrideManifestOffset;
42 ULONG OverrideManifestSize;
43 SIZE_T OverridePolicyOffset;
44 ULONG OverridePolicySize;
45 PVOID PEManifestAddress;
46 ULONG PEManifestSize;
47 UNICODE_STRING CultureFallbacks;
48 ULONG Unknown[7];
49 UNICODE_STRING AssemblyName;
50 } BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG;
51
52 typedef struct
53 {
54 //
55 // NT-type structure (BASE_CREATEPROCESS_MSG)
56 //
57 HANDLE ProcessHandle;
58 HANDLE ThreadHandle;
59 CLIENT_ID ClientId;
60 ULONG CreationFlags;
61 ULONG VdmBinaryType;
62 ULONG VdmTask;
63 HANDLE hVDM;
64 BASE_SXS_CREATEPROCESS_MSG Sxs;
65 PVOID PebAddressNative;
66 ULONG PebAddressWow64;
67 USHORT ProcessorArchitecture;
68
69 //
70 // ReactOS Data
71 //
72 BOOL bInheritHandles;
73 } CSRSS_CREATE_PROCESS, *PCSRSS_CREATE_PROCESS;
74
75 typedef struct
76 {
77 CLIENT_ID ClientId;
78 HANDLE ThreadHandle;
79 } CSRSS_CREATE_THREAD, *PCSRSS_CREATE_THREAD;
80
81 typedef struct
82 {
83 UINT uExitCode;
84 } CSRSS_TERMINATE_PROCESS, *PCSRSS_TERMINATE_PROCESS;
85
86 typedef struct
87 {
88 USHORT nMaxIds;
89 PDWORD ProcessId;
90 ULONG nProcessIdsTotal;
91 } CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
92
93 typedef struct
94 {
95 HANDLE ConsoleHandle;
96 BOOL Unicode;
97 ULONG NrCharactersToWrite;
98 ULONG NrCharactersWritten;
99 HANDLE UnpauseEvent;
100 BYTE Buffer[0];
101 } CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
102
103 typedef struct
104 {
105 HANDLE ConsoleHandle;
106 BOOL Unicode;
107 WORD NrCharactersToRead;
108 WORD NrCharactersRead;
109 HANDLE EventHandle;
110 PVOID Buffer;
111 UNICODE_STRING ExeName;
112 DWORD CtrlWakeupMask;
113 DWORD ControlKeyState;
114 } CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
115
116 typedef struct
117 {
118 PCONTROLDISPATCHER CtrlDispatcher;
119 BOOLEAN ConsoleNeeded;
120 INT ShowCmd;
121 HANDLE Console;
122 HANDLE InputHandle;
123 HANDLE OutputHandle;
124 } CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
125
126 typedef struct
127 {
128 ULONG Dummy;
129 } CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
130
131 typedef struct
132 {
133 HANDLE ConsoleHandle;
134 CONSOLE_SCREEN_BUFFER_INFO Info;
135 } CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
136
137 typedef struct
138 {
139 HANDLE ConsoleHandle;
140 COORD Position;
141 } CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
142
143 typedef struct
144 {
145 HANDLE ConsoleHandle;
146 BOOL Unicode;
147 union
148 {
149 CHAR AsciiChar;
150 WCHAR UnicodeChar;
151 } Char;
152 COORD Position;
153 WORD Length;
154 ULONG NrCharactersWritten;
155 } CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
156
157 typedef struct
158 {
159 HANDLE ConsoleHandle;
160 CHAR Attribute;
161 COORD Coord;
162 WORD Length;
163 } CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
164
165 typedef struct
166 {
167 HANDLE ConsoleHandle;
168 BOOL Unicode;
169 INPUT_RECORD Input;
170 BOOL MoreEvents;
171 HANDLE Event;
172 } CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
173
174 typedef struct
175 {
176 HANDLE ConsoleHandle;
177 BOOL Unicode;
178 WORD Length;
179 COORD Coord;
180 COORD EndCoord;
181 ULONG NrCharactersWritten;
182 CHAR String[0];
183 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
184
185 typedef struct
186 {
187 HANDLE ConsoleHandle;
188 WORD Length;
189 COORD Coord;
190 COORD EndCoord;
191 WORD Attribute[0];
192 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
193
194 typedef struct
195 {
196 HANDLE ConsoleHandle;
197 CONSOLE_CURSOR_INFO Info;
198 } CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
199
200 typedef struct
201 {
202 HANDLE ConsoleHandle;
203 CONSOLE_CURSOR_INFO Info;
204 } CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
205
206 typedef struct
207 {
208 HANDLE ConsoleHandle;
209 WORD Attrib;
210 } CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
211
212 typedef struct
213 {
214 HANDLE ConsoleHandle;
215 DWORD Mode;
216 } CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
217
218 typedef struct
219 {
220 HANDLE ConsoleHandle;
221 DWORD ConsoleMode;
222 } CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
223
224 typedef struct
225 {
226 DWORD Access;
227 DWORD ShareMode;
228 BOOL Inheritable;
229 HANDLE OutputHandle; /* handle to newly created screen buffer */
230 } CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
231
232 typedef struct
233 {
234 HANDLE OutputHandle; /* handle to screen buffer to switch to */
235 } CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
236
237 typedef struct
238 {
239 HANDLE UniqueThread;
240 CLIENT_ID Cid;
241 } CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
242
243 typedef struct
244 {
245 DWORD Length;
246 PWCHAR Title;
247 } CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
248
249 typedef struct
250 {
251 DWORD Length;
252 PWCHAR Title;
253 } CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
254
255 typedef struct
256 {
257 HANDLE ConsoleHandle;
258 BOOL Unicode;
259 COORD BufferSize;
260 COORD BufferCoord;
261 SMALL_RECT WriteRegion;
262 CHAR_INFO* CharInfo;
263 } CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
264
265 typedef struct
266 {
267 HANDLE ConsoleInput;
268 } CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
269
270 typedef struct
271 {
272 HANDLE ConsoleHandle;
273 BOOL Unicode;
274 SMALL_RECT ScrollRectangle;
275 BOOLEAN UseClipRectangle;
276 SMALL_RECT ClipRectangle;
277 COORD DestinationOrigin;
278 CHAR_INFO Fill;
279 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
280
281 typedef struct
282 {
283 HANDLE ConsoleHandle;
284 BOOL Unicode;
285 DWORD NumCharsToRead;
286 COORD ReadCoord;
287 COORD EndCoord;
288 DWORD CharsRead;
289 CHAR String[0];
290 }CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
291
292 typedef struct
293 {
294 HANDLE ConsoleHandle;
295 DWORD NumAttrsToRead;
296 COORD ReadCoord;
297 COORD EndCoord;
298 WORD Attribute[0];
299 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
300
301 typedef struct
302 {
303 HANDLE ConsoleHandle;
304 DWORD NumInputEvents;
305 }CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
306
307 typedef struct
308 {
309 HANDLE ProcessId;
310 } CSRSS_REGISTER_SERVICES_PROCESS, *PCSRSS_REGISTER_SERVICES_PROCESS;
311
312 typedef struct
313 {
314 UINT Flags;
315 DWORD Reserved;
316 } CSRSS_EXIT_REACTOS, *PCSRSS_EXIT_REACTOS;
317
318 typedef struct
319 {
320 DWORD Level;
321 DWORD Flags;
322 } CSRSS_SET_SHUTDOWN_PARAMETERS, *PCSRSS_SET_SHUTDOWN_PARAMETERS;
323
324 typedef struct
325 {
326 DWORD Level;
327 DWORD Flags;
328 } CSRSS_GET_SHUTDOWN_PARAMETERS, *PCSRSS_GET_SHUTDOWN_PARAMETERS;
329
330 typedef struct
331 {
332 HANDLE ConsoleHandle;
333 BOOL Unicode;
334 DWORD Length;
335 INPUT_RECORD* InputRecord;
336 } CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
337
338 typedef struct
339 {
340 HANDLE ConsoleHandle;
341 BOOL Unicode;
342 COORD BufferSize;
343 COORD BufferCoord;
344 SMALL_RECT ReadRegion;
345 CHAR_INFO* CharInfo;
346 } CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
347
348 typedef struct
349 {
350 HANDLE ConsoleHandle;
351 BOOL Unicode;
352 DWORD Length;
353 INPUT_RECORD* InputRecord;
354 } CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
355
356 typedef struct
357 {
358 DWORD Access;
359 BOOL Inheritable;
360 HANDLE Handle;
361 DWORD ShareMode;
362 } CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
363 CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
364
365 typedef struct
366 {
367 HANDLE Handle;
368 } CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
369
370 typedef struct
371 {
372 HANDLE Handle;
373 } CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
374
375 typedef struct
376 {
377 HANDLE Handle;
378 DWORD Access;
379 BOOL Inheritable;
380 DWORD Options;
381 } CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
382
383 #define CONSOLE_HARDWARE_STATE_GET 0
384 #define CONSOLE_HARDWARE_STATE_SET 1
385
386 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
387 #define CONSOLE_HARDWARE_STATE_DIRECT 1
388
389 typedef struct
390 {
391 HANDLE ConsoleHandle;
392 DWORD SetGet; /* 0=get; 1=set */
393 DWORD State;
394 } CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
395
396 typedef struct
397 {
398 HWND WindowHandle;
399 } CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
400
401 typedef struct
402 {
403 HICON WindowIcon;
404 } CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
405
406 typedef struct
407 {
408 HDESK DesktopHandle;
409 } CSRSS_CREATE_DESKTOP, *PCSRSS_CREATE_DESKTOP;
410
411 typedef struct
412 {
413 HWND DesktopWindow;
414 ULONG Width;
415 ULONG Height;
416 } CSRSS_SHOW_DESKTOP, *PCSRSS_SHOW_DESKTOP;
417
418 typedef struct
419 {
420 HWND DesktopWindow;
421 } CSRSS_HIDE_DESKTOP, *PCSRSS_HIDE_DESKTOP;
422
423 typedef struct
424 {
425 HWND LogonNotifyWindow;
426 } CSRSS_SET_LOGON_NOTIFY_WINDOW, *PCSRSS_SET_LOGON_NOTIFY_WINDOW;
427
428 typedef struct
429 {
430 HANDLE ProcessId;
431 BOOL Register;
432 } CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS;
433
434 typedef struct
435 {
436 UINT CodePage;
437 } CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
438
439 typedef struct
440 {
441 UINT CodePage;
442 } CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
443
444 typedef struct
445 {
446 UINT CodePage;
447 } CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
448
449 typedef struct
450 {
451 UINT CodePage;
452 } CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
453
454 typedef struct
455 {
456 HANDLE InputWaitHandle;
457 } CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
458
459 typedef struct
460 {
461 ULONG SourceLength;
462 ULONG ExeLength;
463 ULONG TargetLength;
464 } CSRSS_ADD_CONSOLE_ALIAS, *PCSRSS_ADD_CONSOLE_ALIAS;
465
466 typedef struct
467 {
468 ULONG SourceLength;
469 ULONG ExeLength;
470 ULONG BytesWritten;
471 ULONG TargetBufferLength;
472 PVOID TargetBuffer;
473 } CSRSS_GET_CONSOLE_ALIAS, *PCSRSS_GET_CONSOLE_ALIAS;
474
475 typedef struct
476 {
477 LPWSTR lpExeName;
478 DWORD BytesWritten;
479 DWORD AliasBufferLength;
480 LPWSTR AliasBuffer;
481 } CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIAS;
482
483 typedef struct
484 {
485 LPWSTR lpExeName;
486 DWORD Length;
487 } CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
488
489 typedef struct
490 {
491 DWORD BytesWritten;
492 DWORD Length;
493 LPWSTR ExeNames;
494 } CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
495
496 typedef struct
497 {
498 DWORD Length;
499 } CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
500
501 typedef struct
502 {
503 DWORD Event;
504 DWORD ProcessGroup;
505 } CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
506
507 typedef struct
508 {
509 HANDLE OutputHandle;
510 COORD Size;
511 } CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
512
513 typedef struct
514 {
515 CONSOLE_SELECTION_INFO Info;
516 } CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
517
518 typedef struct
519 {
520 UNICODE_STRING ExeName;
521 DWORD Length;
522 } CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
523
524 typedef struct
525 {
526 UNICODE_STRING ExeName;
527 PWCHAR History;
528 DWORD Length;
529 } CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
530
531 typedef struct
532 {
533 UNICODE_STRING ExeName;
534 } CSRSS_EXPUNGE_COMMAND_HISTORY, *PCSRSS_EXPUNGE_COMMAND_HISTORY;
535
536 typedef struct
537 {
538 UNICODE_STRING ExeName;
539 DWORD NumCommands;
540 } CSRSS_SET_HISTORY_NUMBER_COMMANDS, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS;
541
542 typedef struct
543 {
544 DWORD HistoryBufferSize;
545 DWORD NumberOfHistoryBuffers;
546 DWORD dwFlags;
547 } CSRSS_GET_HISTORY_INFO, *PCSRSS_GET_HISTORY_INFO,
548 CSRSS_SET_HISTORY_INFO, *PCSRSS_SET_HISTORY_INFO;;
549
550 typedef struct
551 {
552 UINT UniqueID;
553 } CSRSS_GET_TEMP_FILE, *PCSRSS_GET_TEMP_FILE;
554
555 typedef struct
556 {
557 UNICODE_STRING DeviceName;
558 UNICODE_STRING TargetName;
559 DWORD dwFlags;
560 } CSRSS_DEFINE_DOS_DEVICE, *PCSRSS_DEFINE_DOS_DEVICE;
561
562 typedef struct
563 {
564 ULONG VideoMode;
565 } CSRSS_SOUND_SENTRY, *PCSRSS_SOUND_SENTRY;
566
567 typedef struct
568 {
569 ULONG iTask;
570 ULONG BinaryType;
571 HANDLE ConsoleHandle;
572 HANDLE VDMProcessHandle;
573 HANDLE WaitObjectForParent;
574 USHORT EntryIndex;
575 USHORT VDMCreationState;
576 } CSRSS_UPDATE_VDM_ENTRY, *PCSRSS_UPDATE_VDM_ENTRY;
577
578 typedef struct
579 {
580 HANDLE ConsoleHandle;
581 HANDLE hParent;
582 ULONG ExitCode;
583 } CSRSS_GET_VDM_EXIT_CODE, *PCSRSS_GET_VDM_EXIT_CODE;
584
585 typedef struct
586 {
587 ULONG iTask;
588 HANDLE ConsoleHandle;
589 ULONG BinaryType;
590 HANDLE WaitObjectForParent;
591 HANDLE StdIn;
592 HANDLE StdOut;
593 HANDLE StdErr;
594 ULONG CodePage;
595 ULONG dwCreationFlags;
596 PCHAR CmdLine;
597 PCHAR appName;
598 PCHAR PifFile;
599 PCHAR CurDirectory;
600 PCHAR Env;
601 ULONG EnvLen;
602 PVOID StartupInfo;
603 PCHAR Desktop;
604 ULONG DesktopLen;
605 PCHAR Title;
606 ULONG TitleLen;
607 PCHAR Reserved;
608 ULONG ReservedLen;
609 USHORT CmdLen;
610 USHORT AppLen;
611 USHORT PifLen;
612 USHORT CurDirectoryLen;
613 USHORT CurDrive;
614 USHORT VDMState;
615 } CSRSS_CHECK_VDM, *PCSRSS_CHECK_VDM;
616
617 #define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
618 #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
619 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
620 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
621 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
622 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
623
624 #define CREATE_PROCESS (0x0)
625 #define TERMINATE_PROCESS (0x1)
626 #define WRITE_CONSOLE (0x2)
627 #define READ_CONSOLE (0x3)
628 #define ALLOC_CONSOLE (0x4)
629 #define FREE_CONSOLE (0x5)
630 #define CONNECT_PROCESS (0x6)
631 #define SCREEN_BUFFER_INFO (0x7)
632 #define SET_CURSOR (0x8)
633 #define FILL_OUTPUT (0x9)
634 #define READ_INPUT (0xA)
635 #define WRITE_CONSOLE_OUTPUT_CHAR (0xB)
636 #define WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
637 #define FILL_OUTPUT_ATTRIB (0xD)
638 #define GET_CURSOR_INFO (0xE)
639 #define SET_CURSOR_INFO (0xF)
640 #define SET_ATTRIB (0x10)
641 #define GET_CONSOLE_MODE (0x11)
642 #define SET_CONSOLE_MODE (0x12)
643 #define CREATE_SCREEN_BUFFER (0x13)
644 #define SET_SCREEN_BUFFER (0x14)
645 #define SET_TITLE (0x15)
646 #define GET_TITLE (0x16)
647 #define WRITE_CONSOLE_OUTPUT (0x17)
648 #define FLUSH_INPUT_BUFFER (0x18)
649 #define SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
650 #define READ_CONSOLE_OUTPUT_CHAR (0x1A)
651 #define READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
652 #define GET_NUM_INPUT_EVENTS (0x1C)
653 #define REGISTER_SERVICES_PROCESS (0x1D)
654 #define EXIT_REACTOS (0x1E)
655 #define GET_SHUTDOWN_PARAMETERS (0x1F)
656 #define SET_SHUTDOWN_PARAMETERS (0x20)
657 #define PEEK_CONSOLE_INPUT (0x21)
658 #define READ_CONSOLE_OUTPUT (0x22)
659 #define WRITE_CONSOLE_INPUT (0x23)
660 #define GET_INPUT_HANDLE (0x24)
661 #define GET_OUTPUT_HANDLE (0x25)
662 #define CLOSE_HANDLE (0x26)
663 #define VERIFY_HANDLE (0x27)
664 #define DUPLICATE_HANDLE (0x28)
665 #define SETGET_CONSOLE_HW_STATE (0x29)
666 #define GET_CONSOLE_WINDOW (0x2A)
667 #define CREATE_DESKTOP (0x2B)
668 #define SHOW_DESKTOP (0x2C)
669 #define HIDE_DESKTOP (0x2D)
670 #define SET_CONSOLE_ICON (0x2E)
671 #define SET_LOGON_NOTIFY_WINDOW (0x2F)
672 #define REGISTER_LOGON_PROCESS (0x30)
673 #define GET_CONSOLE_CP (0x31)
674 #define SET_CONSOLE_CP (0x32)
675 #define GET_CONSOLE_OUTPUT_CP (0x33)
676 #define SET_CONSOLE_OUTPUT_CP (0x34)
677 #define GET_INPUT_WAIT_HANDLE (0x35)
678 #define GET_PROCESS_LIST (0x36)
679 #define START_SCREEN_SAVER (0x37)
680 #define ADD_CONSOLE_ALIAS (0x38)
681 #define GET_CONSOLE_ALIAS (0x39)
682 #define GET_ALL_CONSOLE_ALIASES (0x3A)
683 #define GET_ALL_CONSOLE_ALIASES_LENGTH (0x3B)
684 #define GET_CONSOLE_ALIASES_EXES (0x3C)
685 #define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
686 #define GENERATE_CTRL_EVENT (0x3E)
687 #define CREATE_THREAD (0x3F)
688 #define SET_SCREEN_BUFFER_SIZE (0x40)
689 #define GET_CONSOLE_SELECTION_INFO (0x41)
690 #define GET_COMMAND_HISTORY_LENGTH (0x42)
691 #define GET_COMMAND_HISTORY (0x43)
692 #define EXPUNGE_COMMAND_HISTORY (0x44)
693 #define SET_HISTORY_NUMBER_COMMANDS (0x45)
694 #define GET_HISTORY_INFO (0x46)
695 #define SET_HISTORY_INFO (0x47)
696 #define GET_TEMP_FILE (0x48)
697 #define DEFINE_DOS_DEVICE (0X49)
698 #define SOUND_SENTRY (0x50)
699 #define UPDATE_VDM_ENTRY (0x51)
700 #define GET_VDM_EXIT_CODE (0x52)
701 #define CHECK_VDM (0x53)
702
703 /* Keep in sync with definition below. */
704 #define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
705
706 typedef struct _CSR_API_MESSAGE
707 {
708 PORT_MESSAGE Header;
709 PVOID CsrCaptureData;
710 ULONG Type;
711 NTSTATUS Status;
712 union
713 {
714 CSRSS_CREATE_PROCESS CreateProcessRequest;
715 CSRSS_CREATE_THREAD CreateThreadRequest;
716 CSRSS_TERMINATE_PROCESS TerminateProcessRequest;
717 CSRSS_CONNECT_PROCESS ConnectRequest;
718 CSRSS_WRITE_CONSOLE WriteConsoleRequest;
719 CSRSS_READ_CONSOLE ReadConsoleRequest;
720 CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
721 CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
722 CSRSS_SET_CURSOR SetCursorRequest;
723 CSRSS_FILL_OUTPUT FillOutputRequest;
724 CSRSS_READ_INPUT ReadInputRequest;
725 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
726 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
727 CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
728 CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
729 CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
730 CSRSS_SET_ATTRIB SetAttribRequest;
731 CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
732 CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
733 CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
734 CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
735 CSRSS_SET_TITLE SetTitleRequest;
736 CSRSS_GET_TITLE GetTitleRequest;
737 CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
738 CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
739 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
740 CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest;
741 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest;
742 CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
743 CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
744 CSRSS_EXIT_REACTOS ExitReactosRequest;
745 CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
746 CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest;
747 CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest;
748 CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest;
749 CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
750 CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
751 CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
752 CSRSS_CLOSE_HANDLE CloseHandleRequest;
753 CSRSS_VERIFY_HANDLE VerifyHandleRequest;
754 CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
755 CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
756 CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
757 CSRSS_CREATE_DESKTOP CreateDesktopRequest;
758 CSRSS_SHOW_DESKTOP ShowDesktopRequest;
759 CSRSS_HIDE_DESKTOP HideDesktopRequest;
760 CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
761 CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
762 CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
763 CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
764 CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
765 CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
766 CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
767 CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
768 CSRSS_GET_PROCESS_LIST GetProcessListRequest;
769 CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias;
770 CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias;
771 CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias;
772 CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength;
773 CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
774 CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
775 CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
776 CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
777 CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
778 CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength;
779 CSRSS_GET_COMMAND_HISTORY GetCommandHistory;
780 CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory;
781 CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands;
782 CSRSS_GET_HISTORY_INFO GetHistoryInfo;
783 CSRSS_SET_HISTORY_INFO SetHistoryInfo;
784 CSRSS_GET_TEMP_FILE GetTempFile;
785 CSRSS_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
786 CSRSS_SOUND_SENTRY SoundSentryRequest;
787 CSRSS_UPDATE_VDM_ENTRY UpdateVdmEntry;
788 CSRSS_GET_VDM_EXIT_CODE GetVdmExitCode;
789 CSRSS_CHECK_VDM CheckVdm;
790 } Data;
791 } CSR_API_MESSAGE, *PCSR_API_MESSAGE;
792
793 typedef struct _NLS_USER_INFO
794 {
795 WCHAR iCountry[80];
796 WCHAR sCountry[80];
797 WCHAR sList[80];
798 WCHAR iMeasure[80];
799 WCHAR iPaperSize[80];
800 WCHAR sDecimal[80];
801 WCHAR sThousand[80];
802 WCHAR sGrouping[80];
803 WCHAR iDigits[80];
804 WCHAR iLZero[80];
805 WCHAR iNegNumber[80];
806 WCHAR sNativeDigits[80];
807 WCHAR iDigitSubstitution[80];
808 WCHAR sCurrency[80];
809 WCHAR sMonDecSep[80];
810 WCHAR sMonThouSep[80];
811 WCHAR sMonGrouping[80];
812 WCHAR iCurrDigits[80];
813 WCHAR iCurrency[80];
814 WCHAR iNegCurr[80];
815 WCHAR sPosSign[80];
816 WCHAR sNegSign[80];
817 WCHAR sTimeFormat[80];
818 WCHAR s1159[80];
819 WCHAR s2359[80];
820 WCHAR sShortDate[80];
821 WCHAR sYearMonth[80];
822 WCHAR sLongDate[80];
823 WCHAR iCalType[80];
824 WCHAR iFirstDay[80];
825 WCHAR iFirstWeek[80];
826 WCHAR sLocale[80];
827 WCHAR sLocaleName[85];
828 LCID UserLocaleId;
829 LUID InteractiveUserLuid;
830 CHAR InteractiveUserSid[68]; // SECURITY_MAX_SID_SIZE to make ros happy
831 ULONG ulCacheUpdateCount;
832 } NLS_USER_INFO, *PNLS_USER_INFO;
833
834
835 typedef struct _BASE_STATIC_SERVER_DATA
836 {
837 UNICODE_STRING WindowsDirectory;
838 UNICODE_STRING WindowsSystemDirectory;
839 UNICODE_STRING NamedObjectDirectory;
840 USHORT WindowsMajorVersion;
841 USHORT WindowsMinorVersion;
842 USHORT BuildNumber;
843 USHORT CSDNumber;
844 USHORT RCNumber;
845 WCHAR CSDVersion[128];
846 SYSTEM_BASIC_INFORMATION SysInfo;
847 SYSTEM_TIMEOFDAY_INFORMATION TimeOfDay;
848 PVOID IniFileMapping;
849 NLS_USER_INFO NlsUserInfo;
850 BOOLEAN DefaultSeparateVDM;
851 BOOLEAN IsWowTaskReady;
852 UNICODE_STRING WindowsSys32x86Directory;
853 BOOLEAN fTermsrvAppInstallMode;
854 TIME_ZONE_INFORMATION tziTermsrvClientTimeZone;
855 KSYSTEM_TIME ktTermsrvClientBias;
856 ULONG TermsrvClientTimeZoneId;
857 BOOLEAN LUIDDeviceMapsEnabled;
858 ULONG TermsrvClientTimeZoneChangeNum;
859 } BASE_STATIC_SERVER_DATA, *PBASE_STATIC_SERVER_DATA;
860
861
862 /* Types used in the new CSR. Temporarly here for proper compile of NTDLL */
863 #define CSR_SRV_SERVER 0
864
865 typedef enum _CSR_SRV_API_NUMBER
866 {
867 CsrpClientConnect,
868 CsrpThreadConnect,
869 CsrpProfileControl,
870 CsrpIdentifyAlertable,
871 CsrpSetPriorityClass,
872 CsrpMaxApiNumber
873 } CSR_SRV_API_NUMBER, *PCSR_SRV_API_NUMBER;
874
875 #define CSR_MAKE_OPCODE(s,m) ((s) << 16) | (m)
876
877 typedef struct _CSR_CONNECTION_INFO
878 {
879 ULONG Version;
880 ULONG Unknown;
881 HANDLE ObjectDirectory;
882 PVOID SharedSectionBase;
883 PVOID SharedSectionHeap;
884 PVOID SharedSectionData;
885 ULONG DebugFlags;
886 ULONG Unknown2[3];
887 HANDLE ProcessId;
888 } CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
889
890 typedef struct _CSR_CLIENT_CONNECT
891 {
892 ULONG ServerId;
893 PVOID ConnectionInfo;
894 ULONG ConnectionInfoSize;
895 } CSR_CLIENT_CONNECT, *PCSR_CLIENT_CONNECT;
896
897 typedef struct _CSR_IDENTIFY_ALTERTABLE_THREAD
898 {
899 CLIENT_ID Cid;
900 } CSR_IDENTIFY_ALTERTABLE_THREAD, *PCSR_IDENTIFY_ALTERTABLE_THREAD;
901
902 typedef struct _CSR_SET_PRIORITY_CLASS
903 {
904 HANDLE hProcess;
905 ULONG PriorityClass;
906 } CSR_SET_PRIORITY_CLASS, *PCSR_SET_PRIORITY_CLASS;
907
908 typedef struct _CSR_API_MESSAGE2
909 {
910 PORT_MESSAGE Header;
911 union
912 {
913 CSR_CONNECTION_INFO ConnectionInfo;
914 struct
915 {
916 PVOID CsrCaptureData;
917 CSR_API_NUMBER Opcode;
918 ULONG Status;
919 ULONG Reserved;
920 union
921 {
922 CSR_CLIENT_CONNECT ClientConnect;
923 CSR_SET_PRIORITY_CLASS SetPriorityClass;
924 CSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
925 };
926 };
927 };
928 } CSR_API_MESSAGE2, *PCSR_API_MESSAGE2;
929
930 typedef struct _CSR_CAPTURE_BUFFER
931 {
932 ULONG Size;
933 struct _CSR_CAPTURE_BUFFER *PreviousCaptureBuffer;
934 ULONG PointerCount;
935 ULONG_PTR BufferEnd;
936 ULONG_PTR PointerArray[1];
937 } CSR_CAPTURE_BUFFER, *PCSR_CAPTURE_BUFFER;
938
939 #endif /* __INCLUDE_CSRSS_CSRSS_H */