设备提供程序

设备提供程序是计算机在每个系统启动时启动的已注册对象。 设备提供程序向设备主机注册和注销正在运行的设备,以响应某些事件。 这些设备是在系统启动时自动启动的设备。 出于安全原因,设备提供程序通常应作为 LocalService 而不是 LocalSystem 运行。

设备提供程序可用于暂时性设备。 设备提供程序还可用于将设备桥接到已轮询媒体。 例如,外围设备(如数字音乐播放器)通过串行端口连接到计算机。 若要将音乐播放器公开为基于 UPnP 的设备,需要设备控制对象和一组服务对象。 这些对象以串行命令的形式实现基于 UPnP 的音乐播放器操作。 但是,在注册这些对象之前,音乐播放器必须插入串行端口并可用于控制。

由于串行端口在连接设备时不提供显式通知机制,因此需要轮询代码。 此代码可以在设备提供程序对象、服务或独立应用程序中实现。 启动计算机时,设备主机实例化设备提供程序对象,然后调用其"开始"菜单方法。 当设备提供程序检测到音乐播放器设备的存在时,它会实例化相应的设备控制对象,并通过调用 IUPnPRegistrar::RegisterRunningDevice 来注册它。 此方法将设备发布并报出到基于 UPnP 的网络。

还可以通过实现轮询串行端口的服务来实现相同的功能。 但是,设备提供程序只需实现核心功能(轮询)即可简化操作,因为设备提供程序依赖于设备主机启动和停止它们。 使用设备提供程序比实现服务更简单。

在注册时,并在每次后续的系统启动时,计算机实例化设备提供程序对象,然后调用其 IUPnPDeviceProvider::"开始"菜单 方法,并向其传递注册期间指定的初始化字符串。

调用"开始"菜单方法后,设备提供程序执行任何必要的处理,如有必要,设备提供程序通过调用 IUPnPRegistrar::RegisterRunningDevice 注册设备,如向设备主机注册托管设备部分中所述。

关闭计算机时,设备主机调用 IUPnPDeviceProvider::Stop 方法以指示设备提供程序终止其操作。