Sebastian Lackner : user32: Implement CWF_CREATE_ONLY flag for CreateWindowStation.

Alexandre Julliard julliard at winehq.org
Mon Apr 8 15:12:00 CDT 2019


Module: wine
Branch: master
Commit: c02407e9a3ea57fe51e88f0fc40d9552927fc634
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c02407e9a3ea57fe51e88f0fc40d9552927fc634

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Mon Apr  8 05:37:30 2019 +0000

user32: Implement CWF_CREATE_ONLY flag for CreateWindowStation.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/winstation.c | 11 ++++++-----
 include/winuser.h        |  2 ++
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/dlls/user32/winstation.c b/dlls/user32/winstation.c
index 673917c..4f53b43 100644
--- a/dlls/user32/winstation.c
+++ b/dlls/user32/winstation.c
@@ -83,26 +83,26 @@ static HANDLE get_winstations_dir_handle(void)
 /***********************************************************************
  *              CreateWindowStationA  (USER32.@)
  */
-HWINSTA WINAPI CreateWindowStationA( LPCSTR name, DWORD reserved, ACCESS_MASK access,
+HWINSTA WINAPI CreateWindowStationA( LPCSTR name, DWORD flags, ACCESS_MASK access,
                                      LPSECURITY_ATTRIBUTES sa )
 {
     WCHAR buffer[MAX_PATH];
 
-    if (!name) return CreateWindowStationW( NULL, reserved, access, sa );
+    if (!name) return CreateWindowStationW( NULL, flags, access, sa );
 
     if (!MultiByteToWideChar( CP_ACP, 0, name, -1, buffer, MAX_PATH ))
     {
         SetLastError( ERROR_FILENAME_EXCED_RANGE );
         return 0;
     }
-    return CreateWindowStationW( buffer, reserved, access, sa );
+    return CreateWindowStationW( buffer, flags, access, sa );
 }
 
 
 /***********************************************************************
  *              CreateWindowStationW  (USER32.@)
  */
-HWINSTA WINAPI CreateWindowStationW( LPCWSTR name, DWORD reserved, ACCESS_MASK access,
+HWINSTA WINAPI CreateWindowStationW( LPCWSTR name, DWORD flags, ACCESS_MASK access,
                                      LPSECURITY_ATTRIBUTES sa )
 {
     HANDLE ret;
@@ -117,7 +117,8 @@ HWINSTA WINAPI CreateWindowStationW( LPCWSTR name, DWORD reserved, ACCESS_MASK a
     {
         req->flags      = 0;
         req->access     = access;
-        req->attributes = OBJ_CASE_INSENSITIVE | OBJ_OPENIF |
+        req->attributes = OBJ_CASE_INSENSITIVE |
+                          ((flags & CWF_CREATE_ONLY) ? 0 : OBJ_OPENIF) |
                           ((sa && sa->bInheritHandle) ? OBJ_INHERIT : 0);
         req->rootdir    = wine_server_obj_handle( get_winstations_dir_handle() );
         wine_server_add_data( req, name, len * sizeof(WCHAR) );
diff --git a/include/winuser.h b/include/winuser.h
index 3cffaa1..28b9b1f 100644
--- a/include/winuser.h
+++ b/include/winuser.h
@@ -101,6 +101,8 @@ typedef void* HPOWERNOTIFY;
 #define WSF_VISIBLE     1
 #define DF_ALLOWOTHERACCOUNTHOOK  1
 
+#define CWF_CREATE_ONLY 0x01
+
 typedef struct tagUSEROBJECTFLAGS {
     BOOL fInherit;
     BOOL fReserved;




More information about the wine-cvs mailing list