可以注册正在运行的设备或未运行的设备。
注册正在运行的设备
设备使用 IUPnPRegistrar 接口注册。 仅允许管理员注册正在运行的设备。 若要注册具有正在运行的设备控制对象,应用程序必须调用 IUPnPRegistrar::RegisterRunningDevice,并传递以下内容:
- 设备说明的文本。
- 指向设备控制对象的 IUnknown 指针。
- 传递给设备控制对象的 IUPnPDeviceControl::Initialize 方法的初始化字符串。
- 资源目录的位置。
- 设备的生存期。
- 设备 ID 参数 (OUT 参数) ,这是此调用的返回值;指向设备 ID 的指针在 C++ 中返回。
注册非正在运行的设备
默认情况下,仅允许管理员和交互式用户注册非正在运行的设备。 若要将设备注册到未运行的设备控制对象,应用程序使用 IUPnPRegistrar::RegisterDevice 方法。
若要以编程方式向非正在运行的设备控制对象注册设备,应用程序必须调用 IUPnPRegistrar::RegisterDevice 并传递以下参数:
- 设备说明的文本。
- 设备控制对象的 ProgID。
- 传递给设备控制对象的 IUPnPDeviceControl::Initialize 方法的初始化字符串。
- 容器 ID。
- 资源目录的位置。
- 设备的生存期。
- 设备 ID 参数 (OUT 参数) ,这是此调用的返回值;指向设备 ID 的指针在 C++ 中返回。
可以将非运行设备的注册配置为在关闭阶段) 期间取消发布设备 (跨系统启动保留。 因此,如果以这种方式配置设备,则每次启动计算机时都会发布并宣布设备。