CreateWindowStationA 函数 (winuser.h)

创建一个窗口工作站对象,将其与调用进程相关联,并将其分配给当前会话。

语法

HWINSTA CreateWindowStationA(
  [in, optional] LPCSTR                lpwinsta,
                 DWORD                 dwFlags,
  [in]           ACCESS_MASK           dwDesiredAccess,
  [in, optional] LPSECURITY_ATTRIBUTES lpsa
);

参数

[in, optional] lpwinsta

要创建的窗口工作站的名称。 窗口工作站名称不区分大小写,不能包含反斜杠字符(\)。 仅允许管理员组的成员指定名称。 如果 lpwinstaNULL 或空字符串,系统会使用调用进程的登录会话标识符形成窗口工作站名称。 若要获取此名称,请调用 GetUserObjectInformation 函数。

dwFlags

如果此参数 CWF_CREATE_ONLY 并且窗口工作站已存在,则调用将失败。 如果未指定此标志并且窗口工作站已存在,该函数会成功,并将新句柄返回到现有窗口工作站。

Windows XP/2000:此参数是保留的,必须为零。

[in] dwDesiredAccess

返回的句柄对窗口工作站的访问类型。 此外,还可以指定任何标准访问权限,例如 READ_CONTROLWRITE_DAC,以及特定于窗口工作站的访问权限的组合。 有关详细信息,请参阅 窗口工作站安全和访问权限

[in, optional] lpsa

指向 SECURITY_ATTRIBUTES 结构的指针,该结构确定返回的句柄是否可以由子进程继承。 如果 lpsaNULL,则无法继承句柄。

lpSecurityDescriptor 结构成员为新窗口工作站指定安全描述符。 如果 lpsaNULL,则窗口工作站(以及在该窗口中创建的任何桌面)获取一个安全描述符,该描述符授予所有用户 GENERIC_ALL 访问权限。

返回值

如果函数成功,则返回值是新创建的窗口工作站的句柄。 如果指定的窗口工作站已存在,该函数将成功,并将句柄返回到现有窗口工作站。

如果函数失败,则返回值 NULL。 若要获取扩展的错误信息,请调用 GetLastError

言论

完成句柄后,必须调用 CloseWindowStation 以释放句柄。

注意

winuser.h 标头将 CreateWindowStation 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 winuser.h (包括 Windows.h)
User32.lib
DLL User32.dll
API 集 ext-ms-win-ntuser-windowstation-l1-1-0(在 Windows 8 中引入)

另请参阅

CloseWindowStation

GetUserObjectInformation

OpenWindowStation

窗口工作站和桌面函数

窗口工作站