控制设备

基于 UPnP 的设备由它们公开的服务控制。 UPnP 服务是 UPnP 体系结构中最小的可控制实体。 设备为它们执行的每个主要功能公开一个服务。 复杂设备通常由几个简单的服务和其他设备组成。

服务由一组状态变量和一组应用程序可以调用的操作组成,这些操作对这些状态变量进行操作。 在具有 UPnP 技术的控制点 API 中, 服务由公开IUPnPService 接口的服务对象表示。

服务类型定义特定服务支持的状态变量和操作。 例如,时钟服务的服务类型定义 GetTimeSetTime 操作,以及 时间 状态变量。

服务 ID 区分单个设备中的多种常见服务类型。 例如,一个闹钟中可以有两个时钟服务,一个用于常规时钟,另一个用于闹钟。 需要有一种方法来区分两个服务类型相同的服务。 服务 ID 提供标识服务类型的实例的唯一方法。 然后,此服务 ID 用于从 IUPnPServices 集合访问正确的服务,因为服务类型不是唯一标识符。 IUPnPService 接口还允许应用程序向服务对象注册回调函数。 当服务的状态变量的值发生更改时,服务对象会调用已注册的回调以通知应用程序更改。 UPnP 框架还会调用此回调,以便在服务实例不可用时通知应用程序。 服务可能由于各种原因而不可用,包括暂时性网络故障。

有关详情,请参阅以下主题: