From 7cb7765a314d4db3b097823f3fa499b4708cd823 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Fri, 17 Feb 2012 05:15:13 +0000 Subject: [PATCH] [WIN32CSR/CSRSRV]: Make the outdated CSR_PLUGIN architecture as close to the CSR_SERVER_DLL architecture as possible for easier migration later. Main changes are return values/number of parameters, importing csrsrv functions instead of using a manual export table, and other similar small changes. Also, add win32csr.dll to the registry command-line for CSRSS, but still load it hard-coded for now. svn path=/trunk/; revision=55665 --- reactos/boot/bootdata/hivesys_amd64.inf | 2 +- reactos/boot/bootdata/hivesys_arm.inf | 2 +- reactos/boot/bootdata/hivesys_i386.inf | 2 +- .../win32/csrss/csrsrv/api/process.c | 8 ++--- .../subsystems/win32/csrss/csrsrv/api/wapi.c | 12 ++++--- .../subsystems/win32/csrss/csrsrv/csrsrv.spec | 1 + reactos/subsystems/win32/csrss/csrsrv/init.c | 34 +++++++++---------- reactos/subsystems/win32/csrss/include/api.h | 1 + .../win32/csrss/include/csrplugin.h | 8 ++--- .../subsystems/win32/csrss/win32csr/console.c | 2 +- .../subsystems/win32/csrss/win32csr/dllmain.c | 34 +++++++++++-------- .../subsystems/win32/csrss/win32csr/handle.c | 11 +++--- .../win32/csrss/win32csr/harderror.c | 14 ++++---- .../subsystems/win32/csrss/win32csr/w32csr.h | 4 +-- .../win32/csrss/win32csr/win32csr.h | 2 +- .../win32/csrss/win32csr/win32csr.spec | 2 +- 16 files changed, 73 insertions(+), 66 deletions(-) diff --git a/reactos/boot/bootdata/hivesys_amd64.inf b/reactos/boot/bootdata/hivesys_amd64.inf index f19e462a8e1..c0fec1449f0 100644 --- a/reactos/boot/bootdata/hivesys_amd64.inf +++ b/reactos/boot/bootdata/hivesys_amd64.inf @@ -1077,7 +1077,7 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Kmode",0x000 HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Optional",0x00010000,"Posix" HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe" HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Required",0x00010000,"Debug","Windows" -HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16" +HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off MaxRequestThreads=16" ; WOW Support HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,"" diff --git a/reactos/boot/bootdata/hivesys_arm.inf b/reactos/boot/bootdata/hivesys_arm.inf index 6f53d047d4c..db9989956fb 100644 --- a/reactos/boot/bootdata/hivesys_arm.inf +++ b/reactos/boot/bootdata/hivesys_arm.inf @@ -793,7 +793,7 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Kmode",0x000 HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Optional",0x00010000,"Posix" HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe" HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Required",0x00010000,"Debug","Windows" -HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16" +HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off MaxRequestThreads=16" ; WOW Support HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,"" diff --git a/reactos/boot/bootdata/hivesys_i386.inf b/reactos/boot/bootdata/hivesys_i386.inf index 7f7e6556b0e..cdf999b7b92 100644 --- a/reactos/boot/bootdata/hivesys_i386.inf +++ b/reactos/boot/bootdata/hivesys_i386.inf @@ -1228,7 +1228,7 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Kmode",0x000 HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Optional",0x00010000,"Posix" HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe" HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Required",0x00010000,"Debug","Windows" -HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16" +HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off MaxRequestThreads=16" ; WOW Support HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,"" diff --git a/reactos/subsystems/win32/csrss/csrsrv/api/process.c b/reactos/subsystems/win32/csrss/csrsrv/api/process.c index d8c7256651c..728a977261f 100644 --- a/reactos/subsystems/win32/csrss/csrsrv/api/process.c +++ b/reactos/subsystems/win32/csrss/csrsrv/api/process.c @@ -13,7 +13,7 @@ #define NDEBUG #include -extern NTSTATUS CallProcessInherit(PCSR_PROCESS, PCSR_PROCESS); +extern NTSTATUS CallProcessCreated(PCSR_PROCESS, PCSR_PROCESS); extern NTSTATUS CallProcessDeleted(PCSR_PROCESS); /* GLOBALS *******************************************************************/ @@ -154,11 +154,9 @@ CSR_API(CsrCreateProcess) { NewProcessData->ParentConsole = ProcessData->Console; NewProcessData->bInheritHandles = Request->Data.CreateProcessRequest.bInheritHandles; - if (Request->Data.CreateProcessRequest.bInheritHandles) - { - CallProcessInherit(ProcessData, NewProcessData); - } } + + CallProcessCreated(ProcessData, NewProcessData); if (Request->Data.CreateProcessRequest.Flags & CREATE_NEW_PROCESS_GROUP) { diff --git a/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c b/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c index 2289cdf17af..57782fd9815 100644 --- a/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c +++ b/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c @@ -97,20 +97,20 @@ CsrApiCallHandler(PCSR_PROCESS ProcessData, Request->Status = STATUS_INVALID_SYSTEM_SERVICE; } -BOOL -CallHardError(IN PCSR_PROCESS ProcessData, +VOID +CallHardError(IN PCSR_THREAD ThreadData, IN PHARDERROR_MSG HardErrorMessage); static VOID NTAPI -CsrHandleHardError(IN PCSR_PROCESS ProcessData, +CsrHandleHardError(IN PCSR_THREAD ThreadData, IN OUT PHARDERROR_MSG Message) { DPRINT1("CSR: received hard error %lx\n", Message->Status); /* Call the hard error handler in win32csr */ - (VOID)CallHardError(ProcessData, Message); + CallHardError(ThreadData, Message); } /*++ @@ -935,7 +935,9 @@ ClientConnectionThread(IN PVOID Parameter) if (MessageType == LPC_ERROR_EVENT) { /* Call the Handler */ - CsrHandleHardError(ProcessData, (PHARDERROR_MSG)Request); + PCSR_THREAD Thread; + Thread = CsrLocateThreadByClientId(NULL, &Request->Header.ClientId); + CsrHandleHardError(Thread, (PHARDERROR_MSG)Request); } else { diff --git a/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec b/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec index d3e7b64f40f..0be8c898aba 100644 --- a/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec +++ b/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec @@ -12,6 +12,7 @@ ;@ stdcall CsrDereferenceWait(ptr) ;@ stdcall CsrDestroyProcess(ptr long) ;@ stdcall CsrDestroyThread(ptr) +@ stdcall CsrEnumProcesses(ptr ptr) ; Temporary hack ;@ stdcall CsrExecServerThread(ptr long) @ stdcall CsrGetProcessLuid(ptr ptr) @ stdcall CsrImpersonateClient(ptr) diff --git a/reactos/subsystems/win32/csrss/csrsrv/init.c b/reactos/subsystems/win32/csrss/csrsrv/init.c index 7f7cd9f2898..7a7d711f5ef 100644 --- a/reactos/subsystems/win32/csrss/csrsrv/init.c +++ b/reactos/subsystems/win32/csrss/csrsrv/init.c @@ -64,26 +64,22 @@ CsrpAddServerProcs(CSRPLUGIN_SERVER_PROCS *Procs) return STATUS_SUCCESS; } -BOOL -CallHardError(IN PCSR_PROCESS ProcessData, +VOID +CallHardError(IN PCSR_THREAD ThreadData, IN PHARDERROR_MSG HardErrorMessage) { - BOOL Ok; unsigned i; DPRINT("CSR: %s called\n", __FUNCTION__); - Ok = TRUE; - for (i = 0; i < ServerProcCount && Ok; i++) + for (i = 0; i < ServerProcCount; i++) { - Ok = (*ServerProcs[i].HardErrorProc)(ProcessData, HardErrorMessage); + ServerProcs[i].HardErrorProc(ThreadData, HardErrorMessage); } - - return Ok; } NTSTATUS -CallProcessInherit(IN PCSR_PROCESS SourceProcessData, +CallProcessCreated(IN PCSR_PROCESS SourceProcessData, IN PCSR_PROCESS TargetProcessData) { NTSTATUS Status = STATUS_SUCCESS; @@ -91,8 +87,11 @@ CallProcessInherit(IN PCSR_PROCESS SourceProcessData, DPRINT("CSR: %s called\n", __FUNCTION__); - for (i = 0; i < ServerProcCount && NT_SUCCESS(Status); i++) - Status = (*ServerProcs[i].ProcessInheritProc)(SourceProcessData, TargetProcessData); + for (i = 0; i < ServerProcCount; i++) + { + Status = ServerProcs[i].ProcessInheritProc(SourceProcessData, TargetProcessData); + if (!NT_SUCCESS(Status)) break; + } return Status; } @@ -100,15 +99,15 @@ CallProcessInherit(IN PCSR_PROCESS SourceProcessData, NTSTATUS CallProcessDeleted(IN PCSR_PROCESS ProcessData) { - NTSTATUS Status = STATUS_SUCCESS; + ULONG Result = 0; unsigned i; DPRINT("CSR: %s called\n", __FUNCTION__); - for (i = 0; i < ServerProcCount && NT_SUCCESS(Status); i++) - Status = (*ServerProcs[i].ProcessDeletedProc)(ProcessData); + for (i = 0; i < ServerProcCount; i++) + Result = ServerProcs[i].ProcessDeletedProc(ProcessData, 0, FALSE); - return Status; + return Result; } /********************************************************************** @@ -131,7 +130,6 @@ CsrpInitWin32Csr (VOID) HINSTANCE hInst; ANSI_STRING ProcName; CSRPLUGIN_INITIALIZE_PROC InitProc; - CSRSS_EXPORTED_FUNCS Exports; PCSRSS_API_DEFINITION ApiDefinitions; CSRPLUGIN_SERVER_PROCS ServerProcs; @@ -149,8 +147,8 @@ CsrpInitWin32Csr (VOID) { return Status; } - Exports.CsrEnumProcessesProc = CsrEnumProcesses; - if (! (*InitProc)(&ApiDefinitions, &ServerProcs, &Exports, CsrHeap)) + + if (! (*InitProc)(&ApiDefinitions, &ServerProcs)) { return STATUS_UNSUCCESSFUL; } diff --git a/reactos/subsystems/win32/csrss/include/api.h b/reactos/subsystems/win32/csrss/include/api.h index 488084e74b8..6058edf6e62 100644 --- a/reactos/subsystems/win32/csrss/include/api.h +++ b/reactos/subsystems/win32/csrss/include/api.h @@ -312,6 +312,7 @@ extern SYSTEM_BASIC_INFORMATION CsrNtSysInfo; extern PVOID CsrSrvSharedSectionHeap; extern PVOID *CsrSrvSharedStaticServerData; extern HANDLE CsrInitializationEvent; +extern PCSR_SERVER_DLL CsrLoadedServerDll[CSR_SERVER_DLL_MAX]; NTSTATUS NTAPI diff --git a/reactos/subsystems/win32/csrss/include/csrplugin.h b/reactos/subsystems/win32/csrss/include/csrplugin.h index 1c19c4427a2..d5446512751 100644 --- a/reactos/subsystems/win32/csrss/include/csrplugin.h +++ b/reactos/subsystems/win32/csrss/include/csrplugin.h @@ -31,13 +31,13 @@ typedef struct tagCSRSS_EXPORTED_FUNCS typedef BOOL (WINAPI *CSRPLUGIN_INIT_COMPLETE_PROC)(void); -typedef BOOL (WINAPI *CSRPLUGIN_HARDERROR_PROC)(IN PCSR_PROCESS ProcessData, +typedef VOID (WINAPI *CSRPLUGIN_HARDERROR_PROC)(IN PCSR_THREAD ThreadData, IN PHARDERROR_MSG HardErrorMessage); typedef NTSTATUS (WINAPI *CSRPLUGIN_PROCESS_INHERIT_PROC)(IN PCSR_PROCESS SourceProcessData, IN PCSR_PROCESS TargetProcessData); -typedef NTSTATUS (WINAPI *CSRPLUGIN_PROCESS_DELETED_PROC)(IN PCSR_PROCESS ProcessData); +typedef ULONG (WINAPI *CSRPLUGIN_PROCESS_DELETED_PROC)(IN PCSR_PROCESS ProcessData, IN ULONG Unused, IN BOOLEAN Flag); typedef struct tagCSRSS_SERVER_PROCS { @@ -48,8 +48,6 @@ typedef struct tagCSRSS_SERVER_PROCS } CSRPLUGIN_SERVER_PROCS, *PCSRPLUGIN_SERVER_PROCS; typedef BOOL (WINAPI *CSRPLUGIN_INITIALIZE_PROC)(PCSRSS_API_DEFINITION *ApiDefinitions, - PCSRPLUGIN_SERVER_PROCS ServerProcs, - PCSRSS_EXPORTED_FUNCS Exports, - HANDLE CsrssApiHeap); + PCSRPLUGIN_SERVER_PROCS ServerProcs); /* EOF */ diff --git a/reactos/subsystems/win32/csrss/win32csr/console.c b/reactos/subsystems/win32/csrss/win32csr/console.c index 9b8799cf03d..2ba11660e58 100644 --- a/reactos/subsystems/win32/csrss/win32csr/console.c +++ b/reactos/subsystems/win32/csrss/win32csr/console.c @@ -319,7 +319,7 @@ CSR_API(CsrFreeConsole) Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE); - return Win32CsrReleaseConsole(ProcessData); + return Win32CsrReleaseConsole(ProcessData, 0, 0); } VOID WINAPI diff --git a/reactos/subsystems/win32/csrss/win32csr/dllmain.c b/reactos/subsystems/win32/csrss/win32csr/dllmain.c index 82d73d50f2c..298f4c30444 100644 --- a/reactos/subsystems/win32/csrss/win32csr/dllmain.c +++ b/reactos/subsystems/win32/csrss/win32csr/dllmain.c @@ -21,7 +21,6 @@ extern RTL_CRITICAL_SECTION Win32CsrDefineDosDeviceCritSec; HANDLE Win32CsrApiHeap; HINSTANCE Win32CsrDllHandle = NULL; -static CSRSS_EXPORTED_FUNCS CsrExports; static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] = { @@ -306,13 +305,7 @@ NTSTATUS FASTCALL Win32CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc, PVOID Context) { - return (CsrExports.CsrEnumProcessesProc)(EnumProc, Context); -} - -static BOOL WINAPI -Win32CsrInitComplete(void) -{ - return TRUE; + return CsrEnumProcesses(EnumProc, Context); } VOID @@ -331,18 +324,20 @@ CreateSystemThreads(PVOID pParam) return 0; } -BOOL WINAPI +NTSTATUS +WINAPI +#if 0 +Win32CsrInitialization(IN PCSR_SERVER_DLL ServerDll) +#else Win32CsrInitialization(PCSRSS_API_DEFINITION *ApiDefinitions, - PCSRPLUGIN_SERVER_PROCS ServerProcs, - PCSRSS_EXPORTED_FUNCS Exports, - HANDLE CsrHeap) + PCSRPLUGIN_SERVER_PROCS ServerProcs) +#endif { HANDLE ServerThread; CLIENT_ID ClientId; NTSTATUS Status; - CsrExports = *Exports; - Win32CsrApiHeap = CsrHeap; + Win32CsrApiHeap = RtlGetProcessHeap(); CsrpInitVideo(); @@ -351,11 +346,20 @@ Win32CsrInitialization(PCSRSS_API_DEFINITION *ApiDefinitions, PrivateCsrssManualGuiCheck(0); CsrInitConsoleSupport(); + /* HACK */ +#if 0 + ServerDll->DispatchTable = (PVOID)Win32CsrApiDefinitions; + ServerDll->HighestApiSupported = 0xDEADBABE; + + ServerDll->HardErrorCallback = Win32CsrHardError; + ServerDll->NewProcessCallback = Win32CsrDuplicateHandleTable; + ServerDll->ShutdownProcessCallback = Win32CsrReleaseConsole; +#else *ApiDefinitions = Win32CsrApiDefinitions; - ServerProcs->InitCompleteProc = Win32CsrInitComplete; ServerProcs->HardErrorProc = Win32CsrHardError; ServerProcs->ProcessInheritProc = Win32CsrDuplicateHandleTable; ServerProcs->ProcessDeletedProc = Win32CsrReleaseConsole; +#endif RtlInitializeCriticalSection(&Win32CsrDefineDosDeviceCritSec); InitializeListHead(&DosDeviceHistory); diff --git a/reactos/subsystems/win32/csrss/win32csr/handle.c b/reactos/subsystems/win32/csrss/win32csr/handle.c index 44da2526281..a6ae3a5cc15 100644 --- a/reactos/subsystems/win32/csrss/win32csr/handle.c +++ b/reactos/subsystems/win32/csrss/win32csr/handle.c @@ -132,10 +132,10 @@ Win32CsrUnlockObject(Object_t *Object) ConioDeleteConsole(&Console->Header); } -NTSTATUS +ULONG WINAPI Win32CsrReleaseConsole( - PCSR_PROCESS ProcessData) + PCSR_PROCESS ProcessData, ULONG Flags, BOOLEAN First) { PCSRSS_CONSOLE Console; ULONG i; @@ -161,10 +161,10 @@ Win32CsrReleaseConsole( //CloseHandle(ProcessData->ConsoleEvent); //ProcessData->ConsoleEvent = NULL; RtlLeaveCriticalSection(&ProcessData->HandleTableLock); - return STATUS_SUCCESS; + return 0; } RtlLeaveCriticalSection(&ProcessData->HandleTableLock); - return STATUS_INVALID_PARAMETER; + return -1; } NTSTATUS @@ -223,6 +223,9 @@ Win32CsrDuplicateHandleTable( PCSR_PROCESS TargetProcessData) { ULONG i; + + /* Only inherit if the flag was set */ + if (!TargetProcessData->bInheritHandles) return STATUS_SUCCESS; if (TargetProcessData->HandleTableSize) { diff --git a/reactos/subsystems/win32/csrss/win32csr/harderror.c b/reactos/subsystems/win32/csrss/win32csr/harderror.c index a0e707d04f5..4cb7627d4b1 100644 --- a/reactos/subsystems/win32/csrss/win32csr/harderror.c +++ b/reactos/subsystems/win32/csrss/win32csr/harderror.c @@ -500,12 +500,13 @@ CsrpMessageBox( return ResponseNotHandled; } -BOOL +VOID WINAPI Win32CsrHardError( - IN PCSR_PROCESS ProcessData, + IN PCSR_THREAD ThreadData, IN PHARDERROR_MSG Message) { + PCSR_PROCESS ProcessData = ThreadData->Process; ULONG_PTR Parameters[MAXIMUM_HARDERROR_PARAMETERS]; OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING TextU, CaptionU; @@ -514,6 +515,7 @@ Win32CsrHardError( ULONG Size; /* Default to not handled */ + ASSERT(ProcessData != NULL); Message->Response = ResponseNotHandled; /* Make sure we don't have too many parameters */ @@ -532,7 +534,7 @@ Win32CsrHardError( if (!NT_SUCCESS(Status)) { DPRINT1("NtOpenProcess failed with code: %lx\n", Status); - return FALSE; + return; } /* Capture all string parameters from the process memory */ @@ -540,7 +542,7 @@ Win32CsrHardError( if (!NT_SUCCESS(Status)) { NtClose(hProcess); - return FALSE; + return; } /* Format the caption and message box text */ @@ -557,7 +559,7 @@ Win32CsrHardError( if (!NT_SUCCESS(Status)) { - return FALSE; + return; } /* Display the message box */ @@ -569,6 +571,6 @@ Win32CsrHardError( RtlFreeUnicodeString(&TextU); RtlFreeUnicodeString(&CaptionU); - return TRUE; + return; } diff --git a/reactos/subsystems/win32/csrss/win32csr/w32csr.h b/reactos/subsystems/win32/csrss/win32csr/w32csr.h index c937733a8d1..bf1b2a412f6 100644 --- a/reactos/subsystems/win32/csrss/win32csr/w32csr.h +++ b/reactos/subsystems/win32/csrss/win32csr/w32csr.h @@ -23,10 +23,10 @@ /* shared header with console.dll */ #include "console.h" -BOOL +VOID WINAPI Win32CsrHardError( - IN PCSR_PROCESS ProcessData, + IN PCSR_THREAD ThreadData, IN PHARDERROR_MSG Message); /* EOF */ diff --git a/reactos/subsystems/win32/csrss/win32csr/win32csr.h b/reactos/subsystems/win32/csrss/win32csr/win32csr.h index 962e3dc3ed7..68512749ffd 100644 --- a/reactos/subsystems/win32/csrss/win32csr/win32csr.h +++ b/reactos/subsystems/win32/csrss/win32csr/win32csr.h @@ -54,7 +54,7 @@ NTSTATUS FASTCALL Win32CsrLockObject(PCSR_PROCESS ProcessData, VOID FASTCALL Win32CsrUnlockObject(Object_t *Object); NTSTATUS FASTCALL Win32CsrReleaseObject(PCSR_PROCESS ProcessData, HANDLE Object); -NTSTATUS WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData); +ULONG WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData, ULONG Flags, BOOLEAN First); NTSTATUS WINAPI Win32CsrDuplicateHandleTable(PCSR_PROCESS SourceProcessData, PCSR_PROCESS TargetProcessData); CSR_API(CsrGetHandle); diff --git a/reactos/subsystems/win32/csrss/win32csr/win32csr.spec b/reactos/subsystems/win32/csrss/win32csr/win32csr.spec index 2e513757b03..2fc901b8617 100644 --- a/reactos/subsystems/win32/csrss/win32csr/win32csr.spec +++ b/reactos/subsystems/win32/csrss/win32csr/win32csr.spec @@ -1 +1 @@ -@ stdcall Win32CsrInitialization(ptr ptr ptr ptr) +@ stdcall Win32CsrInitialization(ptr ptr)