WTSVirtualChannelQuery 函数 (wtsapi32.h)
返回有关指定虚拟通道的信息。
语法
BOOL WTSVirtualChannelQuery(
[in] HANDLE hChannelHandle,
WTS_VIRTUAL_CLASS unnamedParam2,
[out] PVOID *ppBuffer,
[out] DWORD *pBytesReturned
);
参数
[in] hChannelHandle
由 WTSVirtualChannelOpen 函数打开的虚拟通道的句柄。
unnamedParam2
[out] ppBuffer
指向接收所请求信息的缓冲区的指针。
[out] pBytesReturned
指向一个变量的指针,该变量接收 ppBuffer 参数中返回的字节数。
返回值
如果函数成功,则返回值为非零值。 使用 ppBuffer 参数中返回的值调用 WTSFreeMemory 函数,以释放 WTSVirtualChannelQuery 分配的临时内存。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
以下示例演示如何获取对可用于异步 I/O 的虚拟通道文件句柄的访问权限。 首先,代码使用对 WTSVirtualChannelOpen 函数的调用打开虚拟通道。 然后,代码调用 WTSVirtualChannelQuery 函数,指定 WTSVirtualFileHandle 虚拟类类型。 WTSVirtualChannelQuery 返回可用于执行异步 (重叠) 读取和写入操作的文件句柄。 最后,代码通过调用 WTSFreeMemory 函数释放 WTSVirtualChannelQuery 分配的内存,并通过调用 WTSVirtualChannelClose 函数关闭虚拟通道。
请注意,不应显式关闭通过调用 WTSVirtualChannelQuery 获取的文件句柄。 这是因为 WTSVirtualChannelClose 会关闭文件句柄。
PVOID vcFileHandlePtr = NULL;
DWORD len;
DWORD result = ERROR_SUCCESS;
HANDLE vcHandle = NULL;
HANDLE vcFileHandle = NULL;
//
// Open a virtual channel.
//
vcHandle = WTSVirtualChannelOpen(
WTS_CURRENT_SERVER_HANDLE, // Current TS Server
WTS_CURRENT_SESSION, // Current TS Session
(LPSTR) "TSTCHNL" // Channel name
);
if (vcHandle == NULL)
{
result = GetLastError();
}
//
// Gain access to the underlying file handle for
// asynchronous I/O.
//
if (result == ERROR_SUCCESS)
{
if (!WTSVirtualChannelQuery(
vcHandle,
WTSVirtualFileHandle,
&vcFileHandlePtr,
&len
))
{
result = GetLastError();
}
}
//
// Copy the data and
// free the buffer allocated by WTSVirtualChannelQuery.
//
if (result == ERROR_SUCCESS)
{
memcpy(&vcFileHandle, vcFileHandlePtr, sizeof(vcFileHandle));
WTSFreeMemory(vcFileHandlePtr);
//
// Use vcFileHandle for overlapped reads and writes here.
//
//.
//.
//.
}
//
// Call WTSVirtualChannelClose to close the virtual channel.
// Note: do not close the file handle.
//
if (vcHandle != NULL)
{
WTSVirtualChannelClose(vcHandle);
vcFileHandle = NULL;
}
有关重叠模式的详细信息,请参阅 同步和重叠输入和输出。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | wtsapi32.h |
Library | Wtsapi32.lib |
DLL | Wtsapi32.dll |
API 集 | 在 Windows 8) 中引入的 ext-ms-win-session-wtsapi32-l1-1-0 ( |