有关使用英特尔UPNP的VirtualDirectory处理程序的任何示例/教程?

时间:2012-09-09 22:21:52

标签: windows vb.net directory intel upnp

我一直在使用英特尔的UPNP库在VB.NET项目中工作,虽然缺乏文档使得它很难(从字面上猜测我必须在每行代码中使用什么属性/方法)我已经能够根据我的意愿弯曲它,我有一个功能非常强大的应用程序,它在Windows上使用UPNP。

我的问题是,我现在希望能够将文件从设备主机传输到控制点。抨击谷歌的答案显示,英特尔的UPNP使用嵌入式Web服务器处理与UPNP相关的所有内容,我可以使用AddVirtualDirectory方法将自定义目录添加到我的设备。但随后,运气结束了。没有文档,没有例子,没有。

所以我的问题是:有谁知道如何使用它?我发现的只是该方法需要2个委托函数,声明为VirtualDirectoryHandler,但我不知道我应该怎么做这些。

感谢您的帮助。

莱斯特

1 个答案:

答案 0 :(得分:2)

因此要明确要求:控制点需要从设备中提取(下载)图像。设备无需访问(推送)到控制点。没有其他设备会尝试访问已存储在控制点上的图像。因此,只有设备需要实现ContentDirectory,控制点不需要。

我建议您从UPnP specs bundle MediaServer 文件夹中阅读 UPnP-av-ContentDirectory 文档(任何版本)。查找CreateObject,DeleteObject,ImportResource,ExportResource。如果我上面的假设是正确的,你实际上不需要它们,但是为了理解UPnP中文件传输的含义。我承认对英特尔UPnP没有任何了解,所以请遵循普通UPnP知识和随机全文搜索的猜测。

要启用对象下载,设备需要提供可浏览的媒体存储。基本上,您需要在设备上实现GET请求处理程序。 UPnP只不过是一个网络服务器的临时网络,加上一些多播和额外的标题。这就是“英特尔的UPNP使用嵌入式Web服务器”的原因。 任何UPnP设备都是网络服务器。 Intel UPnP已在MediaServerDevice.WebServer_OnHeaderReceiveSinkWebServer_OnPacketReceiveSink中包含VirtualDirectoryHandler的实现。您可以使用此MediaServerDevice.cs开箱即可实现ContentDirectory。在整个SDK中查看VirtualDirectoryHandler的用法,以了解如何使用它。

控制点下载程序需要执行AVTransport.Browse命令来查找要下载的图像的资源URL。英特尔的MediaBrowser.cs看起来很有希望。我建议您还阅读上面指出的文档的开头,以深入了解UPnP ContentDirectory的导航结构。如有疑问,请从英特尔的工具套件中运行DeviceSpy并手动查询您的设备。从ObjectID“0”开始。没有什么比查看原始XML DIDL响应更能帮助您理解ContentDirectory了。

一旦您的控制点知道资源URL,您只需通过HTTP GET下载它。由于控制点也是目标存储,因此不需要花哨的ImportObject。最后一部分在技术上根本不是关于UPnP的。