Author: gadamopoulos Date: Thu Feb 21 17:27:08 2013 New Revision: 58346 URL: http://svn.reactos.org/svn/reactos?rev=58346&view=rev Log: [win32k] - Implement NtUserLockWorkStation
[winlogon] - Handle LN_LOCK_WORKSTATION case of the WM_LOGONNOTIFY message Modified: trunk/reactos/base/system/winlogon/sas.c trunk/reactos/win32ss/user/ntuser/ntstubs.c trunk/reactos/win32ss/user/ntuser/winsta.c Modified: trunk/reactos/base/system/winlogon/sas.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/winlogon/sas.c?rev=58346&r1=58345&r2=58346&view=diff ============================================================================== --- trunk/reactos/base/system/winlogon/sas.c [iso-8859-1] (original) +++ trunk/reactos/base/system/winlogon/sas.c [iso-8859-1] Thu Feb 21 17:27:08 2013 @@ -1174,6 +1174,11 @@ inScrn = FALSE; break; } + case LN_LOCK_WORKSTATION: + { + DoGenericAction(Session, WLX_SAS_ACTION_LOCK_WKSTA); + break; + } default: { ERR("WM_LOGONNOTIFY case %d is unimplemented\n", wParam); Modified: trunk/reactos/win32ss/user/ntuser/ntstubs.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/ntstubs.c?rev=58346&r1=58345&r2=58346&view=diff ============================================================================== --- trunk/reactos/win32ss/user/ntuser/ntstubs.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/ntuser/ntstubs.c [iso-8859-1] Thu Feb 21 17:27:08 2013 @@ -301,15 +301,6 @@ DWORD Unknown9, DWORD Unknown10, DWORD Unknown11) -{ - STUB - - return 0; -} - -BOOL -APIENTRY -NtUserLockWorkStation(VOID) { STUB Modified: trunk/reactos/win32ss/user/ntuser/winsta.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/winsta.c?rev=58346&r1=58345&r2=58346&view=diff ============================================================================== --- trunk/reactos/win32ss/user/ntuser/winsta.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/ntuser/winsta.c [iso-8859-1] Thu Feb 21 17:27:08 2013 @@ -1320,4 +1320,27 @@ return TRUE; } +BOOL +APIENTRY +NtUserLockWorkStation(VOID) +{ + BOOL ret; + PTHREADINFO pti = PsGetCurrentThreadWin32Thread(); + + UserEnterExclusive(); + + if (pti->rpdesk == IntGetActiveDesktop()) + { + ret = UserPostMessage(hwndSAS, WM_LOGONNOTIFY, LN_LOCK_WORKSTATION, 0); + } + else + { + ret = FALSE; + } + + UserLeave(); + + return ret; +} + /* EOF */