WTSQuerySessionInformationA 函数 (wtsapi32.h)

检索指定远程桌面会话主机(RD 会话主机)服务器上的指定会话的会话信息。 它可用于查询本地和远程 RD 会话主机服务器上的会话信息。

语法

BOOL WTSQuerySessionInformationA(
  [in]  HANDLE         hServer,
  [in]  DWORD          SessionId,
  [in]  WTS_INFO_CLASS WTSInfoClass,
  [out] LPSTR          *ppBuffer,
  [out] DWORD          *pBytesReturned
);

参数

[in] hServer

RD 会话主机服务器的句柄。 指定由 WTSOpenServer 函数打开的句柄,或指定 WTS_CURRENT_SERVER_HANDLE 来指示运行应用程序的 RD 会话主机服务器。

[in] SessionId

远程桌面服务会话标识符。 若要指示调用应用程序正在运行的会话(或当前会话)指定 WTS_CURRENT_SESSION。 仅在获取本地服务器上的会话信息时指定 WTS_CURRENT_SESSION。 如果在远程服务器上查询会话信息时指定了 WTS_CURRENT_SESSION,则返回的会话信息将不一致。 请勿使用返回的数据。

可以使用 WTSEnumerateSessions 函数检索指定 RD 会话主机服务器上所有会话的标识符。

若要查询其他用户会话的信息,必须具有查询信息权限。 有关详细信息,请参阅 远程桌面服务权限。 若要修改会话的权限,请使用远程桌面服务配置管理工具。

[in] WTSInfoClass

WTS_INFO_CLASS 枚举的值,指示在调用 WTSQuerySessionInformation 函数时要检索的会话信息的类型。

[out] ppBuffer

指向接收指向所请求信息的指针的变量的指针。 数据的格式和内容取决于 WTSInfoClass 参数中指定的信息类。 若要释放返回的缓冲区,请调用 WTSFreeMemory 函数。

[out] pBytesReturned

指向接收 ppBuffer中返回的数据大小(以字节为单位)的变量的指针。

返回值

如果函数成功,则返回值为非零值。

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

言论

若要在远程桌面服务运行时检索当前会话的会话 ID,请调用 WTSQuerySessionInformation 并为 SessionId 参数指定 WTS_CURRENT_SESSION,并为 WTSInfoClass 参数指定 WTSSessionId。 会话 ID 将在 ppBuffer 参数中返回。 如果远程桌面服务未运行,则调用 WTSQuerySessionInformation 失败。 在这种情况下,可以通过调用 ProcessIdToSessionId 函数来检索当前会话 ID。

若要确定应用程序是否在物理主机上运行,必须为 SessionId 参数指定 WTS_CURRENT_SESSION并将 WTSClientProtocolType 指定为 WTSInfoClass 参数。 如果 ppBuffer 为“0”,会话将附加到物理控制台。

注意

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

要求

要求 价值
最低支持的客户端 Windows Vista
支持的最低服务器 Windows Server 2008
目标平台 窗户
标头 wtsapi32.h
Wtsapi32.lib
DLL Wtsapi32.dll
API 集 ext-ms-win-session-wtsapi32-l1-1-0(在 Windows 8 中引入)

另请参阅

WTSCONFIGINFO

WTSINFOEX

WTS_CLIENT_ADDRESS

WTS_CLIENT_DISPLAY

WTS_CONNECTSTATE_CLASS

WTS_INFO_CLASS

WTS_SESSION_ADDRESS