📄 csrss.h
字号:
#ifndef __INCLUDE_CSRSS_CSRSS_H
#define __INCLUDE_CSRSS_CSRSS_H
#include <drivers/blue/ntddblue.h>
#define CSR_NATIVE 0x0000
#define CSR_CONSOLE 0x0001
#define CSR_GUI 0x0002
#define CONSOLE_INPUT_MODE_VALID (0x0f)
#define CONSOLE_OUTPUT_MODE_VALID (0x03)
/*
typedef union _CSR_API_NUMBER
{
WORD Index; // CSRSS API number
WORD Subsystem; // 0=NTDLL;1=KERNEL32;2=KERNEL32
} CSR_API_NUMBER, *PCSR_API_NUMBER;
*/
typedef ULONG CSR_API_NUMBER;
#define MAKE_CSR_API(Number, Server) \
((Server) << 16) + Number
#define CSR_CSRSS_SECTION_SIZE (65536)
typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
typedef struct
{
ULONG Dummy;
} CSRSS_CONNECT_PROCESS, *PCSRSS_CONNECT_PROCESS;
typedef struct
{
HANDLE NewProcessId;
ULONG Flags;
BOOL bInheritHandles;
} CSRSS_CREATE_PROCESS, *PCSRSS_CREATE_PROCESS;
typedef struct
{
ULONG Dummy;
} CSRSS_TERMINATE_PROCESS, *PCSRSS_TERMINATE_PROCESS;
typedef struct
{
ULONG nMaxIds;
ULONG nProcessIdsCopied;
ULONG nProcessIdsTotal;
HANDLE ProcessId[0];
} CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
ULONG NrCharactersToWrite;
ULONG NrCharactersWritten;
BYTE Buffer[0];
} CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
WORD NrCharactersToRead;
WORD nCharsCanBeDeleted; /* number of chars already in buffer that can be backspaced */
HANDLE EventHandle;
ULONG NrCharactersRead;
BYTE Buffer[0];
} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
typedef struct
{
PCONTROLDISPATCHER CtrlDispatcher;
BOOL ConsoleNeeded;
HANDLE Console;
HANDLE InputHandle;
HANDLE OutputHandle;
} CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
typedef struct
{
ULONG Dummy;
} CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
typedef struct
{
HANDLE ConsoleHandle;
CONSOLE_SCREEN_BUFFER_INFO Info;
} CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
typedef struct
{
HANDLE ConsoleHandle;
COORD Position;
} CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
union
{
CHAR AsciiChar;
WCHAR UnicodeChar;
} Char;
COORD Position;
WORD Length;
ULONG NrCharactersWritten;
} CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
typedef struct
{
HANDLE ConsoleHandle;
CHAR Attribute;
COORD Coord;
WORD Length;
} CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
INPUT_RECORD Input;
BOOL MoreEvents;
HANDLE Event;
} CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
WORD Length;
COORD Coord;
COORD EndCoord;
ULONG NrCharactersWritten;
CHAR String[0];
} CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
typedef struct
{
HANDLE ConsoleHandle;
WORD Length;
COORD Coord;
COORD EndCoord;
WORD Attribute[0];
} CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
typedef struct
{
HANDLE ConsoleHandle;
CONSOLE_CURSOR_INFO Info;
} CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
typedef struct
{
HANDLE ConsoleHandle;
CONSOLE_CURSOR_INFO Info;
} CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
typedef struct
{
HANDLE ConsoleHandle;
CHAR Attrib;
} CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
typedef struct
{
HANDLE ConsoleHandle;
DWORD Mode;
} CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
typedef struct
{
HANDLE ConsoleHandle;
DWORD ConsoleMode;
} CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
typedef struct
{
/* may want to add some parameters here someday */
HANDLE OutputHandle; /* handle to newly created screen buffer */
} CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
typedef struct
{
HANDLE OutputHandle; /* handle to screen buffer to switch to */
} CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
typedef struct
{
HANDLE UniqueThread;
CLIENT_ID Cid;
} CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
typedef struct
{
HANDLE Console;
DWORD Length;
WCHAR Title[0];
} CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
typedef struct
{
HANDLE ConsoleHandle;
DWORD Length;
WCHAR Title[0];
} CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
COORD BufferSize;
COORD BufferCoord;
SMALL_RECT WriteRegion;
CHAR_INFO* CharInfo;
} CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
typedef struct
{
HANDLE ConsoleInput;
} CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
SMALL_RECT ScrollRectangle;
BOOLEAN UseClipRectangle;
SMALL_RECT ClipRectangle;
COORD DestinationOrigin;
CHAR_INFO Fill;
} CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
DWORD NumCharsToRead;
COORD ReadCoord;
COORD EndCoord;
DWORD CharsRead;
CHAR String[0];
}CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
typedef struct
{
HANDLE ConsoleHandle;
DWORD NumAttrsToRead;
COORD ReadCoord;
COORD EndCoord;
WORD Attribute[0];
}CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
typedef struct
{
HANDLE ConsoleHandle;
DWORD NumInputEvents;
}CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
typedef struct
{
HANDLE ProcessId;
} CSRSS_REGISTER_SERVICES_PROCESS, *PCSRSS_REGISTER_SERVICES_PROCESS;
typedef struct
{
UINT Flags;
DWORD Reserved;
} CSRSS_EXIT_REACTOS, *PCSRSS_EXIT_REACTOS;
typedef struct
{
DWORD Level;
DWORD Flags;
} CSRSS_SET_SHUTDOWN_PARAMETERS, *PCSRSS_SET_SHUTDOWN_PARAMETERS;
typedef struct
{
DWORD Level;
DWORD Flags;
} CSRSS_GET_SHUTDOWN_PARAMETERS, *PCSRSS_GET_SHUTDOWN_PARAMETERS;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
DWORD Length;
INPUT_RECORD* InputRecord;
} CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
COORD BufferSize;
COORD BufferCoord;
SMALL_RECT ReadRegion;
CHAR_INFO* CharInfo;
} CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
typedef struct
{
HANDLE ConsoleHandle;
BOOL Unicode;
DWORD Length;
INPUT_RECORD* InputRecord;
} CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -