[CSR/CONSRV/WINSRV]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Thu, 25 Oct 2012 21:37:52 +0000 (21:37 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Thu, 25 Oct 2012 21:37:52 +0000 (21:37 +0000)
- Move some structures to better place, fix code.

svn path=/branches/ros-csrss/; revision=57619

include/reactos/subsys/csr/csrmsg.h
include/reactos/subsys/csr/csrsrv.h
include/reactos/subsys/csr/csrss.h
include/reactos/subsys/win/base.h
include/reactos/subsys/win/conmsg.h
include/reactos/subsys/win/winmsg.h
win32ss/user/consrv/console.c
win32ss/user/winsrv/harderror.c
win32ss/user/winsrv/init.c
win32ss/user/winsrv/shutdown.c
win32ss/user/winsrv/winsrv.h

index 06c1e79..cfb1953 100644 (file)
@@ -75,6 +75,12 @@ typedef struct _CSR_SET_PRIORITY_CLASS
     ULONG PriorityClass;
 } CSR_SET_PRIORITY_CLASS, *PCSR_SET_PRIORITY_CLASS;
 
+typedef struct
+{
+    HANDLE  UniqueThread;
+    CLIENT_ID Cid;
+} CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
+
 typedef struct _CSR_CLIENT_CONNECT
 {
     ULONG ServerId;
@@ -118,19 +124,13 @@ typedef struct _CSR_API_MESSAGE
 
                 // ULONG_PTR ApiMessageData[39]; //// what to do ????
 
-            /*** Temporary ***/
+            /*** win32csr thingies to remove. ***/
 #if 1
-                CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
-                CSRSS_EXIT_REACTOS ExitReactosRequest;
-
                 CSRSS_CREATE_DESKTOP CreateDesktopRequest;
                 CSRSS_SHOW_DESKTOP ShowDesktopRequest;
                 CSRSS_HIDE_DESKTOP HideDesktopRequest;
-                CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
-                CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
-                CSRSS_GET_PROCESS_LIST GetProcessListRequest;
 #endif
-            /*****************/
+            /************************************/
             } Data;
         };
     };
index 4709886..e485ce8 100644 (file)
@@ -31,6 +31,7 @@ typedef struct _CSR_NT_SESSION
 } CSR_NT_SESSION, *PCSR_NT_SESSION;
 
 /*** old thingie, remove it later... (put it in winsrv -- console) ***/
+#include <win/conmsg.h>
 typedef struct _CSRSS_CON_PROCESS_DATA
 {
     HANDLE ConsoleEvent;
index be0c97b..afc2fe6 100644 (file)
@@ -3,58 +3,12 @@
 #ifndef __INCLUDE_CSRSS_CSRSS_H
 #define __INCLUDE_CSRSS_CSRSS_H
 
-#define CSR_NATIVE     0x0000   // CSRSRV
-#define CSR_CONSOLE    0x0001   // WIN32CSR
-#define CSR_GUI        0x0002   // WINSRV
-#define CONSOLE_INPUT_MODE_VALID  (0x0f)
-#define CONSOLE_OUTPUT_MODE_VALID (0x03)
-
-
+// Used in ntdll/csr/connect.c
 #define CSR_CSRSS_SECTION_SIZE    (65536)
 
-typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
-
-typedef struct
-{
-    USHORT nMaxIds;
-    PDWORD ProcessId;
-    ULONG nProcessIdsTotal;
-} CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
-
-typedef struct
-{
-    HANDLE  UniqueThread;
-    CLIENT_ID Cid;
-} CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
-
-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
-{
-    HANDLE Handle;
-} CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
-
-typedef struct
-{
-    HANDLE Handle;
-} CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
-
-typedef struct
-{
-    HANDLE Handle;
-    DWORD Access;
-    BOOL Inheritable;
-    DWORD Options;
-} CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
+/*** win32csr thingies to remove. ***/
+#if 1
 
 typedef struct
 {
@@ -73,39 +27,7 @@ typedef struct
     HWND DesktopWindow;
 } CSRSS_HIDE_DESKTOP, *PCSRSS_HIDE_DESKTOP;
 
-typedef struct
-{
-    HWND LogonNotifyWindow;
-} CSRSS_SET_LOGON_NOTIFY_WINDOW, *PCSRSS_SET_LOGON_NOTIFY_WINDOW;
-
-typedef struct
-{
-    HANDLE ProcessId;
-    BOOL Register;
-} CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS;
-
-typedef struct
-{
-    HANDLE InputWaitHandle;
-} CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
-
-#define CSR_API_MESSAGE_HEADER_SIZE(Type)       (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
-
-#define REGISTER_SERVICES_PROCESS       (0x1D)
-#define EXIT_REACTOS                    (0x1E)
-#define CLOSE_HANDLE                    (0x26)
-#define VERIFY_HANDLE                   (0x27)
-#define DUPLICATE_HANDLE                (0x28)
-
-#define CREATE_DESKTOP                  (0x2B)
-#define SHOW_DESKTOP                    (0x2C)
-#define HIDE_DESKTOP                    (0x2D)
-
-#define SET_LOGON_NOTIFY_WINDOW         (0x2F)
-#define REGISTER_LOGON_PROCESS          (0x30)
-#define GET_INPUT_WAIT_HANDLE           (0x35)
-#define GET_PROCESS_LIST                (0x36)
-#define START_SCREEN_SAVER              (0x37)
-
+#endif
+/************************************/
 
 #endif /* __INCLUDE_CSRSS_CSRSS_H */
index 1acf514..ce953d6 100644 (file)
@@ -14,7 +14,7 @@
 typedef VOID (CALLBACK * BASE_PROCESS_CREATE_NOTIFY_ROUTINE)(PVOID);
 
 NTSTATUS WINAPI BaseSetProcessCreateNotify (BASE_PROCESS_CREATE_NOTIFY_ROUTINE);
-CSR_SERVER_DLL_INIT(ServerDllInitialization);
+// CSR_SERVER_DLL_INIT(ServerDllInitialization);
 
 typedef struct _NLS_USER_INFO
 {
index 5f1f10c..6b0ee8e 100644 (file)
@@ -112,12 +112,24 @@ typedef enum _CONSRV_API_NUMBER
 } CONSRV_API_NUMBER, *PCONSRV_API_NUMBER;
 
 
+#define CSR_API_MESSAGE_HEADER_SIZE(Type)       (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
 #define CSRSS_MAX_WRITE_CONSOLE                 (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR     (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB   (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR      (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB    (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
 
+#define CONSOLE_INPUT_MODE_VALID  (0x0f)
+#define CONSOLE_OUTPUT_MODE_VALID (0x03)
+
+
+typedef struct
+{
+    USHORT nMaxIds;
+    PDWORD ProcessId;
+    ULONG nProcessIdsTotal;
+} CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
+
 typedef struct
 {
     HANDLE ConsoleHandle;
@@ -141,6 +153,8 @@ typedef struct
     DWORD ControlKeyState;
 } CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
 
+typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
+
 typedef struct
 {
     PCONTROLDISPATCHER CtrlDispatcher;
@@ -347,6 +361,24 @@ typedef struct
     INPUT_RECORD* InputRecord;
 } CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
 
+typedef struct
+{
+    HANDLE Handle;
+} CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
+
+typedef struct
+{
+    HANDLE Handle;
+} CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
+
+typedef struct
+{
+    HANDLE Handle;
+    DWORD Access;
+    BOOL Inheritable;
+    DWORD Options;
+} CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
+
 typedef struct
 {
     DWORD Access;
@@ -356,6 +388,10 @@ typedef struct
 } CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
   CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
 
+typedef struct
+{
+    HANDLE InputWaitHandle;
+} CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
 
 #define CONSOLE_HARDWARE_STATE_GET 0
 #define CONSOLE_HARDWARE_STATE_SET 1
@@ -564,6 +600,7 @@ typedef struct _CONSOLE_API_MESSAGE
         CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
         CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
         CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
+        CSRSS_GET_PROCESS_LIST GetProcessListRequest;
     } Data;
 } CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
 
index 25ebc65..f737256 100644 (file)
 
 // CSR_SERVER_DLL_INIT(UserServerDllInitialization);
 
+typedef enum _USERSRV_API_NUMBER
+{
+    UserpExitWindowsEx = USERSRV_SERVERDLL_INDEX,
+    // UserpEndTask,
+    // UserpLogon,
+    UserpRegisterServicesProcess, // Not present in Win7
+    // UserpActivateDebugger,
+    // UserpGetThreadConsoleDesktop, // Not present in Win7
+    // UserpDeviceEvent,
+    UserpRegisterLogonProcess,    // Not present in Win7
+    // UserpCreateSystemThreads,
+    // UserpRecordShutdownReason,
+    // UserpCancelShutdown,              // Added in Vista
+    // UserpConsoleHandleOperation,      // Added in Win7
+    // UserpGetSetShutdownBlockReason,   // Added in Vista
+
+    UserpMaxApiNumber
+} USERSRV_API_NUMBER, *PUSERSRV_API_NUMBER;
+
+
+typedef struct
+{
+    UINT Flags;
+    DWORD Reserved;
+} CSRSS_EXIT_REACTOS, *PCSRSS_EXIT_REACTOS;
+
+typedef struct
+{
+    HANDLE ProcessId;
+} CSRSS_REGISTER_SERVICES_PROCESS, *PCSRSS_REGISTER_SERVICES_PROCESS;
+
+typedef struct
+{
+    HANDLE ProcessId;
+    BOOL Register;
+} CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS;
+
+typedef struct
+{
+    HWND LogonNotifyWindow;
+} CSRSS_SET_LOGON_NOTIFY_WINDOW, *PCSRSS_SET_LOGON_NOTIFY_WINDOW;
+
+
+typedef struct _USER_API_MESSAGE
+{
+    PORT_MESSAGE Header;
+
+    PCSR_CAPTURE_BUFFER CsrCaptureData;
+    CSR_API_NUMBER ApiNumber;
+    ULONG Status; // ReturnValue; // NTSTATUS Status
+    ULONG Reserved;
+    union
+    {
+        CSRSS_EXIT_REACTOS ExitReactosRequest;
+        CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
+        CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
+        CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
+    } Data;
+} USER_API_MESSAGE, *PUSER_API_MESSAGE;
+
 #endif // _WINMSG_H
 
 /* EOF */
index 5cda3fd..7605b61 100644 (file)
@@ -800,6 +800,7 @@ CSR_API(CsrSetConsoleOutputCodePage) // TODO: Merge this function with the other
 
 CSR_API(SrvGetConsoleProcessList)
 {
+    PCSRSS_GET_PROCESS_LIST GetProcessListRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetProcessListRequest;
     PDWORD Buffer;
     PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
@@ -810,8 +811,8 @@ CSR_API(SrvGetConsoleProcessList)
 
     DPRINT("SrvGetConsoleProcessList\n");
 
-    Buffer = ApiMessage->Data.GetProcessListRequest.ProcessId;
-    if (!Win32CsrValidateBuffer(ProcessData, Buffer, ApiMessage->Data.GetProcessListRequest.nMaxIds, sizeof(DWORD)))
+    Buffer = GetProcessListRequest->ProcessId;
+    if (!Win32CsrValidateBuffer(ProcessData, Buffer, GetProcessListRequest->nMaxIds, sizeof(DWORD)))
         return STATUS_ACCESS_VIOLATION;
 
     Status = ConioConsoleFromProcessData(ProcessData, &Console);
@@ -825,7 +826,7 @@ CSR_API(SrvGetConsoleProcessList)
          current_entry = current_entry->Flink)
     {
         current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ConsoleLink);
-        if (++nItems <= ApiMessage->Data.GetProcessListRequest.nMaxIds)
+        if (++nItems <= GetProcessListRequest->nMaxIds)
         {
             *Buffer++ = HandleToUlong(current->ClientId.UniqueProcess);
         }
@@ -833,7 +834,7 @@ CSR_API(SrvGetConsoleProcessList)
 
     ConioUnlockConsole(Console);
 
-    ApiMessage->Data.GetProcessListRequest.nProcessIdsTotal = nItems;
+    GetProcessListRequest->nProcessIdsTotal = nItems;
     return STATUS_SUCCESS;
 }
 
index 6723cfb..bfb391b 100644 (file)
@@ -9,7 +9,7 @@
 
 /* INCLUDES ******************************************************************/
 
-#include "w32csr.h"
+#include "winsrv.h"
 
 #define NDEBUG
 #include <debug.h>
index 9651b55..980d123 100644 (file)
@@ -24,22 +24,35 @@ HANDLE UserSrvHeap = NULL;          // Our own heap.
 PCSR_API_ROUTINE UserServerApiDispatchTable[UserpMaxApiNumber] =
 {
     SrvExitWindowsEx,
-    SrvEndTask,
-    SrvLogon,
+    // SrvEndTask,
+    // SrvLogon,
     SrvRegisterServicesProcess, // Not present in Win7
-    SrvActivateDebugger,
-    SrvGetThreadConsoleDesktop, // Not present in Win7
-    SrvDeviceEvent,
+    // SrvActivateDebugger,
+    // SrvGetThreadConsoleDesktop, // Not present in Win7
+    // SrvDeviceEvent,
     SrvRegisterLogonProcess,    // Not present in Win7
-    SrvCreateSystemThreads,
-    SrvRecordShutdownReason,
-    SrvCancelShutdown,              // Added in Vista
-    SrvConsoleHandleOperation,      // Added in Win7
-    SrvGetSetShutdownBlockReason,   // Added in Vista
+    // SrvCreateSystemThreads,
+    // SrvRecordShutdownReason,
+    // SrvCancelShutdown,              // Added in Vista
+    // SrvConsoleHandleOperation,      // Added in Win7
+    // SrvGetSetShutdownBlockReason,   // Added in Vista
 };
 
 BOOLEAN UserServerApiServerValidTable[UserpMaxApiNumber] =
 {
+    FALSE,   // SrvExitWindowsEx
+    // FALSE,   // SrvEndTask
+    // FALSE,   // SrvLogon
+    FALSE,   // SrvRegisterServicesProcess
+    // FALSE,   // SrvActivateDebugger
+    // TRUE,    // SrvGetThreadConsoleDesktop
+    // FALSE,   // SrvDeviceEvent
+    FALSE,   // SrvRegisterLogonProcess
+    // FALSE,   // SrvCreateSystemThreads
+    // FALSE,   // SrvRecordShutdownReason
+    // FALSE,   // SrvCancelShutdown
+    // FALSE,   // SrvConsoleHandleOperation
+    // FALSE,   // SrvGetSetShutdownBlockReason
 
     // FALSE
 };
@@ -47,18 +60,18 @@ BOOLEAN UserServerApiServerValidTable[UserpMaxApiNumber] =
 PCHAR UserServerApiNameTable[UserpMaxApiNumber] =
 {
     "SrvExitWindowsEx",
-    "SrvEndTask",
-    "SrvLogon",
+    // "SrvEndTask",
+    // "SrvLogon",
     "SrvRegisterServicesProcess",
-    "SrvActivateDebugger",
-    "SrvGetThreadConsoleDesktop",
-    "SrvDeviceEvent",
+    // "SrvActivateDebugger",
+    // "SrvGetThreadConsoleDesktop",
+    // "SrvDeviceEvent",
     "SrvRegisterLogonProcess",
-    "SrvCreateSystemThreads",
-    "SrvRecordShutdownReason",
-    "SrvCancelShutdown",
-    "SrvConsoleHandleOperation",
-    "SrvGetSetShutdownBlockReason",
+    // "SrvCreateSystemThreads",
+    // "SrvRecordShutdownReason",
+    // "SrvCancelShutdown",
+    // "SrvConsoleHandleOperation",
+    // "SrvGetSetShutdownBlockReason",
 
     // NULL
 };
@@ -301,7 +314,7 @@ InitializeVideoAddressSpace(VOID)
  * TODO: the console one
  */
 NTSTATUS
-CsrpInitVideo (VOID)
+CsrpInitVideo(VOID)
 {
     OBJECT_ATTRIBUTES ObjectAttributes;
     UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\??\\DISPLAY1");
index 7f0f586..7739f14 100644 (file)
@@ -8,7 +8,7 @@
 
 /* INCLUDES ******************************************************************/
 
-#include "w32csr.h"
+#include "winsrv.h"
 #include <sddl.h>
 
 #define NDEBUG
index 0ce515c..423c829 100644 (file)
@@ -6,27 +6,48 @@
  * PROGRAMMERS:     Hermes Belusca-Maito (hermes.belusca@sfr.fr)
  */
 
+#ifndef __WINSRV_H__
+#define __WINSRV_H__
+
 #pragma once
 
 /* PSDK/NDK Headers */
-#include <stdio.h>
+#define WIN32_NO_STATUS
 #include <windows.h>
-
 #define NTOS_MODE_USER
 #include <ndk/ntndk.h>
 
-#include <csr/server.h>
-#include <win/base.h>
-#include <win/windows.h>
+// #include <stdio.h>
+
+/* CSRSS Header */
+#include <csr/csrsrv.h>
+
+/* USER Headers */
+#include <win/winmsg.h>
+// #include <win/base.h>
+// #include <win/windows.h>
+
+#include "resource.h"
 
+
+/* init.c */
+BOOL WINAPI _UserSoundSentry(VOID);
+
+/* harderror.c */
 VOID
 WINAPI
 Win32CsrHardError(IN PCSR_THREAD ThreadData,
                   IN PHARDERROR_MSG Message);
-    
-CSR_API(SrvRegisterServicesProcess);
 
 
+/* shutdown.c */
+CSR_API(SrvExitWindowsEx);
+CSR_API(CsrSetLogonNotifyWindow);
+CSR_API(SrvRegisterLogonProcess);
+// CSR_API(CsrRegisterSystemClasses);
+
+CSR_API(SrvRegisterServicesProcess);
+
 
 /*****************************
 
@@ -40,12 +61,10 @@ typedef struct tagCSRSS_OBJECT_DEFINITION
 } CSRSS_OBJECT_DEFINITION, *PCSRSS_OBJECT_DEFINITION;
 *\/
 
-/\* exitros.c *\/
-CSR_API(CsrExitReactos);
-CSR_API(CsrSetLogonNotifyWindow);
-CSR_API(CsrRegisterLogonProcess);
-// CSR_API(CsrRegisterSystemClasses);
+
 
 *****************************/
 
+#endif // __WINSRV_H__
+
 /* EOF */