向 COM UPnP 库注册设备/服务

本文关键字:服务 注册 COM UPnP | 更新日期: 2023-09-27 17:56:53

对于应用程序,我们使用UPnP来发现和注册设备/服务(我们有服务器和客户端部分)。

对于发现,我们使用了效果很好的 http://managedupnp.codeplex.com/。

为了注册,我们确实找到了一些库,但它们非常有问题(英特尔开源库),我们现在想使用 COM 组件并在其上进行一个小的 c# 抽象。

我找到了一些文档:http://msdn.microsoft.com/en-us/library/windows/desktop/aa381805(v=vs.85).aspx但我遇到了一个问题。

这个库只包含接口,我看不出如何获取它的实例。而且我找不到任何示例/文档。

那么,有没有人知道如何使用此COM组件注册设备/服务?

谢谢!

编辑

我尝试生成一个 C# dll:

midl /target NT51 /tlb "C:'upnphost.tlb" "C:'Program Files (x86)'Microsoft SDKs'Windows'v7.0A'Include'upnphost.idl"
tlbimp upnphost.tlb

但是在导入这个生成的dll后,我只得到了与以前相同的界面:/。我走的路是否正确,我应该怎么做?

向 COM UPnP 库注册设备/服务

一旦你完成了midl + tlbimp,你可以编写这种代码,因为tlbimp应该创建一个类(UPnPRegistrarClass)和一个接口IUPnPRegisterr,底层COM类实现:

IUPnPRegistrar registrar = (IUPnPRegistrar)new UPnPRegistrarClass();
registrar.RegisterDevice(
    File.ReadAllText("DimmerDevice-Desc.xml"),
    "My.Class",
    "MyInitString",
    "MyContainerId",
    Path.GetFullPath("."),
    3200);

注意:为此,请在磁盘上下载 UPnP 设备注册示例,并将两个 XML 说明文件复制到当前执行路径。您还必须实现一个具有 progid ("My.Class") 的 COM 对象,因为 RegisterDevice 调用确实会实例化此对象以生成标识符。可以使用 .NET 执行此操作。

此处提供了设备和服务描述格式:UPnP™ 设备体系结构 1.1。在 Windows 世界中,此处指定了一些额外的限制:创建设备描述 (Windows)