DLNA 渲染器抛出 COMException (0x80040501)

本文关键字:COMException 0x80040501 DLNA | 更新日期: 2023-09-27 18:34:09

我正在尝试设置一个DLNA控制器来控制iPush渲染器设备。iPush Renderer设备正变得非常流行,因为许多iphone DLNA控制器甚至本机Airplay都可以很好地与之配合使用。它支持几乎所有的视频文件格式。 我的DLNA控制器适用于到目前为止我测试过的所有设备(WDTV,Intels Media Renderer,XBox360和许多其他iphone渲染器(,除了这个iPush渲染器设备。

当我使用 UPNPLid .dll [UPnP 1.0 类型库(控制点(] 时,我得到了包括 iPush 在内的所有渲染器

UPnPDeviceFinder finder = new UPnPDeviceFinder();
UPnPDevices devs = finder.FindByType(type, 0);

接下来,当我尝试遍历iPush的服务时,我得到"COMException(0x80040501(">

  foreach (var service in device.Services)  {//get the right service}

我尝试使用英特尔设备间谍和英特尔媒体控制器推送到 iPush。调用播放时,iPush 只会永久显示加载屏幕。请注意,iPush与我测试过的所有iPhone控制器配合使用都很好。
在互联网上检查此错误后,我看到了有关WMP和xBox的类似问题,给出了相同的异常,但没有答案。

DLNA 渲染器抛出 COMException (0x80040501)

0x80040501 UPNP_E_EVENT_SUBSCRIPTION_FAILED这表明渲染器不理解控制器的请求。不幸的是,这个特定的Windows API被严重记录不足。我建议使用Wireshark并从iAnything捕获初始握手,并与实现中的相同流量进行比较。通过捕获您的实现,您也应该看到来自iDevice的更多描述性错误。毕竟是肥皂。我不会惊讶地发现那些iDevices做了一些独家的事情。英特尔的UPnP套件是一个参考实现,所以如果这不起作用,那就有些可疑了。不过,如果我理解正确的话,英特尔在订阅和枚举方面没有问题,而是实际操作的后期阶段。但无论如何,Wireshark现在是你的朋友。使DLNA与硬件设备一起工作是数据包捕获的无休止的追求。

此链接也可能有所帮助:http://www.archivum.info/microsoft.public.upnp/2007-08/00009/Device-gt-get_Service-failed.html

免责声明:我不是Windows UPnP API的特别朋友,C#越少。我只是碰巧在C++中经常使用 UPnP。