我一直在VB.NET项目中使用Intel的UPNP库,尽管缺乏文档使工作变得很困难(从字面上猜测我在每一行代码中都必须使用哪种属性/方法),但我仍然能够随心所欲,我已经有了一个功能强大的应用程序,该应用程序在Windows上使用UPNP。

我的问题是,我现在希望能够将文件从设备主机传输到控制点。搜寻Google的答案表明,英特尔的UPNP使用嵌入式Web服务器来处理与UPNP相关的所有事情,我可以使用AddVirtualDirectory方法将自定义目录添加到设备中。但是,运气结束了。没有文档,没有示例,什么都没有。

所以我的问题是:有人知道如何使用它吗?我发现的是,该方法需要2个委托(delegate)函数,声明为VirtualDirectoryHandler,但我不知道该如何处理这些委托(delegate)函数。

谢谢你的帮助。

莱斯特

最佳答案

因此,要明确要求:控制点需要从设备提取(下载)图像。设备不需要访问(插入)控制点。没有其他设备会尝试访问已经存储在控制点上的图像。因此,仅设备需要实现ContentDirectory,而控制点则不需要。

我建议您从UPnP specs bundle MediaServer 文件夹中阅读 UPnP-av-ContentDirectory 文档(任何版本)。查找CreateObject,DeleteObject,ImportResource,ExportResource。如果我以上的假设是正确的,那么实际上您将不需要它们,而是为了了解UPnP中文件传输的含义。我承认我对Intel UPnP并不了解,因此我对UPnP的一般知识和随机全文搜索进行了猜测。

要启用对象下载,设备需要提供可浏览的媒体存储。基本上,您需要在设备上实现GET请求处理程序。 UPnP只是网络服务器的临时网络,其中包含一些多播和额外的 header 。这就是为什么“英特尔的UPNP使用嵌入式Web服务器”的原因。任何UPnP设备都是Web服务器。英特尔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根本无关。

关于windows - 关于使用英特尔UPNP的VirtualDirectory处理程序的任何示例/教程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12343479/

10-10 20:57