7 #define CONSRV_SERVERDLL_INDEX 2
8 #define CONSRV_FIRST_API_NUMBER 512
10 // Windows 2k3 tables, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
11 // plus a little bit of Windows 7. It is for testing purposes. After that I will add stubs.
12 // Some names are also deduced from the subsystems/win32/csrss/csrsrv/server.c ones.
13 typedef enum _CONSRV_API_NUMBER
15 // ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
16 ConsolepGetConsoleInput
= CONSRV_FIRST_API_NUMBER
,
17 ConsolepWriteConsoleInput
,
18 ConsolepReadConsoleOutput
,
19 ConsolepWriteConsoleOutput
,
20 // ConsolepReadConsoleOutputString,
21 // ConsolepWriteConsoleOutputString,
22 // ConsolepFillConsoleOutput,
24 // ConsolepGetNumberOfFonts,
25 ConsolepGetNumberOfInputEvents
,
26 ConsolepGetScreenBufferInfo
,
27 ConsolepGetCursorInfo
,
28 // ConsolepGetMouseInfo,
29 // ConsolepGetFontInfo,
30 // ConsolepGetFontSize,
31 // ConsolepGetCurrentFont,
33 ConsolepSetActiveScreenBuffer
,
34 ConsolepFlushInputBuffer
,
35 // ConsolepGetLargestWindowSize,
36 ConsolepSetScreenBufferSize
,
37 // ConsolepSetCursorPosition,
38 ConsolepSetCursorInfo
,
39 // ConsolepSetWindowInfo,
40 ConsolepScrollScreenBuffer
,
41 // ConsolepSetTextAttribute,
46 ConsolepDuplicateHandle
,
47 /**/ ConsolepGetHandleInformation
/**/,
48 // ConsolepSetHandleInformation,
50 ConsolepVerifyIoHandle
,
55 ConsolepCreateScreenBuffer
,
56 // ConsolepInvalidateBitMapRect,
57 // ConsolepVDMOperation,
59 // ConsolepShowCursor,
60 // ConsolepMenuControl,
61 // ConsolepSetPalette,
62 // ConsolepSetDisplayMode,
63 // ConsolepRegisterVDM,
64 ConsolepGetHardwareState
,
65 ConsolepSetHardwareState
,
66 // ConsolepGetDisplayMode,
69 ConsolepGetAliasesLength
,
70 ConsolepGetAliasExesLength
,
73 ConsolepExpungeCommandHistory
,
74 ConsolepSetNumberOfCommands
,
75 ConsolepGetCommandHistoryLength
,
76 ConsolepGetCommandHistory
,
77 // ConsolepSetCommandHistoryMode,
80 // ConsolepSetKeyShortcuts,
81 // ConsolepSetMenuClose,
82 // ConsolepNotifyLastClose,
83 ConsolepGenerateCtrlEvent
,
84 // ConsolepGetKeyboardLayoutName,
85 ConsolepGetConsoleWindow
,
87 // ConsolepSetLocalEUDC,
88 // ConsolepSetCursorMode,
89 // ConsolepGetCursorMode,
90 // ConsolepRegisterOS2,
91 // ConsolepSetOS2OemFormat,
92 // ConsolepGetNlsMode,
93 // ConsolepSetNlsMode,
94 // ConsolepRegisterConsoleIME,
95 // ConsolepUnregisterConsoleIME,
98 ConsolepGetSelectionInfo
,
99 ConsolepGetProcessList
,
104 } CONSRV_API_NUMBER
, *PCONSRV_API_NUMBER
;
107 #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
108 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
109 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
110 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
111 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
115 HANDLE ConsoleHandle
;
117 ULONG NrCharactersToWrite
;
118 ULONG NrCharactersWritten
;
121 } CSRSS_WRITE_CONSOLE
, *PCSRSS_WRITE_CONSOLE
;
125 HANDLE ConsoleHandle
;
127 WORD NrCharactersToRead
;
128 WORD NrCharactersRead
;
131 UNICODE_STRING ExeName
;
132 DWORD CtrlWakeupMask
;
133 DWORD ControlKeyState
;
134 } CSRSS_READ_CONSOLE
, *PCSRSS_READ_CONSOLE
;
138 PCONTROLDISPATCHER CtrlDispatcher
;
139 BOOLEAN ConsoleNeeded
;
144 } CSRSS_ALLOC_CONSOLE
, *PCSRSS_ALLOC_CONSOLE
;
149 } CSRSS_FREE_CONSOLE
, *PCSRSS_FREE_CONSOLE
;
153 HANDLE ConsoleHandle
;
154 CONSOLE_SCREEN_BUFFER_INFO Info
;
155 } CSRSS_SCREEN_BUFFER_INFO
, *PCSRSS_SCREEN_BUFFER_INFO
;
159 HANDLE ConsoleHandle
;
161 } CSRSS_SET_CURSOR
, *PCSRSS_SET_CURSOR
;
165 HANDLE ConsoleHandle
;
174 ULONG NrCharactersWritten
;
175 } CSRSS_FILL_OUTPUT
, *PCSRSS_FILL_OUTPUT
;
179 HANDLE ConsoleHandle
;
183 } CSRSS_FILL_OUTPUT_ATTRIB
, *PCSRSS_FILL_OUTPUT_ATTRIB
;
187 HANDLE ConsoleHandle
;
192 } CSRSS_READ_INPUT
, *PCSRSS_READ_INPUT
;
196 HANDLE ConsoleHandle
;
201 ULONG NrCharactersWritten
;
203 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR
, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR
;
207 HANDLE ConsoleHandle
;
212 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB
, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB
;
216 HANDLE ConsoleHandle
;
217 CONSOLE_CURSOR_INFO Info
;
218 } CSRSS_GET_CURSOR_INFO
, *PCSRSS_GET_CURSOR_INFO
;
222 HANDLE ConsoleHandle
;
223 CONSOLE_CURSOR_INFO Info
;
224 } CSRSS_SET_CURSOR_INFO
, *PCSRSS_SET_CURSOR_INFO
;
228 HANDLE ConsoleHandle
;
230 } CSRSS_SET_ATTRIB
, *PCSRSS_SET_ATTRIB
;
234 HANDLE ConsoleHandle
;
236 } CSRSS_SET_CONSOLE_MODE
, *PCSRSS_SET_CONSOLE_MODE
;
240 HANDLE ConsoleHandle
;
242 } CSRSS_GET_CONSOLE_MODE
, *PCSRSS_GET_CONSOLE_MODE
;
249 HANDLE OutputHandle
; /* handle to newly created screen buffer */
250 } CSRSS_CREATE_SCREEN_BUFFER
, *PCSRSS_CREATE_SCREEN_BUFFER
;
254 HANDLE OutputHandle
; /* handle to screen buffer to switch to */
255 } CSRSS_SET_SCREEN_BUFFER
, *PCSRSS_SET_SCREEN_BUFFER
;
261 } CSRSS_SET_TITLE
, *PCSRSS_SET_TITLE
;
267 } CSRSS_GET_TITLE
, *PCSRSS_GET_TITLE
;
271 HANDLE ConsoleHandle
;
275 SMALL_RECT WriteRegion
;
277 } CSRSS_WRITE_CONSOLE_OUTPUT
, *PCSRSS_WRITE_CONSOLE_OUTPUT
;
282 } CSRSS_FLUSH_INPUT_BUFFER
, *PCSRSS_FLUSH_INPUT_BUFFER
;
286 HANDLE ConsoleHandle
;
288 SMALL_RECT ScrollRectangle
;
289 BOOLEAN UseClipRectangle
;
290 SMALL_RECT ClipRectangle
;
291 COORD DestinationOrigin
;
293 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER
, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER
;
297 HANDLE ConsoleHandle
;
299 DWORD NumCharsToRead
;
304 } CSRSS_READ_CONSOLE_OUTPUT_CHAR
, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR
;
308 HANDLE ConsoleHandle
;
309 DWORD NumAttrsToRead
;
313 } CSRSS_READ_CONSOLE_OUTPUT_ATTRIB
, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB
;
318 HANDLE ConsoleHandle
;
321 INPUT_RECORD
* InputRecord
;
322 } CSRSS_PEEK_CONSOLE_INPUT
, *PCSRSS_PEEK_CONSOLE_INPUT
;
326 HANDLE ConsoleHandle
;
330 SMALL_RECT ReadRegion
;
332 } CSRSS_READ_CONSOLE_OUTPUT
, *PCSRSS_READ_CONSOLE_OUTPUT
;
336 HANDLE ConsoleHandle
;
339 INPUT_RECORD
* InputRecord
;
340 } CSRSS_WRITE_CONSOLE_INPUT
, *PCSRSS_WRITE_CONSOLE_INPUT
;
348 } CSRSS_GET_INPUT_HANDLE
, *PCSRSS_GET_INPUT_HANDLE
,
349 CSRSS_GET_OUTPUT_HANDLE
, *PCSRSS_GET_OUTPUT_HANDLE
;
352 #define CONSOLE_HARDWARE_STATE_GET 0
353 #define CONSOLE_HARDWARE_STATE_SET 1
355 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
356 #define CONSOLE_HARDWARE_STATE_DIRECT 1
360 HANDLE ConsoleHandle
;
361 DWORD SetGet
; /* 0=get; 1=set */
363 } CSRSS_SETGET_CONSOLE_HW_STATE
, *PCSRSS_SETGET_CONSOLE_HW_STATE
;
368 } CSRSS_GET_CONSOLE_WINDOW
, *PCSRSS_GET_CONSOLE_WINDOW
;
373 } CSRSS_SET_CONSOLE_ICON
, *PCSRSS_SET_CONSOLE_ICON
;
380 } CSRSS_ADD_CONSOLE_ALIAS
, *PCSRSS_ADD_CONSOLE_ALIAS
;
387 ULONG TargetBufferLength
;
389 } CSRSS_GET_CONSOLE_ALIAS
, *PCSRSS_GET_CONSOLE_ALIAS
;
395 DWORD AliasBufferLength
;
397 } CSRSS_GET_ALL_CONSOLE_ALIASES
, *PCSRSS_GET_ALL_CONSOLE_ALIASES
;
403 } CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH
, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH
;
410 } CSRSS_GET_CONSOLE_ALIASES_EXES
, *PCSRSS_GET_CONSOLE_ALIASES_EXES
;
415 } CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH
, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH
;
421 } CSRSS_GENERATE_CTRL_EVENT
, *PCSRSS_GENERATE_CTRL_EVENT
;
425 HANDLE ConsoleHandle
;
426 DWORD NumInputEvents
;
427 } CSRSS_GET_NUM_INPUT_EVENTS
, *PCSRSS_GET_NUM_INPUT_EVENTS
;
433 } CSRSS_SET_SCREEN_BUFFER_SIZE
, *PCSRSS_SET_SCREEN_BUFFER_SIZE
;
437 CONSOLE_SELECTION_INFO Info
;
438 } CSRSS_GET_CONSOLE_SELECTION_INFO
, *PCSRSS_GET_CONSOLE_SELECTION_INFO
;
442 UNICODE_STRING ExeName
;
444 } CSRSS_GET_COMMAND_HISTORY_LENGTH
, *PCSRSS_GET_COMMAND_HISTORY_LENGTH
;
448 UNICODE_STRING ExeName
;
451 } CSRSS_GET_COMMAND_HISTORY
, *PCSRSS_GET_COMMAND_HISTORY
;
455 UNICODE_STRING ExeName
;
456 } CSRSS_EXPUNGE_COMMAND_HISTORY
, *PCSRSS_EXPUNGE_COMMAND_HISTORY
;
460 UNICODE_STRING ExeName
;
462 } CSRSS_SET_HISTORY_NUMBER_COMMANDS
, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS
;
466 DWORD HistoryBufferSize
;
467 DWORD NumberOfHistoryBuffers
;
469 } CSRSS_GET_HISTORY_INFO
, *PCSRSS_GET_HISTORY_INFO
,
470 CSRSS_SET_HISTORY_INFO
, *PCSRSS_SET_HISTORY_INFO
;;
475 } CSRSS_GET_CONSOLE_CP
, *PCSRSS_GET_CONSOLE_CP
;
480 } CSRSS_SET_CONSOLE_CP
, *PCSRSS_SET_CONSOLE_CP
;
485 } CSRSS_GET_CONSOLE_OUTPUT_CP
, *PCSRSS_GET_CONSOLE_OUTPUT_CP
;
490 } CSRSS_SET_CONSOLE_OUTPUT_CP
, *PCSRSS_SET_CONSOLE_OUTPUT_CP
;
492 typedef struct _CONSOLE_API_MESSAGE
496 PCSR_CAPTURE_BUFFER CsrCaptureData
;
497 CSR_API_NUMBER ApiNumber
;
498 ULONG Status
; // ReturnValue; // NTSTATUS Status
502 CSRSS_WRITE_CONSOLE WriteConsoleRequest
;
503 CSRSS_READ_CONSOLE ReadConsoleRequest
;
504 CSRSS_ALLOC_CONSOLE AllocConsoleRequest
;
505 CSRSS_FREE_CONSOLE FreeConsoleRequest
;
506 CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest
;
507 CSRSS_SET_CURSOR SetCursorRequest
;
508 CSRSS_FILL_OUTPUT FillOutputRequest
;
509 CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest
;
510 CSRSS_READ_INPUT ReadInputRequest
;
511 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest
;
512 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest
;
513 CSRSS_GET_CURSOR_INFO GetCursorInfoRequest
;
514 CSRSS_SET_CURSOR_INFO SetCursorInfoRequest
;
515 CSRSS_SET_ATTRIB SetAttribRequest
;
516 CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest
;
517 CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest
;
518 CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest
;
519 CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest
;
520 CSRSS_SET_TITLE SetTitleRequest
;
521 CSRSS_GET_TITLE GetTitleRequest
;
522 CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest
;
523 CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest
;
524 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest
;
525 CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest
;
526 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest
;
527 CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest
;
528 CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest
;
529 CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest
;
530 CSRSS_GET_INPUT_HANDLE GetInputHandleRequest
;
531 CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest
;
532 CSRSS_CLOSE_HANDLE CloseHandleRequest
;
533 CSRSS_VERIFY_HANDLE VerifyHandleRequest
;
534 CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest
;
535 CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle
;
536 CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest
;
537 CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest
;
538 CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest
;
539 CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias
;
540 CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias
;
541 CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias
;
542 CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength
;
543 CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes
;
544 CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength
;
545 CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent
;
546 CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest
;
547 CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize
;
548 CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo
;
549 CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength
;
550 CSRSS_GET_COMMAND_HISTORY GetCommandHistory
;
551 CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory
;
552 CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands
;
553 CSRSS_GET_HISTORY_INFO GetHistoryInfo
;
554 CSRSS_SET_HISTORY_INFO SetHistoryInfo
;
555 CSRSS_GET_CONSOLE_CP GetConsoleCodePage
;
556 CSRSS_SET_CONSOLE_CP SetConsoleCodePage
;
557 CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage
;
558 CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage
;
560 } CONSOLE_API_MESSAGE
, *PCONSOLE_API_MESSAGE
;
562 #endif // __CONMSG_H__