Author: hbelusca Date: Wed Nov 7 21:10:48 2012 New Revision: 57686
URL: http://svn.reactos.org/svn/reactos?rev=57686&view=rev Log: [CONSRV] - Use the new PCONSOLE_PROCESS_DATA type instead of PCSR_PROCESS, for accessing console-specific fields inside a console structure (the code modifications inside these functions will follow in the next commits). - Remove unneeded included header files in consrv.h. - Use a DLL instance in order to facilitate the access to win32 resources. - Activate the declaration of server apis (or rename existing ones to the Windows scheme from the http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3 list). - Comment the Win32CsrValidateBuffer helper (because it should be replaced by the usage of CsrValidateMessageBuffer). - Add the list of the old APIs (just for me, to remember at the end to check that I didn't forget ome of them during the process of moving / renaming).
Modified: branches/ros-csrss/win32ss/user/consrv/conio.h branches/ros-csrss/win32ss/user/consrv/consrv.h branches/ros-csrss/win32ss/user/consrv/init.c branches/ros-csrss/win32ss/user/consrv/server.c
Modified: branches/ros-csrss/win32ss/user/consrv/conio.h URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/co... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/conio.h [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/conio.h [iso-8859-1] Wed Nov 7 21:10:48 2012 @@ -136,13 +136,15 @@ #define ConioResizeBuffer(Console, Buff, Size) (Console)->Vtbl->ResizeBuffer(Console, Buff, Size)
/* console.c */ -NTSTATUS FASTCALL ConioConsoleFromProcessData(PCSR_PROCESS ProcessData, PCSRSS_CONSOLE *Console); +NTSTATUS FASTCALL ConioConsoleFromProcessData(PCONSOLE_PROCESS_DATA ProcessData, + PCSRSS_CONSOLE *Console); VOID WINAPI ConioDeleteConsole(Object_t *Object); VOID WINAPI CsrInitConsoleSupport(VOID); VOID FASTCALL ConioPause(PCSRSS_CONSOLE Console, UINT Flags); VOID FASTCALL ConioUnpause(PCSRSS_CONSOLE Console, UINT Flags); -VOID FASTCALL ConioConsoleCtrlEvent(DWORD Event, PCSR_PROCESS ProcessData); -VOID FASTCALL ConioConsoleCtrlEventTimeout(DWORD Event, PCSR_PROCESS ProcessData, +VOID FASTCALL ConioConsoleCtrlEvent(DWORD Event, PCONSOLE_PROCESS_DATA ProcessData); +VOID FASTCALL ConioConsoleCtrlEventTimeout(DWORD Event, + PCONSOLE_PROCESS_DATA ProcessData, DWORD Timeout);
/* coninput.c */
Modified: branches/ros-csrss/win32ss/user/consrv/consrv.h URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/co... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/consrv.h [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/consrv.h [iso-8859-1] Wed Nov 7 21:10:48 2012 @@ -21,11 +21,8 @@ #include <csr/csrsrv.h>
/* CONSOLE Headers */ +#include <win/console.h> #include <win/conmsg.h> -// #include <win/base.h> - -//#include "guiconsole.h" -//#include "tuiconsole.h"
#include "resource.h"
@@ -33,9 +30,12 @@ #include "console.h"
+extern HINSTANCE ConSrvDllInstance; extern HANDLE ConSrvHeap; // extern HANDLE BaseSrvSharedHeap; // extern PBASE_STATIC_SERVER_DATA BaseStaticServerData; + +
typedef struct Object_tt { @@ -47,6 +47,16 @@ } Object_t;
+typedef struct _CSRSS_HANDLE +{ + Object_t *Object; + DWORD Access; + BOOL Inheritable; + DWORD ShareMode; +} CSRSS_HANDLE, *PCSRSS_HANDLE; + + + /* alias.c */ CSR_API(SrvAddConsoleAlias); CSR_API(SrvGetConsoleAlias); @@ -56,34 +66,31 @@ CSR_API(SrvGetConsoleAliasExesLength);
/* coninput.c */ +CSR_API(SrvGetConsoleInput); +CSR_API(SrvWriteConsoleInput); CSR_API(SrvReadConsole); -CSR_API(CsrReadInputEvent); CSR_API(SrvFlushConsoleInputBuffer); CSR_API(SrvGetConsoleNumberOfInputEvents); -CSR_API(SrvGetConsoleInput); -CSR_API(SrvWriteConsoleInput);
/* conoutput.c */ +CSR_API(SrvReadConsoleOutput); +CSR_API(SrvWriteConsoleOutput); +CSR_API(SrvReadConsoleOutputString); +CSR_API(SrvWriteConsoleOutputString); +CSR_API(SrvFillConsoleOutput); CSR_API(SrvWriteConsole); -CSR_API(SrvGetConsoleScreenBufferInfo); -CSR_API(SrvSetConsoleCursor); -CSR_API(CsrWriteConsoleOutputChar); -CSR_API(CsrFillOutputChar); -CSR_API(CsrWriteConsoleOutputAttrib); -CSR_API(CsrFillOutputAttrib); +CSR_API(SrvSetConsoleCursorPosition); CSR_API(SrvGetConsoleCursorInfo); CSR_API(SrvSetConsoleCursorInfo); -CSR_API(CsrSetTextAttrib); +CSR_API(SrvSetConsoleTextAttribute); CSR_API(SrvCreateConsoleScreenBuffer); +CSR_API(SrvGetConsoleScreenBufferInfo); CSR_API(SrvSetConsoleActiveScreenBuffer); -CSR_API(SrvWriteConsoleOutput); CSR_API(SrvScrollConsoleScreenBuffer); -CSR_API(CsrReadConsoleOutputChar); -CSR_API(CsrReadConsoleOutputAttrib); -CSR_API(SrvReadConsoleOutput); CSR_API(SrvSetConsoleScreenBufferSize);
/* console.c */ +CSR_API(SrvOpenConsole); CSR_API(SrvAllocConsole); CSR_API(SrvFreeConsole); CSR_API(SrvSetConsoleMode); @@ -96,36 +103,34 @@ CSR_API(SrvSetConsoleIcon); CSR_API(SrvGetConsoleCP); CSR_API(SrvSetConsoleCP); -CSR_API(CsrGetConsoleOutputCodePage); -CSR_API(CsrSetConsoleOutputCodePage); CSR_API(SrvGetConsoleProcessList); CSR_API(SrvGenerateConsoleCtrlEvent); CSR_API(SrvGetConsoleSelectionInfo);
/* handle.c */ -CSR_API(CsrGetHandle); CSR_API(SrvCloseHandle); CSR_API(SrvVerifyConsoleIoHandle); CSR_API(SrvDuplicateHandle); CSR_API(CsrGetInputWaitHandle);
-NTSTATUS FASTCALL Win32CsrInsertObject(PCSR_PROCESS ProcessData, +NTSTATUS NTAPI ConsoleNewProcess(PCSR_PROCESS SourceProcess, + PCSR_PROCESS TargetProcess); +VOID NTAPI Win32CsrReleaseConsole(PCSR_PROCESS Process); + +NTSTATUS FASTCALL Win32CsrInsertObject(PCONSOLE_PROCESS_DATA ProcessData, PHANDLE Handle, Object_t *Object, DWORD Access, BOOL Inheritable, DWORD ShareMode); -NTSTATUS FASTCALL Win32CsrLockObject(PCSR_PROCESS ProcessData, +NTSTATUS FASTCALL Win32CsrLockObject(PCONSOLE_PROCESS_DATA ProcessData, HANDLE Handle, Object_t **Object, DWORD Access, - long Type); + LONG Type); VOID FASTCALL Win32CsrUnlockObject(Object_t *Object); -NTSTATUS FASTCALL Win32CsrReleaseObject(PCSR_PROCESS ProcessData, - HANDLE Object); -VOID WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData); -NTSTATUS WINAPI Win32CsrDuplicateHandleTable(PCSR_PROCESS SourceProcessData, - PCSR_PROCESS TargetProcessData); +NTSTATUS FASTCALL Win32CsrReleaseObject(PCONSOLE_PROCESS_DATA ProcessData, + HANDLE Handle);
/* lineinput.c */ CSR_API(SrvGetConsoleCommandHistoryLength); @@ -136,10 +141,12 @@ CSR_API(SrvSetConsoleHistory);
/* server.c */ +#if 0 BOOL FASTCALL Win32CsrValidateBuffer(PCSR_PROCESS ProcessData, PVOID Buffer, SIZE_T NumElements, SIZE_T ElementSize); +#endif
#endif // __CONSRV_H__
Modified: branches/ros-csrss/win32ss/user/consrv/init.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/in... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/init.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/init.c [iso-8859-1] Wed Nov 7 21:10:48 2012 @@ -12,7 +12,7 @@ #define NDEBUG #include <debug.h>
-HANDLE DllHandle = NULL; +HINSTANCE ConSrvDllInstance = NULL; // HANDLE BaseApiPort = NULL;
/* Memory */ @@ -25,14 +25,14 @@ // Some names are also deduced from the subsystems/win32/csrss/csrsrv/server.c ones. PCSR_API_ROUTINE ConsoleServerApiDispatchTable[ConsolepMaxApiNumber] = { - // SrvOpenConsole, + SrvOpenConsole, SrvGetConsoleInput, SrvWriteConsoleInput, SrvReadConsoleOutput, SrvWriteConsoleOutput, - // SrvReadConsoleOutputString, - // SrvWriteConsoleOutputString, - // SrvFillConsoleOutput, + SrvReadConsoleOutputString, + SrvWriteConsoleOutputString, + SrvFillConsoleOutput, SrvGetConsoleMode, // SrvGetConsoleNumberOfFonts, SrvGetConsoleNumberOfInputEvents, @@ -47,11 +47,11 @@ SrvFlushConsoleInputBuffer, // SrvGetLargestConsoleWindowSize, SrvSetConsoleScreenBufferSize, - // SrvSetConsoleCursorPosition, + SrvSetConsoleCursorPosition, SrvSetConsoleCursorInfo, // SrvSetConsoleWindowInfo, SrvScrollConsoleScreenBuffer, - // SrvSetConsoleTextAttribute, + SrvSetConsoleTextAttribute, // SrvSetConsoleFont, SrvSetConsoleIcon, SrvReadConsole, @@ -68,7 +68,7 @@ SrvCreateConsoleScreenBuffer, // SrvInvalidateBitMapRect, // SrvVDMConsoleOperation, - SrvSetConsoleCursor, + // SrvSetConsoleCursor, // SrvShowConsoleCursor, // SrvConsoleMenuControl, // SrvSetConsolePalette, @@ -116,14 +116,14 @@
BOOLEAN ConsoleServerApiServerValidTable[ConsolepMaxApiNumber] = { - // FALSE, // SrvOpenConsole, + FALSE, // SrvOpenConsole, FALSE, // SrvGetConsoleInput, FALSE, // SrvWriteConsoleInput, FALSE, // SrvReadConsoleOutput, FALSE, // SrvWriteConsoleOutput, - // FALSE, // SrvReadConsoleOutputString, - // FALSE, // SrvWriteConsoleOutputString, - // FALSE, // SrvFillConsoleOutput, + FALSE, // SrvReadConsoleOutputString, + FALSE, // SrvWriteConsoleOutputString, + FALSE, // SrvFillConsoleOutput, FALSE, // SrvGetConsoleMode, // FALSE, // SrvGetConsoleNumberOfFonts, FALSE, // SrvGetConsoleNumberOfInputEvents, @@ -138,11 +138,11 @@ FALSE, // SrvFlushConsoleInputBuffer, // FALSE, // SrvGetLargestConsoleWindowSize, FALSE, // SrvSetConsoleScreenBufferSize, - // FALSE, // SrvSetConsoleCursorPosition, + FALSE, // SrvSetConsoleCursorPosition, FALSE, // SrvSetConsoleCursorInfo, // FALSE, // SrvSetConsoleWindowInfo, FALSE, // SrvScrollConsoleScreenBuffer, - // FALSE, // SrvSetConsoleTextAttribute, + FALSE, // SrvSetConsoleTextAttribute, // FALSE, // SrvSetConsoleFont, FALSE, // SrvSetConsoleIcon, FALSE, // SrvReadConsole, @@ -159,7 +159,7 @@ FALSE, // SrvCreateConsoleScreenBuffer, // FALSE, // SrvInvalidateBitMapRect, // FALSE, // SrvVDMConsoleOperation, - FALSE, // SrvSetConsoleCursor, + // FALSE, // SrvSetConsoleCursor, // FALSE, // SrvShowConsoleCursor, // FALSE, // SrvConsoleMenuControl, // FALSE, // SrvSetConsolePalette, @@ -209,14 +209,14 @@
PCHAR ConsoleServerApiNameTable[ConsolepMaxApiNumber] = { - // "OpenConsole", + "OpenConsole", "GetConsoleInput", "WriteConsoleInput", "ReadConsoleOutput", "WriteConsoleOutput", - // "ReadConsoleOutputString", - // "WriteConsoleOutputString", - // "FillConsoleOutput", + "ReadConsoleOutputString", + "WriteConsoleOutputString", + "FillConsoleOutput", "GetConsoleMode", // "GetConsoleNumberOfFonts", "GetConsoleNumberOfInputEvents", @@ -231,11 +231,11 @@ "FlushConsoleInputBuffer", // "GetLargestConsoleWindowSize", "SetConsoleScreenBufferSize", - // "SetConsoleCursorPosition", + "SetConsoleCursorPosition", "SetConsoleCursorInfo", // "SetConsoleWindowInfo", "ScrollConsoleScreenBuffer", - // "SetConsoleTextAttribute", + "SetConsoleTextAttribute", // "SetConsoleFont", "SetConsoleIcon", "ReadConsole", @@ -252,7 +252,7 @@ "CreateConsoleScreenBuffer", // "InvalidateBitMapRect", // "VDMConsoleOperation", - "SetConsoleCursor", + // "SetConsoleCursor", // "ShowConsoleCursor", // "ConsoleMenuControl", // "SetConsolePalette", @@ -301,6 +301,106 @@ };
+/* +PCSR_API_ROUTINE Win32CsrApiDefinitions[] = +{ + CsrGetHandle, + CsrGetHandle, + CsrCloseHandle, + CsrVerifyHandle, + CsrDuplicateHandle, + CsrGetInputWaitHandle, + CsrFillOutputChar, + CsrReadInputEvent, + CsrWriteConsoleOutputChar, + CsrWriteConsoleOutputAttrib, + CsrFillOutputAttrib, + CsrSetTextAttrib, + CsrWriteConsoleOutput, + CsrFlushInputBuffer, + CsrReadConsoleOutputChar, + CsrReadConsoleOutputAttrib, + CsrExitReactos, + CsrHardwareStateProperty, + CsrCreateDesktop, + CsrShowDesktop, + CsrHideDesktop, + CsrSetLogonNotifyWindow, + CsrRegisterLogonProcess, + CsrGenerateCtrlEvent, +}; + +static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] = +{ + CSRSS_DEFINE_API(GET_INPUT_HANDLE, CsrGetHandle), + CSRSS_DEFINE_API(GET_OUTPUT_HANDLE, CsrGetHandle), + CSRSS_DEFINE_API(CLOSE_HANDLE, CsrCloseHandle), + CSRSS_DEFINE_API(VERIFY_HANDLE, CsrVerifyHandle), + CSRSS_DEFINE_API(DUPLICATE_HANDLE, CsrDuplicateHandle), + CSRSS_DEFINE_API(GET_INPUT_WAIT_HANDLE, CsrGetInputWaitHandle), + CSRSS_DEFINE_API(WRITE_CONSOLE, CsrWriteConsole), + CSRSS_DEFINE_API(READ_CONSOLE, CsrReadConsole), + CSRSS_DEFINE_API(ALLOC_CONSOLE, CsrAllocConsole), + CSRSS_DEFINE_API(FREE_CONSOLE, CsrFreeConsole), + CSRSS_DEFINE_API(SCREEN_BUFFER_INFO, CsrGetScreenBufferInfo), + CSRSS_DEFINE_API(SET_CURSOR, CsrSetCursor), + CSRSS_DEFINE_API(FILL_OUTPUT, CsrFillOutputChar), + CSRSS_DEFINE_API(READ_INPUT, CsrReadInputEvent), + CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT_CHAR, CsrWriteConsoleOutputChar), + CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT_ATTRIB, CsrWriteConsoleOutputAttrib), + CSRSS_DEFINE_API(FILL_OUTPUT_ATTRIB, CsrFillOutputAttrib), + CSRSS_DEFINE_API(GET_CURSOR_INFO, CsrGetCursorInfo), + CSRSS_DEFINE_API(SET_CURSOR_INFO, CsrSetCursorInfo), + CSRSS_DEFINE_API(SET_ATTRIB, CsrSetTextAttrib), + CSRSS_DEFINE_API(GET_CONSOLE_MODE, CsrGetConsoleMode), + CSRSS_DEFINE_API(SET_CONSOLE_MODE, CsrSetConsoleMode), + CSRSS_DEFINE_API(CREATE_SCREEN_BUFFER, CsrCreateScreenBuffer), + CSRSS_DEFINE_API(SET_SCREEN_BUFFER, CsrSetScreenBuffer), + CSRSS_DEFINE_API(SET_TITLE, CsrSetTitle), + CSRSS_DEFINE_API(GET_TITLE, CsrGetTitle), + CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT, CsrWriteConsoleOutput), + CSRSS_DEFINE_API(FLUSH_INPUT_BUFFER, CsrFlushInputBuffer), + CSRSS_DEFINE_API(SCROLL_CONSOLE_SCREEN_BUFFER, CsrScrollConsoleScreenBuffer), + CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT_CHAR, CsrReadConsoleOutputChar), + CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT_ATTRIB, CsrReadConsoleOutputAttrib), + CSRSS_DEFINE_API(GET_NUM_INPUT_EVENTS, CsrGetNumberOfConsoleInputEvents), + CSRSS_DEFINE_API(EXIT_REACTOS, CsrExitReactos), + CSRSS_DEFINE_API(PEEK_CONSOLE_INPUT, CsrPeekConsoleInput), + CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT, CsrReadConsoleOutput), + CSRSS_DEFINE_API(WRITE_CONSOLE_INPUT, CsrWriteConsoleInput), + CSRSS_DEFINE_API(SETGET_CONSOLE_HW_STATE, CsrHardwareStateProperty), + CSRSS_DEFINE_API(GET_CONSOLE_WINDOW, CsrGetConsoleWindow), + CSRSS_DEFINE_API(CREATE_DESKTOP, CsrCreateDesktop), + CSRSS_DEFINE_API(SHOW_DESKTOP, CsrShowDesktop), + CSRSS_DEFINE_API(HIDE_DESKTOP, CsrHideDesktop), + CSRSS_DEFINE_API(SET_CONSOLE_ICON, CsrSetConsoleIcon), + CSRSS_DEFINE_API(SET_LOGON_NOTIFY_WINDOW, CsrSetLogonNotifyWindow), + CSRSS_DEFINE_API(REGISTER_LOGON_PROCESS, CsrRegisterLogonProcess), + CSRSS_DEFINE_API(GET_CONSOLE_CP, CsrGetConsoleCodePage), + CSRSS_DEFINE_API(SET_CONSOLE_CP, CsrSetConsoleCodePage), + CSRSS_DEFINE_API(GET_CONSOLE_OUTPUT_CP, CsrGetConsoleOutputCodePage), + CSRSS_DEFINE_API(SET_CONSOLE_OUTPUT_CP, CsrSetConsoleOutputCodePage), + CSRSS_DEFINE_API(GET_PROCESS_LIST, CsrGetProcessList), + CSRSS_DEFINE_API(ADD_CONSOLE_ALIAS, CsrAddConsoleAlias), + CSRSS_DEFINE_API(GET_CONSOLE_ALIAS, CsrGetConsoleAlias), + CSRSS_DEFINE_API(GET_ALL_CONSOLE_ALIASES, CsrGetAllConsoleAliases), + CSRSS_DEFINE_API(GET_ALL_CONSOLE_ALIASES_LENGTH, CsrGetAllConsoleAliasesLength), + CSRSS_DEFINE_API(GET_CONSOLE_ALIASES_EXES, CsrGetConsoleAliasesExes), + CSRSS_DEFINE_API(GET_CONSOLE_ALIASES_EXES_LENGTH, CsrGetConsoleAliasesExesLength), + CSRSS_DEFINE_API(GENERATE_CTRL_EVENT, CsrGenerateCtrlEvent), + CSRSS_DEFINE_API(SET_SCREEN_BUFFER_SIZE, CsrSetScreenBufferSize), + CSRSS_DEFINE_API(GET_CONSOLE_SELECTION_INFO, CsrGetConsoleSelectionInfo), + CSRSS_DEFINE_API(GET_COMMAND_HISTORY_LENGTH, CsrGetCommandHistoryLength), + CSRSS_DEFINE_API(GET_COMMAND_HISTORY, CsrGetCommandHistory), + CSRSS_DEFINE_API(EXPUNGE_COMMAND_HISTORY, CsrExpungeCommandHistory), + CSRSS_DEFINE_API(SET_HISTORY_NUMBER_COMMANDS, CsrSetHistoryNumberCommands), + CSRSS_DEFINE_API(GET_HISTORY_INFO, CsrGetHistoryInfo), + CSRSS_DEFINE_API(SET_HISTORY_INFO, CsrSetHistoryInfo), + { 0, 0, NULL } +}; +*/ + + /* FUNCTIONS ******************************************************************/
/* @@ -362,7 +462,7 @@ LoadedServerDll->SizeOfProcessData = 0; LoadedServerDll->ConnectCallback = NULL; LoadedServerDll->DisconnectCallback = Win32CsrReleaseConsole; - LoadedServerDll->NewProcessCallback = Win32CsrDuplicateHandleTable; + LoadedServerDll->NewProcessCallback = ConsoleNewProcess; // LoadedServerDll->HardErrorCallback = Win32CsrHardError;
/* All done */ @@ -371,7 +471,7 @@
BOOL WINAPI -DllMain(IN HANDLE hDll, +DllMain(IN HINSTANCE hInstanceDll, IN DWORD dwReason, IN LPVOID lpReserved) { @@ -380,7 +480,7 @@
if (DLL_PROCESS_ATTACH == dwReason) { - DllHandle = hDll; + ConSrvDllInstance = hInstanceDll; }
return TRUE;
Modified: branches/ros-csrss/win32ss/user/consrv/server.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/se... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/server.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/server.c [iso-8859-1] Wed Nov 7 21:10:48 2012 @@ -11,7 +11,7 @@ #define NDEBUG #include <debug.h>
- +#if 0 /* Ensure that a captured buffer is safe to access */ BOOL FASTCALL Win32CsrValidateBuffer(PCSR_PROCESS ProcessData, PVOID Buffer, @@ -37,5 +37,6 @@ } return TRUE; } +#endif
/* EOF */