CreateWindowStation

The CreateWindowStation function creates a window station object. It returns a handle that can be used to access the window station. A window station is a secure object that contains a set of global atoms, a clipboard, and a set of desktop objects.

HWINSTA CreateWindowStation(
  LPTSTR lpwinsta,        // name of the new window station
  DWORD dwReserved,       // reserved; must be NULL
  DWORD dwDesiredAccess,  // specifies access of returned handle
  LPSECURITY_ATTRIBUTES lpsa  // specifies security attributes of 
                              // the window station
);
 

Parameters

lpwinsta
Optionally points to a null-terminated string specifying the name of the window station to be created. Window station names are case-insensitive and cannot contain backslash characters (\). Only members of the Administrators group are allowed to specify a name. If lpwinsta is NULL, the system forms a window station name using the logon session identifier for the calling process. To get this name, call the GetUserObjectInformation function.
dwReserved
Reserved; must be NULL.
dwDesiredAccess
Specifies the type of access to the window station. This parameter can be one or more of the following values:
Value Description
WINSTA_ACCESSCLIPBOARD Required to use the clipboard.
WINSTA_ACCESSGLOBALATOMS Required to manipulate global atoms.
WINSTA_CREATEDESKTOP Required to create new desktop objects on the window station.
WINSTA_ENUMDESKTOPS Required to enumerate existing desktop objects.
WINSTA_ENUMERATE Required for the window station to be enumerated.
WINSTA_EXITWINDOWS Required to successfully call the ExitWindows or ExitWindowsEx functions.
WINSTA_READATTRIBUTES Required to read the attributes of a window station object.
WINSTA_READSCREEN Required to access screen contents.
WINSTA_WRITEATTRIBUTES Required to modify the attributes of a window station object.

lpsa
Pointer to a SECURITY_ATTRIBUTES structure that determines whether the returned handle can be inherited by child processes. If lpsa is NULL, the handle cannot be inherited.

The lpSecurityDescriptor member of the structure specifies a security descriptor for the new window station. If lpsa is NULL, the window station (and any desktops created within the window) gets a security descriptor that grants GENERIC_ALL access to all users.

Return Values

If the function succeeds, the return value is a handle to the newly created window station. If the specified window station already exists, the function succeeds and returns a handle to the existing window station.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

QuickInfo

  Windows NT: Requires version 3.51 or later.
  Windows: Unsupported.
  Windows CE: Unsupported.
  Header: Declared in winuser.h.
  Import Library: Use user32.lib.
  Unicode: Implemented as Unicode and ANSI versions on Windows NT.

See Also

Window Stations and Desktops Overview, Window Station and Desktop Functions, GetUserObjectInformation, OpenWindowStation