[WIN32CSR] Clean up the debris from r47314: Removed some redundant code, reorganized...
[reactos.git] / reactos / subsystems / win32 / csrss / win32csr / dllmain.c
index 5fd8e16..a8fdd41 100644 (file)
@@ -1,21 +1,20 @@
-/* $Id$
- *
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
  * FILE:            subsys/csrss/win32csr/dllmain.c
  * PURPOSE:         Initialization
+ * PROGRAMMERS:     Dmitry Philippov (shedon@mail.ru)
  */
 
 /* INCLUDES ******************************************************************/
-
-#include "w32csr.h"
-
 #define NDEBUG
+#include "w32csr.h"
 #include <debug.h>
 
 /* Not defined in any header file */
-extern VOID STDCALL PrivateCsrssManualGuiCheck(LONG Check);
-extern VOID STDCALL PrivateCsrssInitialized();
+extern VOID WINAPI PrivateCsrssManualGuiCheck(LONG Check);
+extern VOID WINAPI PrivateCsrssInitialized();
+extern VOID WINAPI InitializeAppSwitchHook();
 
 /* GLOBALS *******************************************************************/
 
@@ -25,6 +24,12 @@ static CSRSS_EXPORTED_FUNCS CsrExports;
 
 static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] =
   {
+    CSRSS_DEFINE_API(GET_INPUT_HANDLE,             CsrGetInputHandle),
+    CSRSS_DEFINE_API(GET_OUTPUT_HANDLE,            CsrGetOutputHandle),
+    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),
@@ -68,19 +73,20 @@ static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] =
     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),
     { 0, 0, NULL }
   };
 
-static CSRSS_OBJECT_DEFINITION Win32CsrObjectDefinitions[] =
-  {
-    { CONIO_CONSOLE_MAGIC,       ConioDeleteConsole },
-    { CONIO_SCREEN_BUFFER_MAGIC, ConioDeleteScreenBuffer },
-    { 0,                         NULL }
-  };
-
 /* FUNCTIONS *****************************************************************/
 
-BOOL STDCALL
+BOOL WINAPI
 DllMain(HANDLE hDll,
        DWORD dwReason,
        LPVOID lpReserved)
@@ -88,66 +94,12 @@ DllMain(HANDLE hDll,
   if (DLL_PROCESS_ATTACH == dwReason)
     {
       Win32CsrDllHandle = hDll;
+      InitializeAppSwitchHook();
     }
 
   return TRUE;
 }
 
-NTSTATUS FASTCALL
-Win32CsrInsertObject(PCSRSS_PROCESS_DATA ProcessData,
-                     PHANDLE Handle,
-                     Object_t *Object)
-{
-  InitializeCriticalSection(&(Object->Lock));
-
-  return (CsrExports.CsrInsertObjectProc)(ProcessData, Handle, Object);
-}
-
-NTSTATUS FASTCALL
-Win32CsrGetObject(PCSRSS_PROCESS_DATA ProcessData,
-                 HANDLE Handle,
-                 Object_t **Object)
-{
-  return (CsrExports.CsrGetObjectProc)(ProcessData, Handle, Object);
-}
-
-NTSTATUS FASTCALL
-Win32CsrLockObject(PCSRSS_PROCESS_DATA ProcessData,
-                   HANDLE Handle,
-                   Object_t **Object,
-                   LONG Type)
-{
-  NTSTATUS Status;
-
-  Status = (CsrExports.CsrGetObjectProc)(ProcessData, Handle, Object);
-  if (! NT_SUCCESS(Status))
-    {
-      return Status;
-    }
-
-  if ((*Object)->Type != Type)
-    {
-      return STATUS_INVALID_HANDLE;
-    }
-
-  EnterCriticalSection(&((*Object)->Lock));
-
-  return STATUS_SUCCESS;
-}
-
-VOID FASTCALL
-Win32CsrUnlockObject(Object_t *Object)
-{
-  LeaveCriticalSection(&(Object->Lock));
-}
-
-NTSTATUS FASTCALL
-Win32CsrReleaseObject(PCSRSS_PROCESS_DATA ProcessData,
-                      HANDLE Object)
-{
-  return (CsrExports.CsrReleaseObjectProc)(ProcessData, Object);
-}
-
 NTSTATUS FASTCALL
 Win32CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc,
                       PVOID Context)
@@ -155,7 +107,7 @@ Win32CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc,
   return (CsrExports.CsrEnumProcessesProc)(EnumProc, Context);
 }
 
-static BOOL STDCALL
+static BOOL WINAPI
 Win32CsrInitComplete(void)
 {
   PrivateCsrssInitialized();
@@ -163,31 +115,26 @@ Win32CsrInitComplete(void)
   return TRUE;
 }
 
-BOOL STDCALL
+BOOL WINAPI
 Win32CsrInitialization(PCSRSS_API_DEFINITION *ApiDefinitions,
-                       PCSRSS_OBJECT_DEFINITION *ObjectDefinitions,
-                       CSRPLUGIN_INIT_COMPLETE_PROC *InitComplete,
+                       PCSRPLUGIN_SERVER_PROCS ServerProcs,
                        PCSRSS_EXPORTED_FUNCS Exports,
                        HANDLE CsrssApiHeap)
 {
-  HANDLE ThreadHandle;
-
+  NTSTATUS Status;
   CsrExports = *Exports;
   Win32CsrApiHeap = CsrssApiHeap;
 
+  Status = NtUserInitialize(0 ,NULL, NULL);
+
   PrivateCsrssManualGuiCheck(0);
   CsrInitConsoleSupport();
-  ThreadHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) Console_Api, NULL, 0, NULL);
-  if (NULL == ThreadHandle)
-    {
-      DPRINT1("CSR: Unable to create console thread\n");
-      return FALSE;
-    }
-  CloseHandle(ThreadHandle);
 
   *ApiDefinitions = Win32CsrApiDefinitions;
-  *ObjectDefinitions = Win32CsrObjectDefinitions;
-  *InitComplete = Win32CsrInitComplete;
+  ServerProcs->InitCompleteProc = Win32CsrInitComplete;
+  ServerProcs->HardErrorProc = Win32CsrHardError;
+  ServerProcs->ProcessInheritProc = Win32CsrDuplicateHandleTable;
+  ServerProcs->ProcessDeletedProc = Win32CsrReleaseConsole;
 
   return TRUE;
 }