spice client 和 spice server 通信机制(5)
时间:2025-07-08
时间:2025-07-08
责发起创建,并通过VDI接口将此对象传递给libspice。
RedsState中一个数据成员为Channel*channels,Server端通过此变量来维护一个Channel链表,所有Server端支持的Channel都需要通过reds_register_channel注册到此链表。除了InputChannle是在spice_server_init中注册的外(即:在CoreInterface初始化时注册的),其余Channel都是在Qemu进行虚拟设备初始化时,通过调用spice_server_add_interface函数注册VDI时注册的,列举如下:
//spice_server_init
inputs_init中注册:SPICE_CHANNEL_INPUTS
//spice_server_add_interface(SPICE_INTERFACE_QXL)
red_dispatcher_init中注册:SPICE_CHANNEL_DISPLAY、SPICE_CHANNEL_CURSOR//spice_server_add_interface(SPICE_INTERFACE_PLAYBACK)
snd_attach_playback中注册:SPICE_CHANNEL_PLAYBACK
//spice_server_add_interface(SPICE_INTERFACE_RECORD)
snd_attach_record中注册:SPICE_CHANNEL_RECORD
//spice_server_add_interface(SPICE_INTERFACE_NET_WIRE)
red_tunnel_attach中注册:SPICE_CHANNEL_TUNNEL
所谓注册Channel,就是初始化一个Channel对象,然后将其插入到RedsState的channels链表中供后续的访问处理。Channel结构定义如下:
typedefstructChannel{
structChannel*next;
上一篇:京津SCAD系统简介