CHANNEL_OPEN_EVENT_FN回调函数 (cchannel.h)

远程桌面服务调用的应用程序定义的回调函数,以通知客户端 DLL 特定虚拟通道的事件。

PCHANNEL_OPEN_EVENT_FN类型定义指向此回调函数的指针。 VirtualChannelOpenEvent 是应用程序定义的或库定义的函数名称的占位符。

语法

CHANNEL_OPEN_EVENT_FN ChannelOpenEventFn;

VOID VCAPITYPE ChannelOpenEventFn(
  [in] DWORD openHandle,
  [in] UINT event,
  [in] LPVOID pData,
  [in] UINT32 dataLength,
  [in] UINT32 totalLength,
  [in] UINT32 dataFlags
)
{...}

参数

[in] openHandle

虚拟通道的句柄。 这是 VirtualChannelOpen 函数的 pOpenHandle 参数中返回的句柄。

[in] event

指示导致通知的事件。 此参数的取值可为下列值之一:

CHANNEL_EVENT_DATA_RECEIVED

虚拟通道从服务器端接收数据。 pData 是指向数据区块的指针。 dataLength 指示此区块的大小。 totalLength 指示服务器写入的数据的总大小。

CHANNEL_EVENT_WRITE_CANCELLED

由 VirtualChannelWrite 调用启动的写入操作已取消。 pData 是在 VirtualChannelWritepUserData 参数中指定的值。

当客户端会话断开连接时,将取消写入操作。 此通知使你能够释放与写入操作关联的任何内存。

CHANNEL_EVENT_WRITE_COMPLETE

VirtualChannelWrite 调用启动的写入操作已完成。 pData 是在 VirtualChannelWritepUserData 参数中指定的值。

[in] pData

指向事件的其他数据的指针。 数据类型取决于事件,如前面事件说明中所述。

如果CHANNEL_EVENT_DATA_RECEIVED事件,则服务器写入的数据将分解为不超过 CHANNEL_CHUNK_LENGTH 个字节区块。 dataFlags 参数指示当前区块是位于服务器写入的数据块的开头、中间还是末尾。

请注意,此参数的大小可以大于 dataLength 参数指定的值。 应用程序应仅读取 dataLength 指定的字节数。

[in] dataLength

指定 pData 缓冲区中数据的大小(以字节为单位)。

[in] totalLength

指定由单个写入操作写入虚拟通道服务器端的数据的总大小(以字节为单位)。

[in] dataFlags

提供有关 在 CHANNEL_EVENT_DATA_RECEIVED 事件中接收的数据区块的信息。 将设置以下位标志。

请注意,在比较以下列表中的值时,不应使用“==”运算符进行直接比较:请改用所述的比较方法。

CHANNEL_FLAG_FIRST

区块是单个写入操作写入的数据的开头。

比较此标志时,请使用按位比较。

CHANNEL_FLAG_LAST

区块是单个写入操作写入的数据的末尾。

比较此标志时,请使用按位比较。

CHANNEL_FLAG_MIDDLE

这是默认值。 区块位于由单个写入操作写入的数据块的中间。

请勿使用按位比较来直接比较此标志值。 请改用按位比较来确定标志值不是 CHANNEL_FLAG_FIRSTCHANNEL_FLAG_LAST。 这是通过使用以下比较来完成的: Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST)

CHANNEL_FLAG_ONLY

CHANNEL_FLAG_FIRST 值和CHANNEL_FLAG_LAST值组合在 起。 区块包含单个写入操作中的所有数据。

比较此标志时,请使用按位比较。

返回值

此函数没有返回值。

注解

客户端 DLL 使用 VirtualChannelOpen 函数为特定虚拟通道注册 VirtualChannelOpenEvent 函数。

可以将同一 VirtualChannelOpenEvent 函数用于多次调用 VirtualChannelOpen

在执行时,可以使用其他事件类型调用此函数。 例如,在处理 CHANNEL_EVENT_DATA_RECEIVED 事件时,可以使用 CHANNEL_EVENT_WRITE_COMPLETE 或 CHANNEL_EVENT_WRITE_CANCELLED调用它 。 请注意,此函数不会使用当前正在处理的事件类型调用。

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 cchannel.h

另请参阅

VirtualChannelOpen