virtualCHANNELINIT 回调函数 (cchannel.h)

初始化客户端 DLL 对远程桌面服务虚拟通道的访问。 客户端调用 VirtualChannelInit 来注册其虚拟通道的名称。

远程桌面服务在传递给 VirtualChannelEntry 入口点 的 CHANNEL_ENTRY_POINTS 结构中提供指向 VirtualChannelInit 函数的 指针。

语法

VIRTUALCHANNELINIT Virtualchannelinit;

UINT VCAPITYPE Virtualchannelinit(
  [in]      LPVOID *ppInitHandle,
  [in, out] PCHANNEL_DEF pChannel,
  [in]      INT channelCount,
  [in]      ULONG versionRequested,
  [in]      PCHANNEL_INIT_EVENT_FN pChannelInitEventProc
)
{...}

参数

[in] ppInitHandle

指向一个变量的指针,该变量接收标识客户端连接的句柄。 使用此句柄在后续调用 VirtualChannelOpen 函数时标识客户端。

[in, out] pChannel

指向CHANNEL_DEF结构的数组 指针。 每个结构都包含客户端 DLL 将打开的虚拟通道的名称和初始化选项。 请注意, VirtualChannelInit 调用不会打开这些虚拟通道;它只保留供此应用程序使用的名称。

[in] channelCount

指定 pChannel 数组中的条目数。

[in] versionRequested

指定虚拟通道支持级别。 将此参数设置为 VIRTUAL_CHANNEL_VERSION_WIN2000

[in] pChannelInitEventProc

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

返回值

如果函数成功,则返回值 CHANNEL_RC_OK

如果发生错误,该函数将返回以下值之一。

注解

只能从 VirtualChannelEntry 函数调用 VirtualChannelInit 函数。 任何其他时间对 VirtualChannelInit 的调用都失败。

当 VirtualChannelInit 成功返回时,远程桌面服务已注册请求的通道。 但是,远程桌面服务可能尚未完成其他初始化。 完成所有初始化后,远程桌面服务会使用 CHANNEL_EVENT_INITIALIZED 事件调用 VirtualChannelInitEvent 回调函数。

在调用此函数之前,不应假设可用虚拟通道的数量,因为系统和其他插件可能具有保留的虚拟通道。 因此,调用此函数后,应始终检查CHANNEL_RC_TOO_MANY_CHANNELS返回代码。

当 VirtualChannelInit 返回时,如果通道已成功初始化,则每个CHANNEL_DEF结构的 options 成员包括CHANNEL_OPTION_INITIALIZED

每个客户端会话的最大通道数 CHANNEL_MAX_COUNT

要求

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

另请参阅

CHANNEL_DEF

VirtualChannelEntry

VirtualChannelInitEvent