基于 UPnP 的设备由它们公开的服务控制。 UPnP 服务是 UPnP 体系结构中最小的可控制实体。 设备为它们执行的每个主要功能公开一个服务。 复杂设备通常由几个简单的服务和其他设备组成。
服务由一组状态变量和一组应用程序可以调用的操作组成,这些操作对这些状态变量进行操作。 在具有 UPnP 技术的控制点 API 中, 服务由公开IUPnPService 接口的服务对象表示。
服务类型定义特定服务支持的状态变量和操作。 例如,时钟服务的服务类型定义 GetTime 和 SetTime 操作,以及 时间 状态变量。
服务 ID 区分单个设备中的多种常见服务类型。 例如,一个闹钟中可以有两个时钟服务,一个用于常规时钟,另一个用于闹钟。 需要有一种方法来区分两个服务类型相同的服务。 服务 ID 提供标识服务类型的实例的唯一方法。 然后,此服务 ID 用于从 IUPnPServices 集合访问正确的服务,因为服务类型不是唯一标识符。 IUPnPService 接口还允许应用程序向服务对象注册回调函数。 当服务的状态变量的值发生更改时,服务对象会调用已注册的回调以通知应用程序更改。 UPnP 框架还会调用此回调,以便在服务实例不可用时通知应用程序。 服务可能由于各种原因而不可用,包括暂时性网络故障。
有关详情,请参阅以下主题: