00001 #ifndef __INCLUDE_CSRSS_CSRSS_H
00002 #define __INCLUDE_CSRSS_CSRSS_H
00003
00004 #include <drivers/blue/ntddblue.h>
00005
00006 #define CSR_NATIVE 0x0000
00007 #define CSR_CONSOLE 0x0001
00008 #define CSR_GUI 0x0002
00009 #define CONSOLE_INPUT_MODE_VALID (0x0f)
00010 #define CONSOLE_OUTPUT_MODE_VALID (0x03)
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 typedef ULONG CSR_API_NUMBER;
00021
00022 #define MAKE_CSR_API(Number, Server) \
00023 ((Server) << 16) + Number
00024
00025 #define CSR_CSRSS_SECTION_SIZE (65536)
00026
00027 typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
00028
00029 typedef struct
00030 {
00031 ULONG Dummy;
00032 } CSRSS_CONNECT_PROCESS, *PCSRSS_CONNECT_PROCESS;
00033
00034 typedef struct _BASE_SXS_CREATEPROCESS_MSG
00035 {
00036 ULONG Flags;
00037 ULONG ProcessParameterFlags;
00038 HANDLE FileHandle;
00039 UNICODE_STRING SxsWin32ExePath;
00040 UNICODE_STRING SxsNtExePath;
00041 SIZE_T OverrideManifestOffset;
00042 ULONG OverrideManifestSize;
00043 SIZE_T OverridePolicyOffset;
00044 ULONG OverridePolicySize;
00045 PVOID PEManifestAddress;
00046 ULONG PEManifestSize;
00047 UNICODE_STRING CultureFallbacks;
00048 ULONG Unknown[7];
00049 UNICODE_STRING AssemblyName;
00050 } BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG;
00051
00052 typedef struct
00053 {
00054
00055
00056
00057 HANDLE ProcessHandle;
00058 HANDLE ThreadHandle;
00059 CLIENT_ID ClientId;
00060 ULONG CreationFlags;
00061 ULONG VdmBinaryType;
00062 ULONG VdmTask;
00063 HANDLE hVDM;
00064 BASE_SXS_CREATEPROCESS_MSG Sxs;
00065 PVOID PebAddressNative;
00066 ULONG PebAddressWow64;
00067 USHORT ProcessorArchitecture;
00068
00069
00070
00071
00072 BOOL bInheritHandles;
00073 } CSRSS_CREATE_PROCESS, *PCSRSS_CREATE_PROCESS;
00074
00075 typedef struct
00076 {
00077 CLIENT_ID ClientId;
00078 HANDLE ThreadHandle;
00079 } CSRSS_CREATE_THREAD, *PCSRSS_CREATE_THREAD;
00080
00081 typedef struct
00082 {
00083 UINT uExitCode;
00084 } CSRSS_TERMINATE_PROCESS, *PCSRSS_TERMINATE_PROCESS;
00085
00086 typedef struct
00087 {
00088 USHORT nMaxIds;
00089 PDWORD ProcessId;
00090 ULONG nProcessIdsTotal;
00091 } CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
00092
00093 typedef struct
00094 {
00095 HANDLE ConsoleHandle;
00096 BOOL Unicode;
00097 ULONG NrCharactersToWrite;
00098 ULONG NrCharactersWritten;
00099 HANDLE UnpauseEvent;
00100 BYTE Buffer[0];
00101 } CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
00102
00103 typedef struct
00104 {
00105 HANDLE ConsoleHandle;
00106 BOOL Unicode;
00107 WORD NrCharactersToRead;
00108 WORD NrCharactersRead;
00109 HANDLE EventHandle;
00110 PVOID Buffer;
00111 UNICODE_STRING ExeName;
00112 DWORD CtrlWakeupMask;
00113 DWORD ControlKeyState;
00114 } CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
00115
00116 typedef struct
00117 {
00118 PCONTROLDISPATCHER CtrlDispatcher;
00119 BOOLEAN ConsoleNeeded;
00120 INT ShowCmd;
00121 HANDLE Console;
00122 HANDLE InputHandle;
00123 HANDLE OutputHandle;
00124 } CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
00125
00126 typedef struct
00127 {
00128 ULONG Dummy;
00129 } CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
00130
00131 typedef struct
00132 {
00133 HANDLE ConsoleHandle;
00134 CONSOLE_SCREEN_BUFFER_INFO Info;
00135 } CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
00136
00137 typedef struct
00138 {
00139 HANDLE ConsoleHandle;
00140 COORD Position;
00141 } CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
00142
00143 typedef struct
00144 {
00145 HANDLE ConsoleHandle;
00146 BOOL Unicode;
00147 union
00148 {
00149 CHAR AsciiChar;
00150 WCHAR UnicodeChar;
00151 } Char;
00152 COORD Position;
00153 WORD Length;
00154 ULONG NrCharactersWritten;
00155 } CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
00156
00157 typedef struct
00158 {
00159 HANDLE ConsoleHandle;
00160 CHAR Attribute;
00161 COORD Coord;
00162 WORD Length;
00163 } CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
00164
00165 typedef struct
00166 {
00167 HANDLE ConsoleHandle;
00168 BOOL Unicode;
00169 INPUT_RECORD Input;
00170 BOOL MoreEvents;
00171 HANDLE Event;
00172 } CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
00173
00174 typedef struct
00175 {
00176 HANDLE ConsoleHandle;
00177 BOOL Unicode;
00178 WORD Length;
00179 COORD Coord;
00180 COORD EndCoord;
00181 ULONG NrCharactersWritten;
00182 CHAR String[0];
00183 } CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
00184
00185 typedef struct
00186 {
00187 HANDLE ConsoleHandle;
00188 WORD Length;
00189 COORD Coord;
00190 COORD EndCoord;
00191 WORD Attribute[0];
00192 } CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
00193
00194 typedef struct
00195 {
00196 HANDLE ConsoleHandle;
00197 CONSOLE_CURSOR_INFO Info;
00198 } CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
00199
00200 typedef struct
00201 {
00202 HANDLE ConsoleHandle;
00203 CONSOLE_CURSOR_INFO Info;
00204 } CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
00205
00206 typedef struct
00207 {
00208 HANDLE ConsoleHandle;
00209 WORD Attrib;
00210 } CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
00211
00212 typedef struct
00213 {
00214 HANDLE ConsoleHandle;
00215 DWORD Mode;
00216 } CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
00217
00218 typedef struct
00219 {
00220 HANDLE ConsoleHandle;
00221 DWORD ConsoleMode;
00222 } CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
00223
00224 typedef struct
00225 {
00226 DWORD Access;
00227 DWORD ShareMode;
00228 BOOL Inheritable;
00229 HANDLE OutputHandle;
00230 } CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
00231
00232 typedef struct
00233 {
00234 HANDLE OutputHandle;
00235 } CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
00236
00237 typedef struct
00238 {
00239 HANDLE UniqueThread;
00240 CLIENT_ID Cid;
00241 } CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
00242
00243 typedef struct
00244 {
00245 DWORD Length;
00246 PWCHAR Title;
00247 } CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
00248
00249 typedef struct
00250 {
00251 DWORD Length;
00252 PWCHAR Title;
00253 } CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
00254
00255 typedef struct
00256 {
00257 HANDLE ConsoleHandle;
00258 BOOL Unicode;
00259 COORD BufferSize;
00260 COORD BufferCoord;
00261 SMALL_RECT WriteRegion;
00262 CHAR_INFO* CharInfo;
00263 } CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
00264
00265 typedef struct
00266 {
00267 HANDLE ConsoleInput;
00268 } CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
00269
00270 typedef struct
00271 {
00272 HANDLE ConsoleHandle;
00273 BOOL Unicode;
00274 SMALL_RECT ScrollRectangle;
00275 BOOLEAN UseClipRectangle;
00276 SMALL_RECT ClipRectangle;
00277 COORD DestinationOrigin;
00278 CHAR_INFO Fill;
00279 } CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
00280
00281 typedef struct
00282 {
00283 HANDLE ConsoleHandle;
00284 BOOL Unicode;
00285 DWORD NumCharsToRead;
00286 COORD ReadCoord;
00287 COORD EndCoord;
00288 DWORD CharsRead;
00289 CHAR String[0];
00290 }CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
00291
00292 typedef struct
00293 {
00294 HANDLE ConsoleHandle;
00295 DWORD NumAttrsToRead;
00296 COORD ReadCoord;
00297 COORD EndCoord;
00298 WORD Attribute[0];
00299 }CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
00300
00301 typedef struct
00302 {
00303 HANDLE ConsoleHandle;
00304 DWORD NumInputEvents;
00305 }CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
00306
00307 typedef struct
00308 {
00309 HANDLE ProcessId;
00310 } CSRSS_REGISTER_SERVICES_PROCESS, *PCSRSS_REGISTER_SERVICES_PROCESS;
00311
00312 typedef struct
00313 {
00314 UINT Flags;
00315 DWORD Reserved;
00316 } CSRSS_EXIT_REACTOS, *PCSRSS_EXIT_REACTOS;
00317
00318 typedef struct
00319 {
00320 DWORD Level;
00321 DWORD Flags;
00322 } CSRSS_SET_SHUTDOWN_PARAMETERS, *PCSRSS_SET_SHUTDOWN_PARAMETERS;
00323
00324 typedef struct
00325 {
00326 DWORD Level;
00327 DWORD Flags;
00328 } CSRSS_GET_SHUTDOWN_PARAMETERS, *PCSRSS_GET_SHUTDOWN_PARAMETERS;
00329
00330 typedef struct
00331 {
00332 HANDLE ConsoleHandle;
00333 BOOL Unicode;
00334 DWORD Length;
00335 INPUT_RECORD* InputRecord;
00336 } CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
00337
00338 typedef struct
00339 {
00340 HANDLE ConsoleHandle;
00341 BOOL Unicode;
00342 COORD BufferSize;
00343 COORD BufferCoord;
00344 SMALL_RECT ReadRegion;
00345 CHAR_INFO* CharInfo;
00346 } CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
00347
00348 typedef struct
00349 {
00350 HANDLE ConsoleHandle;
00351 BOOL Unicode;
00352 DWORD Length;
00353 INPUT_RECORD* InputRecord;
00354 } CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
00355
00356 typedef struct
00357 {
00358 DWORD Access;
00359 BOOL Inheritable;
00360 HANDLE Handle;
00361 DWORD ShareMode;
00362 } CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
00363 CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
00364
00365 typedef struct
00366 {
00367 HANDLE Handle;
00368 } CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
00369
00370 typedef struct
00371 {
00372 HANDLE Handle;
00373 } CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
00374
00375 typedef struct
00376 {
00377 HANDLE Handle;
00378 DWORD Access;
00379 BOOL Inheritable;
00380 DWORD Options;
00381 } CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
00382
00383 #define CONSOLE_HARDWARE_STATE_GET 0
00384 #define CONSOLE_HARDWARE_STATE_SET 1
00385
00386 #define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
00387 #define CONSOLE_HARDWARE_STATE_DIRECT 1
00388
00389 typedef struct
00390 {
00391 HANDLE ConsoleHandle;
00392 DWORD SetGet;
00393 DWORD State;
00394 } CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
00395
00396 typedef struct
00397 {
00398 HWND WindowHandle;
00399 } CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
00400
00401 typedef struct
00402 {
00403 HICON WindowIcon;
00404 } CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
00405
00406 typedef struct
00407 {
00408 HDESK DesktopHandle;
00409 } CSRSS_CREATE_DESKTOP, *PCSRSS_CREATE_DESKTOP;
00410
00411 typedef struct
00412 {
00413 HWND DesktopWindow;
00414 ULONG Width;
00415 ULONG Height;
00416 } CSRSS_SHOW_DESKTOP, *PCSRSS_SHOW_DESKTOP;
00417
00418 typedef struct
00419 {
00420 HWND DesktopWindow;
00421 } CSRSS_HIDE_DESKTOP, *PCSRSS_HIDE_DESKTOP;
00422
00423 typedef struct
00424 {
00425 HWND LogonNotifyWindow;
00426 } CSRSS_SET_LOGON_NOTIFY_WINDOW, *PCSRSS_SET_LOGON_NOTIFY_WINDOW;
00427
00428 typedef struct
00429 {
00430 HANDLE ProcessId;
00431 BOOL Register;
00432 } CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS;
00433
00434 typedef struct
00435 {
00436 UINT CodePage;
00437 } CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
00438
00439 typedef struct
00440 {
00441 UINT CodePage;
00442 } CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
00443
00444 typedef struct
00445 {
00446 UINT CodePage;
00447 } CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
00448
00449 typedef struct
00450 {
00451 UINT CodePage;
00452 } CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
00453
00454 typedef struct
00455 {
00456 HANDLE InputWaitHandle;
00457 } CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
00458
00459 typedef struct
00460 {
00461 ULONG SourceLength;
00462 ULONG ExeLength;
00463 ULONG TargetLength;
00464 } CSRSS_ADD_CONSOLE_ALIAS, *PCSRSS_ADD_CONSOLE_ALIAS;
00465
00466 typedef struct
00467 {
00468 ULONG SourceLength;
00469 ULONG ExeLength;
00470 ULONG BytesWritten;
00471 ULONG TargetBufferLength;
00472 PVOID TargetBuffer;
00473 } CSRSS_GET_CONSOLE_ALIAS, *PCSRSS_GET_CONSOLE_ALIAS;
00474
00475 typedef struct
00476 {
00477 LPWSTR lpExeName;
00478 DWORD BytesWritten;
00479 DWORD AliasBufferLength;
00480 LPWSTR AliasBuffer;
00481 } CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIAS;
00482
00483 typedef struct
00484 {
00485 LPWSTR lpExeName;
00486 DWORD Length;
00487 } CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
00488
00489 typedef struct
00490 {
00491 DWORD BytesWritten;
00492 DWORD Length;
00493 LPWSTR ExeNames;
00494 } CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
00495
00496 typedef struct
00497 {
00498 DWORD Length;
00499 } CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
00500
00501 typedef struct
00502 {
00503 DWORD Event;
00504 DWORD ProcessGroup;
00505 } CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
00506
00507 typedef struct
00508 {
00509 HANDLE OutputHandle;
00510 COORD Size;
00511 } CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
00512
00513 typedef struct
00514 {
00515 CONSOLE_SELECTION_INFO Info;
00516 } CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
00517
00518 typedef struct
00519 {
00520 UNICODE_STRING ExeName;
00521 DWORD Length;
00522 } CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
00523
00524 typedef struct
00525 {
00526 UNICODE_STRING ExeName;
00527 PWCHAR History;
00528 DWORD Length;
00529 } CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
00530
00531 typedef struct
00532 {
00533 UNICODE_STRING ExeName;
00534 } CSRSS_EXPUNGE_COMMAND_HISTORY, *PCSRSS_EXPUNGE_COMMAND_HISTORY;
00535
00536 typedef struct
00537 {
00538 UNICODE_STRING ExeName;
00539 DWORD NumCommands;
00540 } CSRSS_SET_HISTORY_NUMBER_COMMANDS, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS;
00541
00542 typedef struct
00543 {
00544 DWORD HistoryBufferSize;
00545 DWORD NumberOfHistoryBuffers;
00546 DWORD dwFlags;
00547 } CSRSS_GET_HISTORY_INFO, *PCSRSS_GET_HISTORY_INFO,
00548 CSRSS_SET_HISTORY_INFO, *PCSRSS_SET_HISTORY_INFO;;
00549
00550 typedef struct
00551 {
00552 UINT UniqueID;
00553 } CSRSS_GET_TEMP_FILE, *PCSRSS_GET_TEMP_FILE;
00554
00555 typedef struct
00556 {
00557 UNICODE_STRING DeviceName;
00558 UNICODE_STRING TargetName;
00559 DWORD dwFlags;
00560 } CSRSS_DEFINE_DOS_DEVICE, *PCSRSS_DEFINE_DOS_DEVICE;
00561
00562 typedef struct
00563 {
00564 ULONG VideoMode;
00565 } CSRSS_SOUND_SENTRY, *PCSRSS_SOUND_SENTRY;
00566
00567 typedef struct
00568 {
00569 ULONG iTask;
00570 ULONG BinaryType;
00571 HANDLE ConsoleHandle;
00572 HANDLE VDMProcessHandle;
00573 HANDLE WaitObjectForParent;
00574 USHORT EntryIndex;
00575 USHORT VDMCreationState;
00576 } CSRSS_UPDATE_VDM_ENTRY, *PCSRSS_UPDATE_VDM_ENTRY;
00577
00578 typedef struct
00579 {
00580 HANDLE ConsoleHandle;
00581 HANDLE hParent;
00582 ULONG ExitCode;
00583 } CSRSS_GET_VDM_EXIT_CODE, *PCSRSS_GET_VDM_EXIT_CODE;
00584
00585 typedef struct
00586 {
00587 ULONG iTask;
00588 HANDLE ConsoleHandle;
00589 ULONG BinaryType;
00590 HANDLE WaitObjectForParent;
00591 HANDLE StdIn;
00592 HANDLE StdOut;
00593 HANDLE StdErr;
00594 ULONG CodePage;
00595 ULONG dwCreationFlags;
00596 PCHAR CmdLine;
00597 PCHAR appName;
00598 PCHAR PifFile;
00599 PCHAR CurDirectory;
00600 PCHAR Env;
00601 ULONG EnvLen;
00602 PVOID StartupInfo;
00603 PCHAR Desktop;
00604 ULONG DesktopLen;
00605 PCHAR Title;
00606 ULONG TitleLen;
00607 PCHAR Reserved;
00608 ULONG ReservedLen;
00609 USHORT CmdLen;
00610 USHORT AppLen;
00611 USHORT PifLen;
00612 USHORT CurDirectoryLen;
00613 USHORT CurDrive;
00614 USHORT VDMState;
00615 } CSRSS_CHECK_VDM, *PCSRSS_CHECK_VDM;
00616
00617 #define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
00618 #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
00619 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
00620 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
00621 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
00622 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
00623
00624 #define CREATE_PROCESS (0x0)
00625 #define TERMINATE_PROCESS (0x1)
00626 #define WRITE_CONSOLE (0x2)
00627 #define READ_CONSOLE (0x3)
00628 #define ALLOC_CONSOLE (0x4)
00629 #define FREE_CONSOLE (0x5)
00630 #define CONNECT_PROCESS (0x6)
00631 #define SCREEN_BUFFER_INFO (0x7)
00632 #define SET_CURSOR (0x8)
00633 #define FILL_OUTPUT (0x9)
00634 #define READ_INPUT (0xA)
00635 #define WRITE_CONSOLE_OUTPUT_CHAR (0xB)
00636 #define WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
00637 #define FILL_OUTPUT_ATTRIB (0xD)
00638 #define GET_CURSOR_INFO (0xE)
00639 #define SET_CURSOR_INFO (0xF)
00640 #define SET_ATTRIB (0x10)
00641 #define GET_CONSOLE_MODE (0x11)
00642 #define SET_CONSOLE_MODE (0x12)
00643 #define CREATE_SCREEN_BUFFER (0x13)
00644 #define SET_SCREEN_BUFFER (0x14)
00645 #define SET_TITLE (0x15)
00646 #define GET_TITLE (0x16)
00647 #define WRITE_CONSOLE_OUTPUT (0x17)
00648 #define FLUSH_INPUT_BUFFER (0x18)
00649 #define SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
00650 #define READ_CONSOLE_OUTPUT_CHAR (0x1A)
00651 #define READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
00652 #define GET_NUM_INPUT_EVENTS (0x1C)
00653 #define REGISTER_SERVICES_PROCESS (0x1D)
00654 #define EXIT_REACTOS (0x1E)
00655 #define GET_SHUTDOWN_PARAMETERS (0x1F)
00656 #define SET_SHUTDOWN_PARAMETERS (0x20)
00657 #define PEEK_CONSOLE_INPUT (0x21)
00658 #define READ_CONSOLE_OUTPUT (0x22)
00659 #define WRITE_CONSOLE_INPUT (0x23)
00660 #define GET_INPUT_HANDLE (0x24)
00661 #define GET_OUTPUT_HANDLE (0x25)
00662 #define CLOSE_HANDLE (0x26)
00663 #define VERIFY_HANDLE (0x27)
00664 #define DUPLICATE_HANDLE (0x28)
00665 #define SETGET_CONSOLE_HW_STATE (0x29)
00666 #define GET_CONSOLE_WINDOW (0x2A)
00667 #define CREATE_DESKTOP (0x2B)
00668 #define SHOW_DESKTOP (0x2C)
00669 #define HIDE_DESKTOP (0x2D)
00670 #define SET_CONSOLE_ICON (0x2E)
00671 #define SET_LOGON_NOTIFY_WINDOW (0x2F)
00672 #define REGISTER_LOGON_PROCESS (0x30)
00673 #define GET_CONSOLE_CP (0x31)
00674 #define SET_CONSOLE_CP (0x32)
00675 #define GET_CONSOLE_OUTPUT_CP (0x33)
00676 #define SET_CONSOLE_OUTPUT_CP (0x34)
00677 #define GET_INPUT_WAIT_HANDLE (0x35)
00678 #define GET_PROCESS_LIST (0x36)
00679 #define START_SCREEN_SAVER (0x37)
00680 #define ADD_CONSOLE_ALIAS (0x38)
00681 #define GET_CONSOLE_ALIAS (0x39)
00682 #define GET_ALL_CONSOLE_ALIASES (0x3A)
00683 #define GET_ALL_CONSOLE_ALIASES_LENGTH (0x3B)
00684 #define GET_CONSOLE_ALIASES_EXES (0x3C)
00685 #define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
00686 #define GENERATE_CTRL_EVENT (0x3E)
00687 #define CREATE_THREAD (0x3F)
00688 #define SET_SCREEN_BUFFER_SIZE (0x40)
00689 #define GET_CONSOLE_SELECTION_INFO (0x41)
00690 #define GET_COMMAND_HISTORY_LENGTH (0x42)
00691 #define GET_COMMAND_HISTORY (0x43)
00692 #define EXPUNGE_COMMAND_HISTORY (0x44)
00693 #define SET_HISTORY_NUMBER_COMMANDS (0x45)
00694 #define GET_HISTORY_INFO (0x46)
00695 #define SET_HISTORY_INFO (0x47)
00696 #define GET_TEMP_FILE (0x48)
00697 #define DEFINE_DOS_DEVICE (0X49)
00698 #define SOUND_SENTRY (0x50)
00699 #define UPDATE_VDM_ENTRY (0x51)
00700 #define GET_VDM_EXIT_CODE (0x52)
00701 #define CHECK_VDM (0x53)
00702
00703
00704 #define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
00705
00706 typedef struct _CSR_API_MESSAGE
00707 {
00708 PORT_MESSAGE Header;
00709 PVOID CsrCaptureData;
00710 ULONG Type;
00711 NTSTATUS Status;
00712 union
00713 {
00714 CSRSS_CREATE_PROCESS CreateProcessRequest;
00715 CSRSS_CREATE_THREAD CreateThreadRequest;
00716 CSRSS_TERMINATE_PROCESS TerminateProcessRequest;
00717 CSRSS_CONNECT_PROCESS ConnectRequest;
00718 CSRSS_WRITE_CONSOLE WriteConsoleRequest;
00719 CSRSS_READ_CONSOLE ReadConsoleRequest;
00720 CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
00721 CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
00722 CSRSS_SET_CURSOR SetCursorRequest;
00723 CSRSS_FILL_OUTPUT FillOutputRequest;
00724 CSRSS_READ_INPUT ReadInputRequest;
00725 CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
00726 CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
00727 CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
00728 CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
00729 CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
00730 CSRSS_SET_ATTRIB SetAttribRequest;
00731 CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
00732 CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
00733 CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
00734 CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
00735 CSRSS_SET_TITLE SetTitleRequest;
00736 CSRSS_GET_TITLE GetTitleRequest;
00737 CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
00738 CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
00739 CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
00740 CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest;
00741 CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest;
00742 CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
00743 CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
00744 CSRSS_EXIT_REACTOS ExitReactosRequest;
00745 CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
00746 CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest;
00747 CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest;
00748 CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest;
00749 CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
00750 CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
00751 CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
00752 CSRSS_CLOSE_HANDLE CloseHandleRequest;
00753 CSRSS_VERIFY_HANDLE VerifyHandleRequest;
00754 CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
00755 CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
00756 CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
00757 CSRSS_CREATE_DESKTOP CreateDesktopRequest;
00758 CSRSS_SHOW_DESKTOP ShowDesktopRequest;
00759 CSRSS_HIDE_DESKTOP HideDesktopRequest;
00760 CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
00761 CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
00762 CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
00763 CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
00764 CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
00765 CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
00766 CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
00767 CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
00768 CSRSS_GET_PROCESS_LIST GetProcessListRequest;
00769 CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias;
00770 CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias;
00771 CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias;
00772 CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength;
00773 CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
00774 CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
00775 CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
00776 CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
00777 CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
00778 CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength;
00779 CSRSS_GET_COMMAND_HISTORY GetCommandHistory;
00780 CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory;
00781 CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands;
00782 CSRSS_GET_HISTORY_INFO GetHistoryInfo;
00783 CSRSS_SET_HISTORY_INFO SetHistoryInfo;
00784 CSRSS_GET_TEMP_FILE GetTempFile;
00785 CSRSS_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
00786 CSRSS_SOUND_SENTRY SoundSentryRequest;
00787 CSRSS_UPDATE_VDM_ENTRY UpdateVdmEntry;
00788 CSRSS_GET_VDM_EXIT_CODE GetVdmExitCode;
00789 CSRSS_CHECK_VDM CheckVdm;
00790 } Data;
00791 } CSR_API_MESSAGE, *PCSR_API_MESSAGE;
00792
00793 typedef struct _NLS_USER_INFO
00794 {
00795 WCHAR iCountry[80];
00796 WCHAR sCountry[80];
00797 WCHAR sList[80];
00798 WCHAR iMeasure[80];
00799 WCHAR iPaperSize[80];
00800 WCHAR sDecimal[80];
00801 WCHAR sThousand[80];
00802 WCHAR sGrouping[80];
00803 WCHAR iDigits[80];
00804 WCHAR iLZero[80];
00805 WCHAR iNegNumber[80];
00806 WCHAR sNativeDigits[80];
00807 WCHAR iDigitSubstitution[80];
00808 WCHAR sCurrency[80];
00809 WCHAR sMonDecSep[80];
00810 WCHAR sMonThouSep[80];
00811 WCHAR sMonGrouping[80];
00812 WCHAR iCurrDigits[80];
00813 WCHAR iCurrency[80];
00814 WCHAR iNegCurr[80];
00815 WCHAR sPosSign[80];
00816 WCHAR sNegSign[80];
00817 WCHAR sTimeFormat[80];
00818 WCHAR s1159[80];
00819 WCHAR s2359[80];
00820 WCHAR sShortDate[80];
00821 WCHAR sYearMonth[80];
00822 WCHAR sLongDate[80];
00823 WCHAR iCalType[80];
00824 WCHAR iFirstDay[80];
00825 WCHAR iFirstWeek[80];
00826 WCHAR sLocale[80];
00827 WCHAR sLocaleName[85];
00828 LCID UserLocaleId;
00829 LUID InteractiveUserLuid;
00830 CHAR InteractiveUserSid[68];
00831 ULONG ulCacheUpdateCount;
00832 } NLS_USER_INFO, *PNLS_USER_INFO;
00833
00834
00835 typedef struct _BASE_STATIC_SERVER_DATA
00836 {
00837 UNICODE_STRING WindowsDirectory;
00838 UNICODE_STRING WindowsSystemDirectory;
00839 UNICODE_STRING NamedObjectDirectory;
00840 USHORT WindowsMajorVersion;
00841 USHORT WindowsMinorVersion;
00842 USHORT BuildNumber;
00843 USHORT CSDNumber;
00844 USHORT RCNumber;
00845 WCHAR CSDVersion[128];
00846 SYSTEM_BASIC_INFORMATION SysInfo;
00847 SYSTEM_TIMEOFDAY_INFORMATION TimeOfDay;
00848 PVOID IniFileMapping;
00849 NLS_USER_INFO NlsUserInfo;
00850 BOOLEAN DefaultSeparateVDM;
00851 BOOLEAN IsWowTaskReady;
00852 UNICODE_STRING WindowsSys32x86Directory;
00853 BOOLEAN fTermsrvAppInstallMode;
00854 TIME_ZONE_INFORMATION tziTermsrvClientTimeZone;
00855 KSYSTEM_TIME ktTermsrvClientBias;
00856 ULONG TermsrvClientTimeZoneId;
00857 BOOLEAN LUIDDeviceMapsEnabled;
00858 ULONG TermsrvClientTimeZoneChangeNum;
00859 } BASE_STATIC_SERVER_DATA, *PBASE_STATIC_SERVER_DATA;
00860
00861
00862
00863 #define CSR_SRV_SERVER 0
00864
00865 typedef enum _CSR_SRV_API_NUMBER
00866 {
00867 CsrpClientConnect,
00868 CsrpThreadConnect,
00869 CsrpProfileControl,
00870 CsrpIdentifyAlertable,
00871 CsrpSetPriorityClass,
00872 CsrpMaxApiNumber
00873 } CSR_SRV_API_NUMBER, *PCSR_SRV_API_NUMBER;
00874
00875 #define CSR_MAKE_OPCODE(s,m) ((s) << 16) | (m)
00876
00877 typedef struct _CSR_CONNECTION_INFO
00878 {
00879 ULONG Version;
00880 ULONG Unknown;
00881 HANDLE ObjectDirectory;
00882 PVOID SharedSectionBase;
00883 PVOID SharedSectionHeap;
00884 PVOID SharedSectionData;
00885 ULONG DebugFlags;
00886 ULONG Unknown2[3];
00887 HANDLE ProcessId;
00888 } CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
00889
00890 typedef struct _CSR_CLIENT_CONNECT
00891 {
00892 ULONG ServerId;
00893 PVOID ConnectionInfo;
00894 ULONG ConnectionInfoSize;
00895 } CSR_CLIENT_CONNECT, *PCSR_CLIENT_CONNECT;
00896
00897 typedef struct _CSR_IDENTIFY_ALTERTABLE_THREAD
00898 {
00899 CLIENT_ID Cid;
00900 } CSR_IDENTIFY_ALTERTABLE_THREAD, *PCSR_IDENTIFY_ALTERTABLE_THREAD;
00901
00902 typedef struct _CSR_SET_PRIORITY_CLASS
00903 {
00904 HANDLE hProcess;
00905 ULONG PriorityClass;
00906 } CSR_SET_PRIORITY_CLASS, *PCSR_SET_PRIORITY_CLASS;
00907
00908 typedef struct _CSR_API_MESSAGE2
00909 {
00910 PORT_MESSAGE Header;
00911 union
00912 {
00913 CSR_CONNECTION_INFO ConnectionInfo;
00914 struct
00915 {
00916 PVOID CsrCaptureData;
00917 CSR_API_NUMBER Opcode;
00918 ULONG Status;
00919 ULONG Reserved;
00920 union
00921 {
00922 CSR_CLIENT_CONNECT ClientConnect;
00923 CSR_SET_PRIORITY_CLASS SetPriorityClass;
00924 CSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
00925 };
00926 };
00927 };
00928 } CSR_API_MESSAGE2, *PCSR_API_MESSAGE2;
00929
00930 typedef struct _CSR_CAPTURE_BUFFER
00931 {
00932 ULONG Size;
00933 struct _CSR_CAPTURE_BUFFER *PreviousCaptureBuffer;
00934 ULONG PointerCount;
00935 ULONG_PTR BufferEnd;
00936 ULONG_PTR PointerArray[1];
00937 } CSR_CAPTURE_BUFFER, *PCSR_CAPTURE_BUFFER;
00938
00939 #endif