Module: wine Branch: master Commit: 911e59c1333be238cc504bd9c3e06131e1204882 URL: http://source.winehq.org/git/wine.git/?a=commit;h=911e59c1333be238cc504bd9c3...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Jul 18 15:38:42 2016 +0900
user32: Store window station objects under the session directory.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/winstation.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/winstation.c b/dlls/user32/winstation.c index 61add76..673917c 100644 --- a/dlls/user32/winstation.c +++ b/dlls/user32/winstation.c @@ -59,8 +59,10 @@ static BOOL CALLBACK enum_names_WtoA( LPWSTR name, LPARAM lparam ) static HANDLE get_winstations_dir_handle(void) { static HANDLE handle = NULL; - static const WCHAR basenameW[] = {'\','W','i','n','d','o','w','s','\', + static const WCHAR basenameW[] = {'\','S','e','s','s','i','o','n','s','\','%','u', + '\','W','i','n','d','o','w','s','\', 'W','i','n','d','o','w','S','t','a','t','i','o','n','s',0}; + WCHAR buffer[64]; UNICODE_STRING str; OBJECT_ATTRIBUTES attr;
@@ -68,7 +70,8 @@ static HANDLE get_winstations_dir_handle(void) { HANDLE dir;
- RtlInitUnicodeString( &str, basenameW ); + sprintfW( buffer, basenameW, NtCurrentTeb()->Peb->SessionId ); + RtlInitUnicodeString( &str, buffer ); InitializeObjectAttributes( &attr, &str, 0, 0, NULL ); NtOpenDirectoryObject( &dir, DIRECTORY_CREATE_OBJECT | DIRECTORY_TRAVERSE, &attr ); if (InterlockedCompareExchangePointer( &handle, dir, 0 ) != 0) /* someone beat us here */