使用COM UPnP lib注册设备/服务

时间:2013-02-01 10:12:35

标签: c# .net com upnp

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

对于这一发现,我们使用了http://managedupnp.codeplex.com/,效果非常好。

要注册,我们确实找到了一些库,但它们非常错误(intel开源库),我们现在想要使用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之后,我只获得了与以前相同的界面:/。我是在正确的道路上,我该怎么做?

1 个答案:

答案 0 :(得分:2)

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

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

注意:为此,请下载磁盘上的UPnP device registration sample,并将两个XML描述文件复制到当前执行路径。你还必须用progid实现一个COM对象(“My.Class”可以工作,因为RegisterDevice调用确实会实例化这个对象来构建一个标识符。你可以用.NET做到这一点。

此处提供了设备和服务说明格式:UPnP™ Device Architecture 1.1。在Windows世界中,此处指定了一些额外的限制:Creating a Device Description (Windows)