From 29ced92e4bd0cd6672b22495da01a3c9b6297661 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 8 Jul 2004 14:36:18 +0000 Subject: [PATCH] Fix RegisterLogonProcess(). svn path=/trunk/; revision=10036 --- reactos/include/funcs.h | 4 +-- reactos/lib/user32/misc/misc.c | 11 ++++--- reactos/subsys/win32k/ntuser/misc.c | 47 ++++++++++++++++------------- reactos/w32api/include/winuser.h | 1 + 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/reactos/include/funcs.h b/reactos/include/funcs.h index 763a63f156c..de16fc11001 100644 --- a/reactos/include/funcs.h +++ b/reactos/include/funcs.h @@ -4604,8 +4604,8 @@ RegisterSystemThread( BOOL STDCALL RegisterLogonProcess( - HANDLE hprocess, - BOOL x + DWORD dwPprocessId, + BOOL bRegister ); WINBOOL diff --git a/reactos/lib/user32/misc/misc.c b/reactos/lib/user32/misc/misc.c index 9f3393287f6..1ad07afabed 100644 --- a/reactos/lib/user32/misc/misc.c +++ b/reactos/lib/user32/misc/misc.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: misc.c,v 1.5 2004/05/28 21:33:41 gvg Exp $ +/* $Id: misc.c,v 1.6 2004/07/08 14:35:10 ekohl Exp $ * * PROJECT: ReactOS user32.dll * FILE: lib/user32/misc/misc.c @@ -59,17 +59,20 @@ PrivateCsrssManualGuiCheck(LONG Check) VOID STDCALL -PrivateCsrssInitialized() +PrivateCsrssInitialized(VOID) { NtUserCallNoParam(NOPARAM_ROUTINE_CSRSS_INITIALIZED); } + /* * @implemented */ BOOL STDCALL -RegisterLogonProcess ( HANDLE hprocess, BOOL x ) +RegisterLogonProcess(DWORD dwProcessId, BOOL bRegister) { - return NtUserRegisterLogonProcess(hprocess, x); + return NtUserCallTwoParam(dwProcessId, + (DWORD)bRegister, + TWOPARAM_ROUTINE_REGISTERLOGONPROC); } diff --git a/reactos/subsys/win32k/ntuser/misc.c b/reactos/subsys/win32k/ntuser/misc.c index edab9193f2c..e786c0be3fa 100644 --- a/reactos/subsys/win32k/ntuser/misc.c +++ b/reactos/subsys/win32k/ntuser/misc.c @@ -1,4 +1,4 @@ -/* $Id: misc.c,v 1.81 2004/07/03 13:55:36 navaraf Exp $ +/* $Id: misc.c,v 1.82 2004/07/08 14:36:18 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -37,39 +37,44 @@ PUSER_MESSAGE_QUEUE W32kGetPrimitiveMessageQueue() { } BOOL FASTCALL -IntRegisterLogonProcess(HANDLE hProcess, BOOL x) +IntRegisterLogonProcess(DWORD dwProcessId, BOOL bRegister) { PEPROCESS Process; NTSTATUS Status; - - if(LogonProcess != NULL && LogonProcess != PsGetWin32Process()) + + Status = PsLookupProcessByProcessId((PVOID)dwProcessId, + &Process); + if (!NT_SUCCESS(Status)) { - SetLastWin32Error(ERROR_ACCESS_DENIED); + SetLastWin32Error(RtlNtStatusToDosError(Status)); return FALSE; } - - if(hProcess) + + if (bRegister) { - Status = ObReferenceObjectByHandle(hProcess, - PROCESS_QUERY_INFORMATION, - PsProcessType, - ExGetPreviousMode(), - (PVOID*)&Process, - NULL); - if(!NT_SUCCESS(Status)) + /* Register the logon process */ + if (LogonProcess != NULL) { - SetLastNtError(Status); - return 0; + ObDereferenceObject(Process); + return FALSE; } - + LogonProcess = Process->Win32Process; - ObDereferenceObject(Process); } else { - /* deregister the logon process */ + /* Deregister the logon process */ + if (LogonProcess != Process->Win32Process) + { + ObDereferenceObject(Process); + return FALSE; + } + LogonProcess = NULL; } + + ObDereferenceObject(Process); + return TRUE; } @@ -489,7 +494,7 @@ NtUserCallTwoParam( } case TWOPARAM_ROUTINE_REGISTERLOGONPROC: - return (DWORD)IntRegisterLogonProcess((HANDLE)Param1, (BOOL)Param2); + return (DWORD)IntRegisterLogonProcess(Param1, (BOOL)Param2); } DPRINT1("Calling invalid routine number 0x%x in NtUserCallTwoParam(), Param1=0x%x Parm2=0x%x\n", @@ -532,7 +537,7 @@ NtUserCallHwndLock( /* FIXME */ break; - case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW: + case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW: Ret = IntSetForegroundWindow(Window); break; diff --git a/reactos/w32api/include/winuser.h b/reactos/w32api/include/winuser.h index bb7c528ad53..c8a02f99f1e 100644 --- a/reactos/w32api/include/winuser.h +++ b/reactos/w32api/include/winuser.h @@ -3704,6 +3704,7 @@ HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE,LPVOID,DWORD); HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE,LPVOID,DWORD); #endif BOOL WINAPI RegisterHotKey(HWND,int,UINT,UINT); +BOOL WINAPI RegisterLogonProcess(DWORD,BOOL); #if (_WIN32_WINNT >= 0x0501) BOOL WINAPI RegisterRawInputDevices(PCRAWINPUTDEVICE,UINT,UINT); #endif -- 2.17.1