1

我正在尝试设置 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}

我尝试使用 Intels Device Spy 和 Intels Media Controller 推送到 iPush。当调用 Play 时,iPush 只会永远显示加载屏幕。请注意,iPush 可以与我测试过的所有 iphone 控制器完美配合。
在互联网上检查了这个错误后,我看到了关于 WMP 和 xBox 的类似问题,给出了同样的异常,但没有答案。

4

1 回答 1

1

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

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

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

于 2013-10-08T13:01:52.083 回答