createWindowStationA 函数 (winuser.h)
创建一个窗口工作站对象,将其与调用进程相关联,并将其分配给当前会话。
语法
HWINSTA CreateWindowStationA(
[in, optional] LPCSTR lpwinsta,
DWORD dwFlags,
[in] ACCESS_MASK dwDesiredAccess,
[in, optional] LPSECURITY_ATTRIBUTES lpsa
);
参数
[in, optional] lpwinsta
要创建的窗口站的名称。 窗口工作站名称不区分大小写,不能包含反斜杠字符 (\) 。 仅允许管理员组的成员指定名称。 如果 lpwinsta 为 NULL 或空字符串,则系统会使用调用进程的登录会话标识符形成窗口工作站名称。 若要获取此名称,请调用 GetUserObjectInformation 函数。
dwFlags
如果此参数 CWF_CREATE_ONLY 并且窗口工作站已存在,则调用将失败。 如果未指定此标志并且窗口工作站已存在,则函数将成功并将新句柄返回到现有窗口工作站。
Windows XP/2000: 此参数是保留的,必须为零。
[in] dwDesiredAccess
返回的句柄对窗口工作站的访问类型。 此外,还可以指定任何标准访问权限,例如 READ_CONTROL 或 WRITE_DAC,以及特定于窗口工作站的访问权限的组合。 有关详细信息,请参阅 Window Station 安全和访问权限。
[in, optional] lpsa
指向 SECURITY_ATTRIBUTES 结构的指针,该结构确定是否可由子进程继承返回的句柄。 如果 lpsa 为 NULL,则无法继承句柄。
结构的 lpSecurityDescriptor 成员为新窗口工作站指定安全描述符。 如果 lpsa 为 NULL,则窗口工作站 (,在窗口内创建的任何桌面) 获取一个向所有用户授予 GENERIC_ALL 访问权限的安全描述符。
返回值
如果函数成功,则返回值是新创建的窗口工作站的句柄。 如果指定的窗口工作站已存在,则函数会成功,并将句柄返回到现有窗口工作站。
如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。
注解
完成句柄后,必须调用 CloseWindowStation 以释放句柄。
注意
winuser.h 标头将 CreateWindowStation 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
API 集 | 在 Windows 8) 中引入的 ext-ms-win-ntuser-windowstation-l1-1-0 ( |