WTSVirtualChannelRead 函数 (wtsapi32.h)
从虚拟通道的服务器端读取数据。
WTSVirtualChannelRead 读取虚拟通道客户端端的 VirtualChannelWrite 调用写入的数据。
语法
BOOL WTSVirtualChannelRead(
[in] HANDLE hChannelHandle,
[in] ULONG TimeOut,
[out] PCHAR Buffer,
[in] ULONG BufferSize,
[out] PULONG pBytesRead
);
参数
[in] hChannelHandle
由 WTSVirtualChannelOpen 函数打开的虚拟通道的句柄。
[in] TimeOut
指定超时(以毫秒为单位)。 如果 TimeOut 为零,则如果没有要读取的数据, WTSVirtualChannelRead 将立即返回。 如果 TimeOut 是 Winbase.h) 中定义的 INFINITE (,则函数将无限期等待,直到有数据要读取。
[out] Buffer
指向一个缓冲区的指针,该缓冲区接收从虚拟通道的服务器端读取的数据块。 服务器在单个 WTSVirtualChannelRead 调用中可以接收的最大数据量 为 CHANNEL_CHUNK_LENGTH 个字节。 如果客户端的 VirtualChannelWrite 调用写入更大的数据块,则服务器必须进行多个 WTSVirtualChannelRead 调用。
在某些情况下,远程桌面服务在 WTSVirtualChannelRead 函数读取的每个数据区块的开头放置CHANNEL_PDU_HEADER结构。 如果客户端 DLL 在调用 VirtualChannelInit 函数来初始化虚拟通道时设置CHANNEL_OPTION_SHOW_PROTOCOL选项,则会发生此情况。 如果通道是使用 IWTSVirtualChannel::Write 方法写入的动态虚拟通道,也会发生这种情况。 否则,缓冲区仅接收 VirtualChannelWrite 调用中写入的数据。
[in] BufferSize
指定 Buffer 的大小(以字节为单位)。 如果 Buffer 中的数据区块前面是 CHANNEL_PDU_HEADER 结构,则此参数的值应至少 CHANNEL_PDU_LENGTH。 否则,此参数的值应至少 CHANNEL_CHUNK_LENGTH。
[out] pBytesRead
指向接收读取的字节数的变量的指针。
返回值
如果函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | wtsapi32.h |
Library | Wtsapi32.lib |
DLL | Wtsapi32.Dll |