-/* $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 *******************************************************************/
HANDLE Win32CsrApiHeap;
-HINSTANCE Win32CsrDllHandle;
+HINSTANCE Win32CsrDllHandle = NULL;
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),
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)
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)
return (CsrExports.CsrEnumProcessesProc)(EnumProc, Context);
}
-static BOOL STDCALL
+static BOOL WINAPI
Win32CsrInitComplete(void)
{
PrivateCsrssInitialized();
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;
}