diff --git a/reactos/base/system/winlogon/sas.c b/reactos/base/system/winlogon/sas.c index dfbe97eee29..7e71ed1691e 100644 --- a/reactos/base/system/winlogon/sas.c +++ b/reactos/base/system/winlogon/sas.c @@ -1174,6 +1174,11 @@ SASWindowProc( 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); diff --git a/reactos/win32ss/user/ntuser/ntstubs.c b/reactos/win32ss/user/ntuser/ntstubs.c index 17418c8aa5d..7ff8e8af5cc 100644 --- a/reactos/win32ss/user/ntuser/ntstubs.c +++ b/reactos/win32ss/user/ntuser/ntstubs.c @@ -307,15 +307,6 @@ NtUserInitTask( return 0; } -BOOL -APIENTRY -NtUserLockWorkStation(VOID) -{ - STUB - - return 0; -} - DWORD APIENTRY NtUserMNDragLeave(VOID) diff --git a/reactos/win32ss/user/ntuser/winsta.c b/reactos/win32ss/user/ntuser/winsta.c index 1f174ba73a4..3056fc3d5bf 100644 --- a/reactos/win32ss/user/ntuser/winsta.c +++ b/reactos/win32ss/user/ntuser/winsta.c @@ -1320,4 +1320,27 @@ NtUserSetLogonNotifyWindow(HWND hWnd) 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 */