* 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
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);
}
-/* $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
}
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;
}
}
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",
/* FIXME */
break;
- case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW:
+ case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW:
Ret = IntSetForegroundWindow(Window);
break;
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